将 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() < 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>
我有一个要求,我有一个 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() < 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>