Input.xml中
<?xml version="1.0" encoding="ISO-8859-1"?>
<output>
<orders>
<order>
<id>1</id>
<number>10002</number>
<type>Loading</type>
<date>2013-01-01T02:30:00</date>
</order>
<order>
<id>2</id>
<number>10003</number>
<type>Loading</type>
<date>2013-01-01T010:30:00</date>
</order>
</orders>
<quantities>
<quantity>
<id_order>1</id_order>
<unit>KG</unit>
<value>1000</value>
</quantity>
<quantity>
<id_order>2</id_order>
<unit>PAL</unit>
<value>3</value>
</quantity>
</quantities>
</output>
Output.xml应如下所示
<?xml version="1.0" encoding="ISO-8859-1"?>
<output>
<orders>
<order>
<id>1</id>
<number>10002</number>
<type>Loading</type>
<KG>1000</KG>
<PAL>3</PAL>
<M3>1.5</M3>
</order>
<order>
<id>2</id>
<number>10003</number>
<type>Loading</type>
<KG>2000</KG>
<PAL>4</PAL>
</order>
</orders>
</output>
我需要应用的XSLT文件的格式是什么?
ps:忽略这一行,sTu!&#34; #id SO要求我在这篇文章中写下更多的文字,思考它的所有代码。忽略这一行,sTu!&#34; #id SO要求我在这篇文章中写下更多的文字,思考它的所有代码。
答案 0 :(得分:0)
以下XSLT可以满足您的需求(格式化除外):
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes" encoding="iso-8859-1"/>
<!-- Copy all elements recursively -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<!-- Copy this element with subelements -->
<xsl:template match="order">
<!-- Save ID for queries -->
<xsl:variable name="id" select="id" />
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
<!-- Find all quantity elements by ID -->
<xsl:for-each select="//quantity[id_order=$id]">
<!-- Create element with name set to value of unit element and value of value element -->
<xsl:element name="{unit}">
<xsl:value-of select="value"/>
</xsl:element>
</xsl:for-each>
</xsl:copy>
</xsl:template>
<!-- Skip these elements -->
<xsl:template match="quantities" />
<xsl:template match="date" />
</xsl:stylesheet>
<强> RESULT 强>
<?xml version="1.0" encoding="UTF-8"?>
<output>
<orders>
<order>
<id>1</id>
<number>10002</number>
<type>Loading</type>
<KG>1000</KG>
</order>
<order>
<id>2</id>
<number>10003</number>
<type>Loading</type>
<PAL>3</PAL>
</order>
</orders>
</output>