将 XML 元素值映射到目标 XML 中的元素数组

Mapping an XML Element value to array of elements in target XML

我有一个要求,我有一个 XML 文件,例如:

<main>
    <Qnumber>10</Qnumber>
    <Qaddress>hyderabad</Qaddress>
    <Qratio>12:3</Qratio>
    <QGet>Getthevalue</QGet>
</main>

这些值将按以下方式映射到目标模式:

我们有一个名为 1 对多(1-无限)的标签:

<Additional properties>
    <property>
        <Name></Name>
        <Value></Value>
    </property>
</Additional properties>

现在我必须按以下方式映射到此:

<Additional properties>
    <property>
        <Name>Qnumber</Name>
        <Value>10</Value>
    </property>
    <property>
        <Name>Qaddress</Name>
        <Value>hyderabad</Value>
    </property>
    <property>
        <Name>Qratio</Name>
        <Value>12:3</Value>
    </property>
    <property>
        <Name>QGet</Name>
        <Value>Getthevalue</Value>
    </property>
</Additional properties>

我必须在 XSLT.Can 任何人帮助解决这个特定概念。 谢谢

首先,XML 元素的名称中不能包含 space。因此,我将 space 替换为 _ .

这是一个解决方案:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" />

    <xsl:template match="main">
        <Additional_properties>
            <xsl:for-each select="./*">
                <xsl:if test="position() &lt; 5">
                    <property>
                        <xsl:element name="Name">
                            <xsl:value-of select="name()"/>
                        </xsl:element>
                        <xsl:element name="Value">
                            <xsl:value-of select="text()"/>
                        </xsl:element> 
                    </property>
                </xsl:if>
            </xsl:for-each> 
        </Additional_properties>
    </xsl:template>
</xsl:stylesheet>