Frage

Sagen, dass ich die folgende XML haben ...

<root>
  <base>
    <tent key="1" color="red"/>
    <tent key="2" color="yellow"/>
    <tent key="3" color="blue"/>
  </base>
  <bucket>
    <tent key="1"/>
    <tent key="3"/>
  </bucket>
</root>

... was wäre der XPath, dass gibt, dass die „Eimer“ enthalten „Rot“ und „Blau“?

War es hilfreich?

Lösung

Wenn Sie XSLT verwenden, würde ich empfehlen, einen Schlüssel einrichten:

<xsl:key name="tents" match="base/tent" use="@key" />

Sie können dann die <tent> innerhalb <base> mit einem bestimmten key erhalten mit

key('tents', $id)

Dann können Sie tun

key('tents', /root/bucket/tent/@key)/@color

oder, wenn $bucket ist ein besonderes <bucket> Element,

key('tents', $bucket/tent/@key)/@color

Andere Tipps

Ich denke, das funktioniert:

/root/base/tent[/root/bucket/tent/@key = @key ]/@color

Es ist nicht schön. Wie bei jeder Lookup, müssen Sie Strom () verwenden:

/ root / bucket [/ root / base / Zelt [@key = current () / Zelt / @ key] / @ color = 'blau' oder / root / base / Zelt [@key = current () / Zelt / @ key] / @ color = 'rot']

JeniT hat die entsprechende Antwort / code hier aufgeführt. Sie müssen den Schlüssel erstellen, bevor Sie das XML-Dokument gehen, dann Streichhölzer führen gegen diese Schlüssel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top