这不是唯一的问题,但我无法从其他解决方案中找出我的代码错误的原因。这是一个作业,我已经弄清楚了大部分,但我不明白为什么这个条件永远不会评估为真。如果我组成一个虚拟子句,例如,contains('a', 'a')
甚至1=1
然后我可以看到正确的输出(但是显然没有被条件过滤)。
另外,如果我只是尝试输出当前元素的名称,则<xsl:value-of select="name(.)" />
什么都不输出。显然,有些东西我没有到达这里,但它正在躲避我。有什么线索吗?
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" indent="yes" encoding="ISO-8859-1"/>
<xsl:template match="/">
<xsl:apply-templates select="node()" />
</xsl:template>
<xsl:template match=".">
<xsl:if test="contains(name(.),'a')">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="child::node()" />
</xsl:copy>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
在这种情况下,XML 模式根本不重要。我知道有些元素包含字母 a (包括根元素)。
还有为什么当我打电话时<xsl:value-of select="name(node())" />
我得到 XSLT 文件节点的名称(“xsl:stylesheet”),而不是我的 XSLT 文档正在处理的文件中当前节点的名称?
谢谢 !