2016-04-26 55 views
1

我有象鹼XML文件的屬性:XSLT 1.0:基於電流()節點的前述同級

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

以我XSLT,我使用每個<s>document()函數在另一個文件中拉結構類似:

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

在基本文件<s>,我想選擇所有<r>(胡)的@l不匹配日的任何preceding-sibling::*/@l電流<s>。因此,對於第三<s>沒有屬性,它會匹配<r l="evenmore" />

是這樣的:如果我是<r>屬性,我相信內匹配

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

會的工作,但我需要的current()前面的兄弟姐妹......我一直無法弄清楚語法。

不幸的是,我的環境中沒有2.0處理器,卡在xslt 1.0中。

+0

我改變了你的標題,因爲你的問題與模式匹配無關。 –

回答

1

當您想要引用謂詞中的當前s節點時,需要使用current()函數。嘗試:

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

還要注意$a != $bnot($a = $b)之間的差異。