PDA

View Full Version : [XSLT] ricorsione (purtroppo infinita...)


Gremo
05-03-2008, 14:25
Ciao!!!
ho una struttura XML di questo tipo:


<object id="o1">
<refs>
<ref id="o2" />
</refs>
</object>
<object id="o2">
<refs>
<ref id="o1" />
</refs>
</object>
<object id="o3">
<refs>
<ref id="o2" />
</refs>
</object>


un oggetto può avere zero o più riferimenti ad altri oggetti. Può riferire anche se stesso.
L'idea è quella di una trasformazione in SQL, inserendo prima gli oggetti "riferiti" e poi quelli che "riferiscono" (tabella con relazione 1 a molti)
Ho pensato quindi ad un template ricorsivo, di questo tipo:



<xsl:template name="insertObject">

<!-- se ha dei riferimenti, chiama ancora questo template -->

<!-- se non ha riferimenti, chiama questo template sul fratello destro-->

</xsl:template>



Problemi
- in presenza di un ciclo o1 -> o2 -> o1 la ricorsione è infinita: come faccio a dire "se incontri un nodo che fa già parte del ciclo devi terminare"? Non c'è un modo di implementare una lista di nodi già processati?
- un riferimento a se stesso lo escluderei facilmente (ref/@id =! @id)