【发布时间】:2013-08-11 21:36:45
【问题描述】:
这不是唯一的问题,但我无法从其他解决方案中找出我的代码错误的原因。这是一个作业,我已经弄清楚了大部分,但我不明白为什么条件永远不会评估为真。如果我编造了一个虚拟子句,例如 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 文档正在处理的文件中当前节点的名称?
谢谢!
【问题讨论】: