Questo è il mio documento XML:posso usare la funzione current() in XPath, al di fuori di XSLT?
<root>
<bad>
<id>13</id>
<id>27</id>
</bad>
<books>
<book id='5'/>
<book id='7'/>
<book id='13'/>
</books>
</root>
Ora sto cercando di selezionare tutti i libri che non sono "cattivi":
/root/books/book[not(/root/bad/id[[email protected]()/@id])]
Questo non funziona. Sto ricevendo tutti i libri, mentre il libro n. 13 dovrebbe essere escluso. Non è XSLT. È solo una richiesta XPath (io sono con Java). Cosa c'è che non va?
Si noti che anche se current() ha funzionato, e anche se si è rimosso il falso "@", si darebbe la risposta sbagliata. In XSLT current() si riferisce sempre all'elemento di contesto per l'espressione XPath nel suo insieme, che in questo caso è (probabilmente) il nodo del documento, mentre si sta cercando l'elemento di contesto "un livello su", cioè, il libro corrente. –