我正在尝试获取简单的html文档的标题来构建站点地图。但总是返回空值。我调试它并发现文档(内容)返回文档节点。它看起来像这样。alt text http://www.freeimagehosting.net/uploads/f7caf412dc.png但我无法访问文档(内容)/ html或类似的东西。请帮忙!
答案 0 :(得分: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
答案 1 :(得分: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"/>
的表达式。
{{1}}