XSLTの条件に基づいてXMLノードを並べ替えます

NiranjanKC

XSLTを使用して別のXMLに再構築する必要がある入力XMLがあります。着信XMLは次のようになります

 <Header>
    <Rejection>
        <Code>Code1</Code>
        <Text>Text1</Text>
    </Rejection>
    <Rejection>
        <Code>Code2</Code>
        <Text>Text2</Text>
    </Rejection>
    <Rejection>
        <Code>Code3</Code>
        <Text>Text3</Text>
    </Rejection>
</Header>

拒否のコード値がCode3の場合は常に、Code3 / Text3タグを最初のタグにする必要があります。Code3の位置は、着信XMLのどこにあってもかまいませんが、出力の最初の拒否タグである必要があります。これは私の現在のXSLTです

<xsl:for-each select="/Header/Rejection">
    <xsl:if test ="Code='Code3'">
        <REJECTION>
            <REJECTCODE><xsl:value-of select="Code"></xsl:value-of></REJECTCODE>
            <REJECTREASON><xsl:value-of select="Text"></xsl:value-of></REJECTREASON>
        </REJECTION>
    </xsl:if>
</xsl:for-each>
<xsl:for-each select="/Header/Rejection">
    <xsl:if test ="not(Code='Code3')">
        <REJECTION>
            <REJECTCODE><xsl:value-of select="Code"></xsl:value-of></REJECTCODE>
            <REJECTREASON><xsl:value-of select="Text"></xsl:value-of></REJECTREASON>
        </REJECTION>
    </xsl:if>
</xsl:for-each>

これで、2つのループを防ぎ、結果を1つのループで取得する方法があります。出力XMLは次のようにする必要があります。

<Header>
    <REJECTION>
        <REJECTCODE>Code3</REJECTCODE>
        <REJECTREASON>Text3</REJECTREASON>
    </REJECTION>
    <REJECTION>
        <REJECTCODE>Code1</REJECTCODE>
        <REJECTREASON>Text1</REJECTREASON>
    </REJECTION>
    <REJECTION>
        <REJECTCODE>Code2</REJECTCODE>
        <REJECTREASON>Text2</REJECTREASON>
    </REJECTION>
</Header>

注:コードは単なるサンプルです。実際には英数字であり、並べ替え可能な順序ではありません。

michael.hor257k

どうですか:

<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="/Header">
    <xsl:copy>
        <xsl:apply-templates select="Rejection">
            <xsl:sort select="number(Code='Code3')" data-type="number" order="descending"/>
        </xsl:apply-templates>
    </xsl:copy>
</xsl:template>

<xsl:template match="Rejection">
   <REJECTION>
        <REJECTCODE>
            <xsl:value-of select="Code"/>
        </REJECTCODE>
        <REJECTREASON>
            <xsl:value-of select="Text"/>
        </REJECTREASON>
    </REJECTION>
</xsl:template>

</xsl:stylesheet>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

XSLTは、子要素の属性に基づいて親要素を並べ替えます

分類Dev

複数の条件に基づいて構造体を並べ替えますか?

分類Dev

別の列を条件として、ある列の値に基づいてデータを並べ替えます

分類Dev

子要素の属性に基づいてXSLTまたはPythonでXMLファイルを並べ替える

分類Dev

入力/出力に基づいてノードを並べ替える

分類Dev

名前、属性名、属性値、ノード値に基づいてXMLを並べ替える

分類Dev

XSLTを使用して、条件に基づいてXMLノード属性を他のノードに動的に渡す

分類Dev

mysqlは別のテーブルのフィールドに基づいて列を並べ替えます

分類Dev

姓のアルファベット順に基づいてカードを自動的に並べ替えます

分類Dev

PHPのフィールドに基づいて多次元配列を並べ替えます

分類Dev

Bash-複数のフィールドに基づいてファイル名を並べ替えます

分類Dev

XSLTは複数のノードをコピーして並べ替えます

分類Dev

いくつかの条件に基づいて配列内のアイテムを並べ替えます

分類Dev

パンダ-グループと条件に基づいて行を並べ替えます

分類Dev

javascriptの別の配列に基づいて配列を並べ替えます

分類Dev

R:行の値の量に基づいて行列を並べ替えます

分類Dev

SQLの条件に基づいてXMLノードを抽出する

分類Dev

共通の値に基づいてPHP配列を並べ替えます

分類Dev

DataTableは、要素の属性に基づいて列を並べ替えます

分類Dev

JSのhref属性に基づいてdom要素を並べ替えます

分類Dev

ID名に基づいてdivの順序を並べ替えます

分類Dev

field1、field2に基づいて並べ替えますが、フィールド1の並べ替えは保持し、2番目の並べ替えではnull /空白を無視します

分類Dev

行の条件に基づいて、1つのデータフレームに2つの並べ替え方法を適用します

分類Dev

オブジェクトフィールドのグループ化に基づいてリストを並べ替え、グループ内の最大値に基づいて並べ替えます

分類Dev

ブートストラップの入力の内容に基づいて列を動的に並べ替えます

分類Dev

正と負の値に基づいてデータフレーム列の値を並べ替えますか?

分類Dev

一意の値に基づいて2列のデータフレームを並べ替えます

分類Dev

列内の固有の値に基づいてデータフレームを並べ替えます

分類Dev

列の並べ替えコマンドbashに基づいてタブ区切りファイルを並べ替えます

Related 関連記事

  1. 1

    XSLTは、子要素の属性に基づいて親要素を並べ替えます

  2. 2

    複数の条件に基づいて構造体を並べ替えますか?

  3. 3

    別の列を条件として、ある列の値に基づいてデータを並べ替えます

  4. 4

    子要素の属性に基づいてXSLTまたはPythonでXMLファイルを並べ替える

  5. 5

    入力/出力に基づいてノードを並べ替える

  6. 6

    名前、属性名、属性値、ノード値に基づいてXMLを並べ替える

  7. 7

    XSLTを使用して、条件に基づいてXMLノード属性を他のノードに動的に渡す

  8. 8

    mysqlは別のテーブルのフィールドに基づいて列を並べ替えます

  9. 9

    姓のアルファベット順に基づいてカードを自動的に並べ替えます

  10. 10

    PHPのフィールドに基づいて多次元配列を並べ替えます

  11. 11

    Bash-複数のフィールドに基づいてファイル名を並べ替えます

  12. 12

    XSLTは複数のノードをコピーして並べ替えます

  13. 13

    いくつかの条件に基づいて配列内のアイテムを並べ替えます

  14. 14

    パンダ-グループと条件に基づいて行を並べ替えます

  15. 15

    javascriptの別の配列に基づいて配列を並べ替えます

  16. 16

    R:行の値の量に基づいて行列を並べ替えます

  17. 17

    SQLの条件に基づいてXMLノードを抽出する

  18. 18

    共通の値に基づいてPHP配列を並べ替えます

  19. 19

    DataTableは、要素の属性に基づいて列を並べ替えます

  20. 20

    JSのhref属性に基づいてdom要素を並べ替えます

  21. 21

    ID名に基づいてdivの順序を並べ替えます

  22. 22

    field1、field2に基づいて並べ替えますが、フィールド1の並べ替えは保持し、2番目の並べ替えではnull /空白を無視します

  23. 23

    行の条件に基づいて、1つのデータフレームに2つの並べ替え方法を適用します

  24. 24

    オブジェクトフィールドのグループ化に基づいてリストを並べ替え、グループ内の最大値に基づいて並べ替えます

  25. 25

    ブートストラップの入力の内容に基づいて列を動的に並べ替えます

  26. 26

    正と負の値に基づいてデータフレーム列の値を並べ替えますか?

  27. 27

    一意の値に基づいて2列のデータフレームを並べ替えます

  28. 28

    列内の固有の値に基づいてデータフレームを並べ替えます

  29. 29

    列の並べ替えコマンドbashに基づいてタブ区切りファイルを並べ替えます

ホットタグ

アーカイブ