<xsl:template match="country[@name]">
<xsl:value-of select="."/>
<xsl:if test="country=[*stan"]" >
</xsl:if> </xsl:template>
有人可以告诉我这个查询哪里出错了。我应该只返回带有“stan”的国家的名称(土库曼斯坦等)。XML 数据包括国家/地区、名称、人口。
<xsl:template match="country[@name]">
<xsl:value-of select="."/>
<xsl:if test="country=[*stan"]" >
</xsl:if> </xsl:template>
有人可以告诉我这个查询哪里出错了。我应该只返回带有“stan”的国家的名称(土库曼斯坦等)。XML 数据包括国家/地区、名称、人口。
您的代码中有两处错误:
if 语句上的 XPath 表达式,这是错误的,因为它不遵循 XPath 的语法。如果要在 if 语句中检查国家/地区名称是否包含 stan,则 XPath 表达式应为:
country[contains(@name, 'stan')]
即使进行了更正,样式表也不会匹配其中包含“stan”的国家/地区名称,因为匹配表达式匹配具有名称属性 (country[@name]) 的所有国家/地区,然后您使用 value-of 输出国家/地区名称模板内。
修复代码的一种解决方案是将 value-of 元素更改为 if 元素,并将 XPath 表达式从我之前指定的表达式中更改。
但是,在输入模板之前匹配条件要简单得多。所以解决方案是:
<xsl:template match="country[contains(@name, 'stan')]">
<xsl:value-of select="@name" />
</xsl:template>