すべてのノードに対するXSLTMUENCHIANメソッド

アランサミュエル

要素の祖先、自己、および子孫の属性値を取得しようとしています。そして、一意の値を表示したいと思います。

これが私が試していることです。

<xsl:key name="remove" match="value" use="sortedvalues" />

<xsl:for-each select="ancestor-or-self::node()/@value[generate-id() = generate-id(key('remove',sortedvalues)[1])] | descendant-or-self::node()/@value[generate-id() = generate-id(key('remove',sortedvalues)[1])]">

            <xsl:for-each select="key('remove',sortedvalues)">
            <xsl:sort select="sortedvalues"></xsl:sort>

            </xsl:for-each>

            </xsl:for-each>

そしてこれが実際のXMLです

<Root>

     <something value = “asd” </something>
    <something value = “dsa” </something>
  <Product>
    <something value = "asd"></something>
    <something value = "dsa"></something>
    <something value = "asd"></something>

    <anothernode>
    <something value = "qwe"></something>
    </anothernode>

    <anothernode2>
    <something value = "ewq"></something>
    </anothernode2>

    <something value = "ewq"></something>

<Product>

  <Product>
    <something value = "asd"></something>
    <something value = "dsa"></something>
    <something value = "asd"></something>

    <anothernode>
    <something value = "qwe"></something>
    </anothernode>

    <anothernode2>
    <something value = "ewq"></something>
    </anothernode2>

    <something value = "ewq"></something>

<Product>
</Root>

基本的に見せたい

<Product>
    <values>asd <values>
    <values>dsa<values>
    <values>qwe<values>
    <values>ewq<values>
<Product>


<Product>
    <values>asd <values>
    <values>dsa<values>
    <values>qwe<values>
    <values>ewq<values>
<Product>

したがって、//を使用して個々の製品を表示することはできないため、Productで祖先と子孫を使用しています。

チームC

value製品ごとに一意の属性を取得する場合は、キーの製品部分を参照する必要があります

 <xsl:key name="values" match="@value" use="concat(generate-id(ancestor::Product), '|', .)" />

次に、特定の製品について、次のような個別の値を取得します(ここ$idで、は製品のgenerate-id()の値を含む変数です)

<xsl:for-each select=".//@value[generate-id() = generate-id(key('values', concat($id, '|', .))[1])]">

このXSLTをお試しください

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

  <xsl:key name="values" match="@value" use="concat(generate-id(ancestor::Product), '|', .)" />

  <xsl:template match="Product">
    <xsl:variable name="id" select="generate-id()" />
    <xsl:copy>
        <xsl:for-each select=".//@value[generate-id() = generate-id(key('values', concat($id, '|', .))[1])]">
            <values><xsl:value-of select="." /></values>
        </xsl:for-each>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

注意、あなたはXSLT 2.0にアップグレードすることができれば、あなたが使用することができますxsl:for-each-groupので、のように

<xsl:for-each-group select=".//@value" group-by=".">

またはdistinct-values()、そのように使用することができます

<xsl:for-each select="distinct-values(.//@value)">

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

arraylistのすべての要素に対するjavarunメソッド

分類Dev

メソッドのすべての呼び出し元に対してコード分析ルールを無効にする方法

分類Dev

すべてのノードの子に対する Neo4j 暗号

分類Dev

Jupyterノートブックで可能なすべてのメソッドを表示する

分類Dev

リスト内のすべてのオブジェクトに対するJava実行メソッド

分類Dev

リスト内のすべてのオブジェクトに対するJava実行メソッド

分類Dev

すべての関連付けからの値に対するRubyメソッド

分類Dev

すべてのDALメソッドを静的にする

分類Dev

すべてのメソッドに@JsNameアノテーションが必要ですか?

分類Dev

すべてのページに1つのメソッド(ActionResult)

分類Dev

angle2 アプリのすべてのルートに対して呼び出されるデフォルトのメソッドは何ですか?

分類Dev

RayClusterすべてのノードリソースにアクセスする方法

分類Dev

Java DatabaseMetaData.getColumns()メソッドがすべてのユーザーに対して機能するとは限りません

分類Dev

null引数に対するメソッドのオーバーロード

分類Dev

別のメソッドからメソッドを呼び出して、引き出し値を$ 20のノートと$ 50のノートに分割する方法

分類Dev

main()メソッドを使用せずにTestNgですべてのアノテーションがどのように機能するか

分類Dev

main()メソッドを使用せずにTestNgですべてのアノテーションがどのように機能するか

分類Dev

テーブルに対して検証するメソッドを作成する

分類Dev

3つのほぼ同一のメソッドに対して別々のメソッドを作成する方法

分類Dev

複数の入力フィールドに対して単一の handleInputChange メソッドを使用する (React)

分類Dev

メソッド名とパッケージ/クラス名を含む、特定のアノテーションを持つすべてのメソッドのjavadocを取得するにはどうすればよいですか?

分類Dev

各ノードが相互に接続されているグラフの最小ツリータイプのネットワークを見つけ、他のすべてのノードに対する各ノードの合計を見つけます

分類Dev

メソッドスタック内のすべてのメソッドの実行にかかる時間

分類Dev

メソッドのすべてのパラメーターに修正を提供する方法(Roslyn-FixProvider)

分類Dev

WPF C#、ノードのプロパティ値に応じて色を変更するメソッド

分類Dev

jmslistenerアノテーションが付けられたメソッドのスキーマに対して生のメッセージを検証します

分類Dev

すべてのメソッドの使用をロックする

分類Dev

getFactHandleメソッドは、Drools内のすべてのファクトに対してnullを返します

分類Dev

Javascript every()メソッドを使用して、配列内の他のすべての要素に対して1つの要素をチェックする方法は?

Related 関連記事

  1. 1

    arraylistのすべての要素に対するjavarunメソッド

  2. 2

    メソッドのすべての呼び出し元に対してコード分析ルールを無効にする方法

  3. 3

    すべてのノードの子に対する Neo4j 暗号

  4. 4

    Jupyterノートブックで可能なすべてのメソッドを表示する

  5. 5

    リスト内のすべてのオブジェクトに対するJava実行メソッド

  6. 6

    リスト内のすべてのオブジェクトに対するJava実行メソッド

  7. 7

    すべての関連付けからの値に対するRubyメソッド

  8. 8

    すべてのDALメソッドを静的にする

  9. 9

    すべてのメソッドに@JsNameアノテーションが必要ですか?

  10. 10

    すべてのページに1つのメソッド(ActionResult)

  11. 11

    angle2 アプリのすべてのルートに対して呼び出されるデフォルトのメソッドは何ですか?

  12. 12

    RayClusterすべてのノードリソースにアクセスする方法

  13. 13

    Java DatabaseMetaData.getColumns()メソッドがすべてのユーザーに対して機能するとは限りません

  14. 14

    null引数に対するメソッドのオーバーロード

  15. 15

    別のメソッドからメソッドを呼び出して、引き出し値を$ 20のノートと$ 50のノートに分割する方法

  16. 16

    main()メソッドを使用せずにTestNgですべてのアノテーションがどのように機能するか

  17. 17

    main()メソッドを使用せずにTestNgですべてのアノテーションがどのように機能するか

  18. 18

    テーブルに対して検証するメソッドを作成する

  19. 19

    3つのほぼ同一のメソッドに対して別々のメソッドを作成する方法

  20. 20

    複数の入力フィールドに対して単一の handleInputChange メソッドを使用する (React)

  21. 21

    メソッド名とパッケージ/クラス名を含む、特定のアノテーションを持つすべてのメソッドのjavadocを取得するにはどうすればよいですか?

  22. 22

    各ノードが相互に接続されているグラフの最小ツリータイプのネットワークを見つけ、他のすべてのノードに対する各ノードの合計を見つけます

  23. 23

    メソッドスタック内のすべてのメソッドの実行にかかる時間

  24. 24

    メソッドのすべてのパラメーターに修正を提供する方法(Roslyn-FixProvider)

  25. 25

    WPF C#、ノードのプロパティ値に応じて色を変更するメソッド

  26. 26

    jmslistenerアノテーションが付けられたメソッドのスキーマに対して生のメッセージを検証します

  27. 27

    すべてのメソッドの使用をロックする

  28. 28

    getFactHandleメソッドは、Drools内のすべてのファクトに対してnullを返します

  29. 29

    Javascript every()メソッドを使用して、配列内の他のすべての要素に対して1つの要素をチェックする方法は?

ホットタグ

アーカイブ