2017-02-21 111 views
0

在一個XML文件,我有一些代碼的部分看起來像這樣:XPath到達所有等於當前節點的節點?

<index indexName="Mots-matière"> 
    <term anchor="d0e7624">apprentissage automatique</term> 
</index> 

因此,舉例來說,有許多<term>apprentissage automatique</term>元素,其我嘗試蒐集@anchor屬性。

選擇所有等於當前節點的節點的好方法是什麼?

我心裏有這樣的事情,但我錯過了什麼:

<xsl:for-each select="current() = //term"> 
    <xsl:value-of select="term/@anchor"/> 
</xsl:for-each> 

我怎麼能這樣做?

回答

1

我認爲你正在尋找的語法是這樣的..你

<xsl:for-each select="//term[. = current()]"> 
     <xsl:value-of select="@anchor"/> 
</xsl:for-each> 

注意如何將只需要選擇在這種情況下@anchor屬性,因爲你會在xsl:for-each內被定位在term元素。

當然,這隻有當你的當前節點是你想要的值時纔有效。可以使用xsl:key。在樣式表的頂部定義的關鍵是這樣的...

<xsl:key name="terms" match="term" use="." /> 

然後你就可以做到這一點...

<xsl:for-each select="key('terms, current())"> 
     <xsl:value-of select="@anchor"/> 
</xsl:for-each> 
+0

非常感謝你。 –

+0

非常感謝。不幸的是我犯了一個錯誤,當前節點不是我想要的值。我將從這個語法開始構建一個好的語法。 –

相關問題