Complex xPath query
xml, xpath, xslt, xslt-1.0
Solution
This works even in XPath 1.0:
//report//autore[text()=../../following-sibling::report//autore/text()]
It selects all `autore` nodes that have text content equal to any `autore` node in any of the following `report` nodes, too.
Or, to keep it short, even this should work if there's nothing really tricky in your real xml file:
//autore[text()=../../following-sibling::*//autore/text()]
EDIT: Working by accident. Please see the comments below.
Problem
I need to write a quite complex XSLT 1.0 query. Given the following XML file, I need a query to get the set of authors who are in multiple reports. (for example Antonio Rossi, because he's both on report 1 and 2). ``` <reports> <report id="01"> <titolo> I venti del Nord </titolo> <autori> <autore> Antonio Rossi </autore> <autore> Mario Verdi </autore> </autori> <versioni> <versione numero="1.0"> <data> 13-08-1980 </data> <autore> Mario Verdi </autore> <commento> versione iniziale </commento> </versione> <versione numero="2.0"> <data> 14-08-1981 </data> <autore> Antonio Rossi </autore> <commento> poche modifiche </commento> </versione> </versioni> </report> <report id="02"> <titolo> Le pioggie del Nord </titolo> <autori> <autore> Antonio Rossi </autore> <autore> Luca Bianchi </autore> </autori> <versioni> <versione numero="1.0"> <data> 13-12-1991 </data> <autore> Antonio Rossi </autore> <commento> versione iniziale </commento> </versione> <versione numero="2.0"> <data> 14-08-1992 </data> <autore> Antonio Rossi </autore> <commento> modifiche al cap. 1 </commento> </versione> <versione numero="3.0"> <data> 18-08-1992 </data> <autore> Antonio Rossi </autore> <commento> Aggiunta intro. </commento> </versione> <versione numero="4.0"> <data> 13-01-1992 </data> <autore> Luca Bianchi </autore> <commento> Modifiche sostanziali. </commento> </versione> </versioni> </report> <report id="03"> <titolo> Precipitazioni nevose </titolo> <autori> <autore> Fabio Verdi </autore> <autore> Luca Bianchi </autore> </autori> <versioni> <versione numero="1.0"> <data> 11-01-1992 </data> <autore> Fabio Verdi </autore> <commento> versione iniziale </commento> </versione> <versione numero="2.0"> <data> 13-01-1992 </data> <autore> Luca Bianchi </autore> <commento> Aggiornato indice </commento> </versione> </versioni> </report> </reports> ```