2011-02-11 75 views
2

使用XPath 1.0,而不是使用xpath獲取所有本地名稱的節點集

<xsl:for-each select="*"> 
    <xsl:variable name="varName" select="local-name()" /> 
    <!-- Do stuff with $varName --> 
</xsl:for-each> 

我真的想做類似

<xsl:for-each select="*/local-name()"> 
    <!-- Do stuff with . ('.' as in the current value) --> 
</xsl:for-each> 

<xsl:for-each select="local-name(*)"> 
    <!-- Do stuff with . ('.' as in the current value) --> 
</xsl:for-each> 

這樣做有什麼辦法嗎?

回答

2

節點集包含節點。它不包含名稱。因此你的問題包含證明它不能完成的矛盾。

XPath 2.0數據模型使得完全有可能將名稱集合作爲值進行管理。但是,XPath 1.0只允許節點集或單例字符串,布爾值和數字。

+0

謝謝,不知道名字!=節點,我認爲這個名字只是另一個屬性,但我想不是這種情況。那麼好吧,是否可以將字符串轉換爲節點集? (如果這應該是一個新問題,只要說出這個詞) – dvdvorle

+0

Mr Happy,用XSLT 2.0中的'處理一串字符串帶有元素名稱),所以'for-each'中的'.'將是一個原子字符串值。但這對於XSLT 1.0來說是不可能的。我不確定你在問什麼「是否可以將字符串轉換爲節點集」,這與您當前的問題有什麼關係? –

+0

@馬丁Honnen,以及我在想可能有一些'ConvertToNode()'函數,我可以用來將字符串序列轉換爲一個節點序列,這樣我仍然可以解決我的問題......但現在,我想一想,這意味着會存在一個假設的函數ConvertToNode,它將有一串字符串作爲參數,這在XPath 1.0中並不存在。有點像catch-22,所以不可能。那麼我必須找到另一種方式。謝謝你的時間。 – dvdvorle

相關問題