Как преобразовать XML в XML с несколькими значениями и несколькими тегами, разделенными пробелом - PullRequest
0 голосов
/ 03 апреля 2019

Мне нужно преобразовать приведенный ниже «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 Ответ

1 голос
/ 03 апреля 2019
<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>

http://xsltfiddle.liberty -development.net / gWvjQfo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...