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