循环不同的价值观

joh*_*kar 6 xslt xslt-2.0

给定一个使用distinct-values()函数返回不同状态列表的变量,是否有办法在for-each循环中对变量进行标记化?

<States>
<State>AL</State>
<State>AL</State>
<State>NM</State>
</States>
Run Code Online (Sandbox Code Playgroud)

以下变量返回AL和NM,但我不能使用for-each迭代它.有没有解决的办法?

<xsl:variable name="FormStates" select="distinct-values(States/State)"/>
  <xsl:for-each select="$FormStates">
Run Code Online (Sandbox Code Playgroud)

XSLT 2.0好的.

Per*_*r T 5

distinct-values()函数返回一系列您应该能够迭代的值.结果是说"标记化".

fn:distinct-values('AL', 'AL', 'NL')返回序列('AL', 'NL').

如果输出变量,xsl:value-of它将返回字符串"AL NL",因为默认序列分隔符xsl:value-of是单个空格字符.这是您可以使用@separator属性更改的内容:

输入

<?xml version="1.0" encoding="UTF-8"?>
<States>
  <State>AL</State>
  <State>AL</State>
  <State>NM</State>
</States>
Run Code Online (Sandbox Code Playgroud)

XSLT

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
  <xsl:template match="/">
    <xsl:variable name="FormStates" select="distinct-values(States/State)"/>
    <xsl:comment>xsl:value-of</xsl:comment>
    <xsl:value-of select="$FormStates" separator=":"/>
    <xsl:comment>xsl:for-each</xsl:comment>
    <xsl:for-each select="$FormStates">
      <xsl:value-of select="."/>
      <xsl:text>:</xsl:text>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

产量

<?xml version="1.0" encoding="UTF-8"?>
<!--xsl:value-of-->
AL:NM
<!--xsl:for-each-->
AL:NM:
Run Code Online (Sandbox Code Playgroud)