我需要使用XSLT文件將xml轉換爲csv。這很容易。XSLT統計不同的節點
我還需要從一個節點中計算不同的值並將它們插入到每一行中。這在哪裏我不知道該怎麼做。
我需要計算的節點可以在下面的示例中看到。它被稱爲< Id>。
我基本上想要統計所有唯一的id,並將結果插入到每個命令行中。
由於我的例子有兩個< ID>具有值1和一個< ID>具有值4的節點,其結果將是2.
預先感謝任何幫助在所有節點。
XML:
<?xml version="1.0" encoding="utf-8"?>
<Picked xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<OrderLines>
<OrderLine>
<OrderId>1345
</OrderId>
<Missions>
<Mission>
<ContainerIds>
<Container>
<Id>1
</Id>
</Container>
</ContainerIds>
</Mission>
</Missions>
</OrderLine>
<OrderLine>
<OrderId>13456
</OrderId>
<Missions>
<Mission>
<ContainerIds>
<Container>
<Id>1
</Id>
</Container>
</ContainerIds>
</Mission>
</Missions>
</OrderLine>
<OrderLine>
<OrderId>134567
</OrderId>
<Missions>
<Mission>
<ContainerIds>
<Container>
<Id>4
</Id>
</Container>
</ContainerIds>
</Mission>
</Missions>
</OrderLine>
</OrderLines>
</Picked>
期望的結果:
Orderid;Id
1345;2
13456;2
134567;2
XSLT至今:
<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="text" encoding="UTF-8"/>
<xsl:template match='/'>
<xsl:text>Orderid;Id</xsl:text>
<xsl:text> </xsl:text>
<xsl:for-each select="/Picked/OrderLines/OrderLine">
<xsl:value-of select="OrderId"/>
<xsl:text>;</xsl:text>
<xsl:value-of select="Missions/Mission/ContainerIds/Container/Id"/>
<xsl:if test="position()!=last()">
<xsl:text> </xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我的結果至今:
Orderid;Id
1345;1
13456;1
134567;4
哪個XSLT處理器將您使用? –
我將使用XSLT 1.0 – stianzz
但是具體哪個處理器?有些支持'distinct()'擴展功能。 –