nautiLus`
Erfahrenes Mitglied
Hallo, ich habe ein Problem bei einem xpath query...
Folgende XML Datenstruktur sei mir gegeben:
Wie kann ich nun z.B. die Namen aller Personen filtern, welche jemals auf Konferenzen in Wien einen Vortrag zum Thema "Datenbanksysteme" gehalten haben.
Ich hab es mal in xquery gemacht, was etwa so aussieht:
Nur der Ansatz für xpath fehlt mir joins oder was ähnliches durchzuführen wie in xquery.
Habe mal sowas zusammengewürfelt (ist aber irgendwie kein join):
konferenzverwaltung/konferenz[ort='Wien']/../vortrag[titel='Datenbanksysteme']/../person/name/text()
Hat wer einen Ansatz?
Folgende XML Datenstruktur sei mir gegeben:
Code:
<konferenzverwaltung>
<person pid="p1"><name>Sebastian</name></person>
<person pid="p2"><name>Christian</name></person>
<person pid="p3"><name>Maria</name></person>
<person pid="p4"><name>Georg</name></person>
<person pid="p5"><name>Sabine</name></person>
<konferenz kid="k1">
<name>Konferenz Nr. 1</name>
<datum>10.10.2005</datum>
<ort>Graz</ort>
</konferenz>
<konferenz kid="k2">
<name>Konferenz Nr. 2</name>
<datum>10.10.2005</datum>
<ort>Wien</ort>
</konferenz>
<konferenz kid="k3">
<name>Konferenz Nr. 3</name>
<datum>10.10.2005</datum>
<ort>Wien</ort>
</konferenz>
<vortrag vid="v1"><titel>Datenbanksysteme</titel></vortrag>
<vortrag vid="v2"><titel>Verteilte Systeme</titel></vortrag>
<vortrag vid="v3"><titel>Mathematik 1</titel></vortrag>
<teilnahme pid="p1" kid="k1" vid="v1" />
<teilnahme pid="p2" kid="k2" vid="v2" />
<teilnahme pid="p3" kid="k2" vid="v1" />
<teilnahme pid="p4" kid="k2" vid="v1" />
<teilnahme pid="p5" kid="k2" vid="v1" />
<teilnahme pid="p5" kid="k3" vid="v3" />
<teilnahme pid="p3" kid="k2" vid="v1" />
</konferenzverwaltung>
Wie kann ich nun z.B. die Namen aller Personen filtern, welche jemals auf Konferenzen in Wien einen Vortrag zum Thema "Datenbanksysteme" gehalten haben.
Ich hab es mal in xquery gemacht, was etwa so aussieht:
Code:
for $p in /konferenzverwaltung/person,
$k in /konferenzverwaltung/konferenz,
$v in /konferenzverwaltung/vortrag,
$t in /konferenzverwaltung/teilnahme
where $t/@pid = $p/@pid and $t/@kid = $k/@kid and $t/@vid = $v/@vid
and $v/titel = "Datenbanksysteme" and $k/ort = "Wien"
return string($p/name)
Nur der Ansatz für xpath fehlt mir joins oder was ähnliches durchzuführen wie in xquery.
Habe mal sowas zusammengewürfelt (ist aber irgendwie kein join):
konferenzverwaltung/konferenz[ort='Wien']/../vortrag[titel='Datenbanksysteme']/../person/name/text()
Hat wer einen Ansatz?