2017-03-21 11 views
0

は、このXML(gzip圧縮されたXMLファイルではAdobe Premiereの.prprojファイルの一部を)考えてみましょう:XML XPath:別のアイテムの属性値によって識別されるアイテムを参照する方法は?

<PremiereData> <!-- root object --> 
    <Sequence> 
     <MarkerOwner> 
      <Markers ObjectRef="93"/> 
     </MarkerOwner> 
    ... 
    <Markers ObjectID="93"> 

私はSequence/MarkerOwner/MarkersObjectRefに従うことにより、オブジェクトID 93とMarkers要素に到達するのが好きです。

1つのXpathでこれを行うことができますか、またはその値を使用して2番目のパスを作成するためにObjectRefの値を最初に取得するコードを記述する必要がありますか?

答えて

0

次のXPathがObjectID属性は/PremiereData/Sequence/MarkerOwner/MarkersObjectRefと一致するMarkers要素を返す必要があります。それは、/で始まるため、述語内/PremiereDataは、ルート要素を参照すること

//Markers[@ObjectID=/PremiereData/Sequence/MarkerOwner/Markers/@ObjectRef] 

demo

お知らせ(これを./PremiereDataまたはと対照的にコンテキスト要素の子を検索するPremiereDataという名前のMarkers)。

+0

デモ用エバリュエーターへのポインタもありがとう。 Pythonで私自身のことを書いていた(そしてXojoが最初にクラッシュする)が、このウェブサイトはさらに良い。 –

+0

ありがとうございます。 [私はそれを書いた](https://github.com/har07/XPathEval)C#で、SaxonをXMLエンジンとして使用する:) – har07

関連する問題