XSLT非常新,需要一些帮助才能转换XML。以下XML可以有多个“行”标记
<?xml version="1.0" encoding="UTF-8"?>
<ns1:row>
<ns1:City>BALTIMORE</ns1:City>
<ns1:Miscdata>
<ns1:Building>
<ns1:VendorCode>123</ns1:VendorCode>
<ns1:Value>2</ns1:Value>
</ns1:Building>
<ns1:Building>
<ns1:VendorCode>345</ns1:VendorCode>
<ns1:Value>8</ns1:Value>
</ns1:Building>
</ns1:Miscdata>
</ns1:row>
<ns1:row>
<ns1:City>FREMONT</ns1:City>
<ns1:Miscdata>
<ns1:Building>
<ns1:VendorCode>332</ns1:VendorCode>
<ns1:Value>4</ns1:Value>
</ns1:Building>
<ns1:Building>
<ns1:VendorCode>342</ns1:VendorCode>
<ns1:Value>14</ns1:Value>
</ns1:Building>
<ns1:Building>
<ns1:VendorCode>323</ns1:VendorCode>
<ns1:Value>233</ns1:Value>
</ns1:Building>
</ns1:Miscdata>
</ns1:row>
上述XML中“VendorCode”标记中的值需要复制到“Value”标记。输出XML将是
<?xml version="1.0" encoding="UTF-8"?>
<ns1:row>
<ns1:City>BALTIMORE</ns1:City>
<ns1:Miscdata>
<ns1:Building>
<ns1:VendorCode>123</ns1:VendorCode>
<ns1:Value>123</ns1:Value>
</ns1:Building>
<ns1:Building>
<ns1:VendorCode>345</ns1:VendorCode>
<ns1:Value>345</ns1:Value>
</ns1:Building>
</ns1:Miscdata>
</ns1:row>
<ns1:row>
<ns1:City>FREMONT</ns1:City>
<ns1:Miscdata>
<ns1:Building>
<ns1:VendorCode>332</ns1:VendorCode>
<ns1:Value>332</ns1:Value>
</ns1:Building>
<ns1:Building>
<ns1:VendorCode>342</ns1:VendorCode>
<ns1:Value>342</ns1:Value>
</ns1:Building>
<ns1:Building>
<ns1:VendorCode>323</ns1:VendorCode>
<ns1:Value>323</ns1:Value>
</ns1:Building>
</ns1:Miscdata>
</ns1:row>
答案 0 :(得分:0)
所有此类任务都使用模板
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
作为起点,然后为需要特殊处理的节点添加模板,例如在你的情况下
<xsl:template match="ns1:Building/ns1:Value">
<xsl:copy>
<xsl:value-of select="preceding-sibling::ns1:VendorCode"/>
</xsl:copy>
</xsl:template>