xslt - 循环不同的值

标签 xslt xslt-2.0

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

<States>
<State>AL</State>
<State>AL</State>
<State>NM</State>
</States>

以下变量返回 AL 和 NM,但我无法使用 for-each 对其进行迭代。有办法解决这个问题吗?

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

XSLT 2.0 好。

最佳答案

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>

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>

输出

<?xml version="1.0" encoding="UTF-8"?>
<!--xsl:value-of-->
AL:NM
<!--xsl:for-each-->
AL:NM:

关于xslt - 循环不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3246216/

相关文章:

xml - JAXP Transformer 通过 DOMSource 返回样式表

java - 是否可以从 Android 上的 Xalan 调用 Java 扩展函数?

javascript - 如何使用 XSLT 转换 XML 文档并在 IE 中添加参数?

xml - 如何在 XSLT 中应用或链接多个匹配模板?

xml - 根据 XSL 中的条件动态输出元素?

html - XSLT模板匹配问题

xml - Xsl :apply-templates select issues, 需要指定我拉的是哪一年

xml - 重新访问混合字符串值的字母数字排序

XSLT 拆分大型单个父节点,分组为较小的子节点

xslt - 所有X元素都在Y以下,但在另一个之后,Y