-2
我有這樣的.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>
<order>
<id>3</id>
<number>10004</number>
<type>Loaded</type>
<date>2013-01-01T12:30:00</date>
</order>
</orders>
<quantities>
<quantity>
<id_order>1</id_order>
<unit>KG</unit>
<value>1000</value>
</quantity>
<quantity>
<id_order>1</id_order>
<unit>PAL</unit>
<value>3</value>
</quantity>
<quantity>
<id_order>1</id_order>
<unit>M3</unit>
<value>1.5</value>
</quantity>
<quantity>
<id_order>2</id_order>
<unit>KG</unit>
<value>2000</value>
</quantity>
<quantity>
<id_order>2</id_order>
<unit>PAL</unit>
<value>4</value>
</quantity>
<quantity>
<id_order>3</id_order>
<unit>KG</unit>
<value>5000</value>
</quantity>
</quantities>
</output>
和期望轉化爲類似
<output>
<amount>KG</amount>
<total> "sum of all KG elements" </total>
<amount>PAL</amount>
<total> "sum of all PAL elements" </total>
<amount>M3</amount>
<total> "sum of all M3 elements" </total>
</output>
我已經試過類似
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<output>
<xsl:for-each select="output/quantities/quantity">
<amount>
<xsl:value-of select="unit"/>
<xsl:for-each select="output/quantities/quantity/value">
<xsl:value-of select="sum(output/quantities/quantity/value)"/>
</xsl:for-each>
</amount>
</xsl:for-each>
</output>
</xsl:template>
</xsl:stylesheet>
但我不得到值的總和,並且輸出如此破碎
<output>
<amount>KG<total/></amount>
<amount>PAL<total/></amount>
<amount>M3<total/></amount>
<amount>KG<total/></amount>
<amount>PAL<total/></amount>
<amount>KG<total/></amount>
</output>
我已經嘗試了幾個其他的解決方法,但沒有工作到我想要的輸出。如果有人能以任何方式建議任何事情或提供幫助,我將不勝感激。
現在我試圖添加另一個節點,在第一個xml中調用之後,應該基本上具有複製值的值,剝離後僅在小時後顯示(hh:mm:ss)。我已經設法創建了原始xml的副本並添加了額外的標籤,但我不確定如何提取小時數據並在內部標籤中顯示。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="date">
<xsl:copy-of select="."/>
<hour>
<xsl:comment> <xsl:copy-of select="substring(output/orders/order/date,11)"/> </xsl:comment>
</hour>
</xsl:template>
</xsl:stylesheet>
我已將您的標題更改爲更具描述性的標題。實際上所有的XSLT問題都是關於「xslt transform xml to xml」 - 請儘量多表達一點。 –
謝謝,我設法使它與你的代碼一起工作,並進一步推導它以滿足我的需求。我感謝您的幫助。我更新了我的下一個問題,我無法將一個標記值複製到另一個創建的標記中。 – user2842773
我建議你用新問題發佈一個新問題,因爲它們似乎沒有關係。 –