我有一个要求,我有一个XML文件,如:
<main>
<Qnumber>10</Qnumber>
<Qaddress>hyderabad</Qaddress>
<Qratio>12:3</Qratio>
<QGet>Getthevalue</QGet>
</main>
这些值将按以下方式映射到目标模式:
我们有一个名为1到多(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中使用这些东西。任何人都可以帮助解决这个特殊的概念。 感谢
答案 0 :(得分: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() < 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>