1

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

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

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

我们有一个名为 1to many(1-infinite) 的标签:

<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 中使用这些东西。任何人都可以帮助解决这个特定的概念。谢谢

4

1 回答 1

1

首先,您的 XML 元素名称中不能有空格。因此,我已将空格替换为_.

这是一个解决方案:

<?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>
于 2016-11-23T14:44:53.437 回答