我期待只有Hola出现:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="helloworld.xslt"?>
<greetings>
<greeting id="1">
Hello World!
</greeting>
<greeting id="2">
Hola!
</greeting>
</greetings>
然而,两个问候都会出现。
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html"/>
<xsl:template match="greetings">
<xsl:apply-templates select="greeting"/>
</xsl:template>
<xsl:template match="greeting">
<html>
<body>
<h1>
<xsl:value-of select="@id[.>1]"/>
</h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
导致问题的条件不是那么多,而是你的语句选择属性的事实,因此xsl:value-of
将输出属性(但仅当值大于1时)< / p>
您需要做的是将条件移至xsl:apply-templates
,然后执行<xsl:value-of select="." />
以获取您的&#34; Hola&#34;值
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="greetings">
<xsl:apply-templates select="greeting[@id > 1]"/>
</xsl:template>
<xsl:template match="greeting">
<html>
<body>
<h1>
<xsl:value-of select="."/>
</h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>