2016-04-26 27 views
1

の兄弟の前の属性に基づいて選択する:私のXSLTでXSLT 1.0:私のようなベースのXMLファイル持っている現在の()ノード

<base> 
    ... 
    <s l="something" /> 
    <s l="somethingelse" /> 
    <s> 
    ... 
</base> 

を、私は別のファイルにプルする各<s>document()関数を使用しますベースファイルに<s>

<otherbase> 
    ... 
    <r l="something" /> 
    <r l="somethingelse" /> 
    <r l="evenmore" /> 
    ... 
</otherbase> 

、私はその@l任意のpreceding-sibling::*/@l番目の一致しないすべての<r> Sを選択しようとしています:のような構造現在の<s>。このように無属性と<s>第三のために、それは<r l="evenmore" />などにマッチするよう

何か:私は、私は信じてい<r>属性内のマッチングされたが、私はcurrent()の先行兄弟が必要な場合

<xsl:for-each select="document('mydoc.xml')//r[@l != preceding-sibling::*/@l]"> 
    ... 
</xsl:for-each> 

が働くだろう...私は構文を理解することができませんでした。

私の環境には残念ながら、xslt 1.0でスタックされたプロセッサはありません。

+0

あなたの質問はパターンマッチングとは関係がないので、タイトルを変更しました。 –

答えて

1

述語内の現在のsノードを参照する場合は、current()関数を使用する必要があります。試してみてください:

select="document('mydoc.xml')//r[not(@l = current()/preceding-sibling::s/@l)]" 

も注意$a != $bnot($a = $b)の違い。

関連する問題