xmlをcsvに変換するには、XSLTファイルを使用する必要があります。それは十分簡単です。XSLTは別個のノードをカウントする
また、ノードから別の値を数え、それを各行に挿入する必要があります。これは私が何をすべきかわからない場所です。
私があなたを数える必要があるノードは下の例で見ることができます。それは< Id>と呼ばれます。
私は基本的に一意であるすべてのIDを数え、結果を各注文線に挿入したいと考えています。
私の例ので>値1と一つ< IDと値4を有するノード2つ< ID>ノードが、結果は全く助けを事前に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 1.0を使用します – stianzz
しかし、どの特定のプロセッサ? 'distinct()'拡張関数をサポートするものもあります。 –