Voor een onderzoek ben ik bezig om alle axes stappen om te schrijven zodat alleen nog gebruik gemaakt wordt van de ancestor, descendant en self axis. Dit om te zorgen dat de queries minder afhankelijk zijn van de boomstructuur en op deze manier betere acces path independence te krijgen.
The parent en child step zijn om te schrijven echter bij de following, following-sibling, preceeding en preceeding-sibling stuit ik op problemen.
Het volgende is het probleem, als we in een node zitten, stel node n, en we willen bijvoorbeeld de preceeding-sibling nodes hebben dan komt het erop neer dat we van de parent van n alle descendant nodes pakken, en de nodes eruit filteren waarvan de parent node niet gelijk is aan de parent van n. Dit is geen probleem, de laatste stap die nodig is om te controleren of we niet de node n en de following-sibling nodes erbij hebben is te controleren of de positie van de descendants nodes kleiner is dan die van node n. Hier treed het probleem op. De positie van de context node is op te vragen maar hoe vraag ik de positie van de node n op? Onderstaande regel maakt het misschien iets duidelijker:
In dit geval zou op de plek van p.position() op een of andere manier de positie van de node n moeten komen. De position functie kan niet gebruikt worden aangezien die alleen voor de context node beschikbaar is. Weet iemand een oplossing voor dit probleem of zitten we met dit onderzoek in een dode hoek?
The parent en child step zijn om te schrijven echter bij de following, following-sibling, preceeding en preceeding-sibling stuit ik op problemen.
Het volgende is het probleem, als we in een node zitten, stel node n, en we willen bijvoorbeeld de preceeding-sibling nodes hebben dan komt het erop neer dat we van de parent van n alle descendant nodes pakken, en de nodes eruit filteren waarvan de parent node niet gelijk is aan de parent van n. Dit is geen probleem, de laatste stap die nodig is om te controleren of we niet de node n en de following-sibling nodes erbij hebben is te controleren of de positie van de descendants nodes kleiner is dan die van node n. Hier treed het probleem op. De positie van de context node is op te vragen maar hoe vraag ik de positie van de node n op? Onderstaande regel maakt het misschien iets duidelijker:
code:
1
2
| Let n be the node self selected by p and p be a access path only using descendant, ancestor and self axes p/ancestor::*[1]/descendant::*[(self::node()/ancestor::*[1] = p/ancestor::*/self::node()) and (position() < p.position())] |
In dit geval zou op de plek van p.position() op een of andere manier de positie van de node n moeten komen. De position functie kan niet gebruikt worden aangezien die alleen voor de context node beschikbaar is. Weet iemand een oplossing voor dit probleem of zitten we met dit onderzoek in een dode hoek?