xslt:试图理解条件内部值

时间:2017-04-12 13:00:15

标签: xslt

我期待只有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>

1 个答案:

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