xslt:试图理解的条件内部值

xslt:试图理解的条件内部值,xslt,Xslt,我只希望霍拉出现: <?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! </greetin

我只希望霍拉出现:

<?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>

导致问题的不是条件,而是您的语句正在选择属性,因此
的xsl:value将输出属性(但仅当值大于1时)

您需要做的是将条件移动到
xsl:apply templates
,然后执行
以获取“Hola”值


<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>