如果变量等于,则在xslt中设置位置

时间:2013-09-24 12:55:29

标签: xslt

如果值等于某个值,你可以在for-each循环中设置特定项的位置吗?我尝试了以下示例,但它不起作用:

<xsl:choose>
        <xsl:when test='name = "Dining"'>
            <xsl:value-of select="position()=1"/>
        </xsl:when>
        <xsl:otherwise>
            [Normal position]
        </xsl:otherwise>
  </xsl:choose>

餐饮将始终显示在列表顶部,然后列表将正常呈现。

1 个答案:

答案 0 :(得分:1)

您还没有提供输入XML的示例,或者显示您想要用它做什么,所以我猜一点。你可以尝试这样的事情:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="root">
    <xsl:copy>
      <xsl:apply-templates select="Dining"/>
      <xsl:apply-templates select="*[not(self::Dining)]"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

应用于以下XML时:

<root>
  <Bathroom />
  <Dining />
  <Kitchen />
  <Bedroom />
</root>

它产生:

<root>
  <Dining />
  <Bathroom />
  <Kitchen />
  <Bedroom />
</root>