2017-02-10 17 views
0

セグメントの最後のインスタンスをメッセージの最後の部分に移動することでxmlセグメントを再配置できますか?日付をキーとして日付を使用してxsltを使用してノードを並べ替える

元の構造:

<Header> 
<Field>20170201</Field> 
</Header> 
<Header> 
<Field>20170203</Field> 
</Header> 
<Line> 
<Field>20170202</Field> 
</Line> 

所望の出力:上記のサンプルで

<Header> 
<Field>20170201</Field> 
</Header> 
<Line> 
<Field>20170202</Field> 
</Line> 
<Header> 
<Field>20170203</Field> 
</Header> 

、第2インスタンス(またはヘッダの最後のインスタンス)はラインノードの後に​​移動された以下のサンプルを参照してください。 。

+0

Google 'xslt sort'。 - P.S.あなたが持っているものは数字であり、日付ではありません(日付は表すものの)。 XSLT 1.0では日付のソート方法はわかりませんが、あなたが持っている番号で並べ替えると同じ効果があります。 –

+0

ok sir michael、私は使用している日付形式ははるかに複雑であると思います。 YYYY-MM-DDTHH:mm:ss.xxxxxZ。あなたは日付を使用しないことが正しかった。最後のセグメントの後に最後のインスタンスを移動することはできますか? –

+0

そのフォーマットも 'data-type'として' 'text" 'を使ってソート可能です。 –

答えて

0

ありがとうございました! それは本当に簡単でした。再度、感謝します!

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

    <xsl:template match="MainNode"> 
    <xsl:copy> 
     <xsl:apply-templates> 
     <xsl:sort data-type="text" select="Field"/> 
     </xsl:apply-templates> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="*"> 
    <xsl:copy> 
     <xsl:apply-templates/> 
    </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 
関連する問題