如何从xml到xsl解析值

时间:2011-04-18 06:56:43

标签: xslt

<block4>
  <tag>
    <name>50K</name>
    <value>/001/002/300060000120135670
CREDIT AGRICOLE ASSET MANAGEMENT</value>
  </tag>
</block4>

我需要获得如下输出:

/001/002,/300060000120135670,CREDIT AGRICOLE ASSET MANAGEMENT

我在XSL中做过这样的事情,但是我没有得到我想要的输出。任何人都可以请我告诉我如何获得该输出?

<xsl:for-each select ="block4/tag[name = '50K']">
  <xsl:value-of  select="
    concat(
      substring(value,1,8),
      (concat(substring(value,9,'&#13;'),',')),
      substring-after(value,'&#13;')
    )
  " />,<xsl:text/>
</xsl:for-each>

2 个答案:

答案 0 :(得分:0)

为什么不使用XSLT 2.0 tokenize()函数? 见Here

答案 1 :(得分:0)

concat接受任意数量的参数,不需要嵌套这些调用。此外,substring采用开头和可选长度,而不是终止字符。尝试这样的事情:

<xsl:for-each select ="block4/tag[name = '50K']">
  <xsl:value-of select="
    concat(
      substring(value, 1, 8), ',',
      substring(substring-before(value,'&#xA;'),9), ',',
      substring-after(value,'&#xA;')
    )
  " />,<xsl:text/>
</xsl:for-each>

我保留了最后一个逗号,这是你没有真正指定的众多内容之一。