<xsl:variable name="AAM" select="//AAM"/>
AAM将具有字符串value_1,value_2,value_3,value_4
然后,我想将其拆分并存储在4个变量中:
seg1, seg2, seg3, seg4
答案 0 :(得分:0)
假设以下内容为您输入:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<AAM>value_1,value_2,value_3,value_4</AAM>
</body>
用于拆分逗号分隔的字符串的 XSLT 2.0 解决方案可以是:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:variable name="AAM" select="//AAM" />
<xsl:template match="body">
<body>
<xsl:variable name="separator" select="','" />
<xsl:for-each select="tokenize($AAM,$separator)">
<xsl:element name="seg{position()}">
<xsl:value-of select="normalize-space(.)" />
</xsl:element>
</xsl:for-each>
</body>
</xsl:template>
http://xsltransform.net/6qaFCET/1
编辑:(基于评论)
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:variable name="AAM" select="//AAM" />
<xsl:template match="body">
<body>
<xsl:variable name="separator" select="','" />
<xsl:for-each select="tokenize($AAM,$separator)">
<xsl:choose>
<xsl:when test="position() = 1">
<xsl:variable name="seg1">
<xsl:value-of select="normalize-space(.)" />
</xsl:variable>
<xsl:copy-of select="$seg1" />
<xsl:text> </xsl:text>
</xsl:when>
<xsl:when test="position() = 2">
<xsl:variable name="seg2">
<xsl:value-of select="normalize-space(.)" />
</xsl:variable>
<xsl:copy-of select="$seg2" />
<xsl:text> </xsl:text>
</xsl:when>
<xsl:when test="position() = 3">
<xsl:variable name="seg3">
<xsl:value-of select="normalize-space(.)" />
</xsl:variable>
<xsl:copy-of select="$seg3" />
<xsl:text> </xsl:text>
</xsl:when>
<xsl:when test="position() = 4">
<xsl:variable name="seg4">
<xsl:value-of select="normalize-space(.)" />
</xsl:variable>
<xsl:copy-of select="$seg4" />
<xsl:text> </xsl:text>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</body>
</xsl:template>
http://xsltransform.net/6qaFCET/2
注意:可以避免以下几行。已添加它以填充变量的值。
<xsl:copy-of select="$seg2" />
<xsl:text> </xsl:text>
答案 1 :(得分:0)
假设您有<AAM>value_1,value_2,value_3,value_4</AAM>
和<xsl:variable name="AAM" select="//AAM"/>
,当然可以使用<xsl:variable name="value-sequence" select="tokenize($AAM, ',')"/>
,如果需要的话,例如$value-sequence[1]
,$value-sequence[2]
等,因此,如果您知道只有四个值,则可以声明<xsl:variable name="seq1" select="$value-sequence[1]"/>
,<xsl:variable name="seq2" select="$value-sequence[2]"/>
,依此类推。 tokenize
函数是XPath 2的一部分,以后可以与XSLT 2或3处理器(如Saxon 9或AltovaXML或XmlPrime)一起使用。