小编Aru*_*run的帖子

逗号分隔字符串解析XSLT到for-each节点

我有一个输入字符串,其中包含csv值.例如,1,2,3我需要将每个值分开并分配给for-each循环中的目标节点.

我在下面的模板中根据分隔符拆分输入字符串.如何将每个分隔值分配给for-each循环中的目标元素.

<xsl:template name="output-tokens">
<xsl:param name="list"/>
<xsl:param name="delimiter"/>
<xsl:variable name="newlist">
  <xsl:choose>
    <xsl:when test="contains($list, $delimiter)">
      <xsl:value-of select="normalize-space($list)"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="concat(normalize-space($list), $delimiter)"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:variable>
<xsl:variable name="first" select="substring-before($newlist, $delimiter)"/>
<xsl:variable name="remaining"
              select="substring-after($newlist, $delimiter)"/>
<xsl:variable name="count" select="position()"/>
<num>
  <xsl:value-of select="$first"/>
</num>
<xsl:if test="$remaining">
  <xsl:call-template name="output-tokens">
    <xsl:with-param name="list" select="$remaining"/>
    <xsl:with-param name="delimiter">
      <xsl:value-of select="$delimiter"/>
    </xsl:with-param>
  </xsl:call-template>
</xsl:if>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

输入xml:

<out1:AvailableDates>
<out1:AvailableDate>15/12/2011,16/12/2011,19/12/2011,20/12/2011,21/12/2011</out1:AvailableDate>
</out1:AvailableDates>
Run Code Online (Sandbox Code Playgroud)

预期产出:

<tns:AvailableDates>
<tns:AvailableDate>15/12/2011</tns:AvailableDate>
<tns:AvailableDate>16/12/2011</tns:AvailableDate>
<tns:AvailableDate>120/12/2011</tns:AvailableDate>
</tns:AvailableDates>
Run Code Online (Sandbox Code Playgroud)

xslt

13
推荐指数
2
解决办法
4万
查看次数

检查元素中的所有值是相同的

我有一个像xml,值可以

<n1>value1</n1>
<n1>value1</n1>
<n1>value2</n1>
Run Code Online (Sandbox Code Playgroud)

我需要检查所有这些值是否相同,如果相同,我需要将它分配给另一个元素.我正在使用XSLT v1.0.

谢谢,

xslt

9
推荐指数
2
解决办法
2249
查看次数

标签 统计

xslt ×2