如何将xml转换为具有多个值和多个标签(以空格分隔)的xml

时间:2019-04-03 05:25:46

标签: xml xslt

我需要将下面的“ input.xml”转换为“ output.xml”

input.xml

<tags><tag1>1 2 3</tag1><tag2>A B C</tag2></tags>

output.xml

<tags>
 <tag1>1</tag1>
 <tag2>A</tag2>
</tags>

<tags>
 <tag1>2</tag1>
 <tag2>B</tag2>
</tags>

<tags>
 <tag1>3</tag1>
 <tag2>c</tag2>
</tags>

假设<tag1><tag2>的值数相同。

1 个答案:

答案 0 :(得分:1)

<xsl:stylesheet version="2.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   exclude-result-prefixes="xs">
<xsl:output omit-xml-declaration="yes" indent="yes" />

<xsl:template match="/">
    <xsl:variable name="tokenizedTag1" select="tokenize(/tags/tag1,' ')" />
    <xsl:variable name="tokenizedTag2" select="tokenize(/tags/tag2,' ')" />

    <xsl:for-each select="$tokenizedTag1">
        <xsl:variable name="positionTag1" select="position()"></xsl:variable>
        <tags>
            <tag1><xsl:value-of select="." /></tag1>
            <xsl:for-each select="$tokenizedTag2">
                <xsl:if test="$positionTag1 = position()">
                    <tag2><xsl:value-of select="." /></tag2>
                </xsl:if>
            </xsl:for-each>
        </tags>
    </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

django-cleanup