我试图选择xsl中xhtml文档中的所有链接。一些锚标签中有名称空间声明xmlns="http://www.w3.org/1999/xhtml"
。这些未被选中。例如与该XML文档:用xmlns选择一个节点?
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="xsl.xsl"?>
<root>
<item>
this iz sum text and it haz sum <a xmlns="http://www.w3.org/1999/xhtml" href="http://cheezburger.com/">linx</a> in it.
Teh linx haz piks of <a href="http://icanhascheezburger.com/">kittehs</a> in dem.
</item>
</root>
这XSL:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<dl>
<xsl:for-each select="//root/item/a">
<dd><xsl:value-of select="."/></dd>
<dt><xsl:value-of select="@href"/></dt>
</xsl:for-each>
</dl>
</html>
</xsl:template>
</xsl:stylesheet>
只有第二链接被选择。有人可以解释这里发生了什么,以及我可以如何解决它?
此作品 - 谢谢。这里的问题是不是所有的链接都用名字空间标记。 – 2010-10-04 20:37:07
在样式表标签('xmlns =“http://www.w3.org/1999/xhtml”')中将默认命名空间设置为正确的命名空间应该可以使'/ root/item/a'选择所有项目if其他'匿名'节点也应该在该名称空间中。 – Wrikken 2010-10-04 20:39:31
最后一个名称空间声明对输出有用,不适用于select。对于这个问题,XSLT 2.0有一个'xpath-default-namespace'属性。 – 2010-10-04 20:42:45