2010-03-23 39 views

回答

2

更多的代碼會有所幫助,但在這種情況下,第一個責任是命名空間。我可以看到您的節點位於XHTML名稱空間中,但您在XPath中不使用任何名稱空間前綴。

必須聲明命名空間前綴在樣式表是這樣的:

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:h="http://www.w3.org/1999/xhtml" 
> 

然後使用這個前綴你的XPath這樣的:

document(content)/h:html 
+0

我應該怎麼做才能解決這個問題? – Artic 2010-03-23 08:11:45

+0

非常感謝!!!! – Artic 2010-03-23 08:40:24

1

如果你的XML元素的命名空間,即使它是文檔的默認命名空間,您也必須在任何XPath表達式和模板匹配規則中使用命名空間前綴。這是命名空間的URI而不是重要的前綴。請注意,屬性將不在默認的命名空間中,如果它們的名稱具有前綴,則它們只具有名稱空間。

此外,包含//的XPath表達式通常效率低於沒有的表達式。

<xsl:stylesheet version="1.0" 
      xmlns:h="http://www.w3.org/1999/xhtml" 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 


<!-- and elsewhere in your stylesheet --> 
<xsl:value-of select="document(content)/h:html/h:head/h:title"/> 
+0

我怎麼知道要使用哪個命名空間? – Artic 2010-03-23 08:18:45

相關問題