0

如果值等于某个值,您能否在 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>

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

4

1 回答 1

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>
于 2013-09-24T16:44:25.863 回答