同じ属性を持つ後続の行を選択するにはどうすればよいですか

マーカス

2つの異なる形式の間でxmlからxmlに変換しています。

私の質問:
コード「B」のサブフィールドのシーケンスを選択するにはどうすればよいですか?これは「A」の次の兄弟ですが、他のフィールドの兄弟ではありません。誰かが正しいノードを「選択」する方法を理解するのを手伝ってくれるなら

制限事項:
- XSLT 1.0
-私は別の記事の量にdatafields中とによるコンテンツの順序を変更することはできません。前後のサブフィールドに基づいて、異なるルールセットが適用されます。
-特定の位置を使用できません(2つのサブフィールド「B」が「A」などの後に続くという保証はありません)

例:
各投稿には、任意の数のサブフィールドを持つデータフィールドが含まれています。

XMLはこれに似ています

<datafield tag="1">
      <subfield code="A"></subfield>
      <subfield code="B"></subfield>
      <subfield code="B"></subfield>
      <subfield code="C"></subfield>
      <subfield code="D"></subfield>
      <subfield code="B"></subfield>
      <subfield code="B"></subfield>
      <subfield code="G"></subfield>      
</datafield>

私のxslt:

<xsl:template match="datafield[@tag=1]">    
<xsl:choose>    
    <datafield>        
      <xsl:attribute name="tag">new tag</xsl:attribute>                    
      <!-- Do not transfer subfield code='X' -->
      <xsl:for-each select="./subfield[@code != 'X']">           
        <subfield>
          <xsl:choose>
            <xsl:when test="./@code = 'A'">
              <xsl:attribute name="code">New code</xsl:attribute>     
                <!-- Find siblings with the code 'B'.PROBLEM all fields with the code B is selected-->
              <xsl:when test="./following-sibling::subfield[@code='B']"> Apply operation here </xsl:when>
              </xsl:choose>
            </xsl:when>
          </xsl:choose>                
        </subfield>
        </xsl:if>
      </xsl:for-each>
    </datafield>
  </xsl:when>
</xsl:choose>

私はかなり新しいstackoverflowユーザーなので、重要な入力を見逃した場合は教えてください。

イアン・ロバーツ

最も簡単な方法は、カウントに基づいて何かを行うことです-先行する非Bの数が私の先行する非Bの数に1を加えた数と同じである次のすべてのBを選択します(つまり私)

following-sibling::subfield[@code='B']
       [count(preceding-sibling::subfield[not(@code='B')])
      = count(current()/preceding-sibling::subfield[not(@code='B')]) + 1]

より効率的な方法は、キーグループBを最も近い先行する非Bで定義することです。

<xsl:key name="BbyNonB" match="subfield[@code='B']"
         use="generate-id(preceding-sibling::subfield[not(@code='B')][1])" />

次に、現在の(非B)サブフィールドの直後にあるすべてのBを抽出できます。

key('BbyNonB', generate-id())

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

同じ値の属性を持つエッジを選択するにはどうすればよいですか

分類Dev

同じCSSを持つ複数の要素から選択するにはどうすればよいですか?

分類Dev

同じ値を持つすべての列値を持つ行を選択するにはどうすればよいですか?

分類Dev

同様の値を持つ行を選択するにはどうすればよいですか?

分類Dev

同じ値を持つ複数の行の最初の行と特定の列のみを選択するにはどうすればよいですか?

分類Dev

事前にその値を知らずに、列内の同じ値を持つ行を選択するにはどうすればよいですか?

分類Dev

XPATHで同じ属性IDを持つ2番目の要素を選択するにはどうすればよいですか?

分類Dev

同じIDを持つ2つの選択のオプションを変更するにはどうすればよいですか?

分類Dev

同じクラス名を持つjavaScriptのすべてのクラスを選択するにはどうすればよいですか?

分類Dev

SQL-特定の条件を持つ行を選択するにはどうすればよいですか?

分類Dev

範囲内の値を持つ行を選択するにはどうすればよいですか?

分類Dev

MySQL:次のラガーIDを持つ行を選択するにはどうすればよいですか?

分類Dev

同じ列値(php)を持つすべてのユーザーを選択するにはどうすればよいですか?

分類Dev

MySQLで同様の値を持つ行からすべてのIDを選択するにはどうすればよいですか?

分類Dev

mysqlで同じ値のセットを持つ列を選択するにはどうすればよいですか?

分類Dev

有効な値を持つ最後の行と最初の行から列名を選択するにはどうすればよいですか?

分類Dev

jQueryでname属性を持つ要素を選択するにはどうすればよいですか?

分類Dev

Thymeleaf属性を持つ要素を選択するにはどうすればよいですか?

分類Dev

同じIDを持つ行に条件を適用するにはどうすればよいですか?

分類Dev

MySQLで同じ値を持つ重複行を削除するにはどうすればよいですか?

分類Dev

属性に関係なく、Python XMLの同じ親内で同じタグを持つ要素を結合するにはどうすればよいですか?

分類Dev

特定の2つの祖先を持つ要素を選択するにはどうすればよいですか?

分類Dev

同じ時系列のすべての値を選択するにはどうすればよいですか?

分類Dev

同じ要素を持つ2つの配列を平均するにはどうすればよいですか?

分類Dev

XPATHでのみ同じノードの位置を選択するにはどうすればよいですか?

分類Dev

同じアンカーテキストとhref値を持つリンクを選択するにはどうすればよいですか?

分類Dev

同じ名前の最初のdivのみを選択するにはどうすればよいですか?

分類Dev

同じテーブルの属性の一意の値を持つテーブルからレコードを選択するにはどうすればよいですか?oracle sqlplusに関して回答してください

分類Dev

同じオプションと値を持つ5つの選択がある場合、選択したオプションを別の選択タグから削除するにはどうすればよいですか?

Related 関連記事

  1. 1

    同じ値の属性を持つエッジを選択するにはどうすればよいですか

  2. 2

    同じCSSを持つ複数の要素から選択するにはどうすればよいですか?

  3. 3

    同じ値を持つすべての列値を持つ行を選択するにはどうすればよいですか?

  4. 4

    同様の値を持つ行を選択するにはどうすればよいですか?

  5. 5

    同じ値を持つ複数の行の最初の行と特定の列のみを選択するにはどうすればよいですか?

  6. 6

    事前にその値を知らずに、列内の同じ値を持つ行を選択するにはどうすればよいですか?

  7. 7

    XPATHで同じ属性IDを持つ2番目の要素を選択するにはどうすればよいですか?

  8. 8

    同じIDを持つ2つの選択のオプションを変更するにはどうすればよいですか?

  9. 9

    同じクラス名を持つjavaScriptのすべてのクラスを選択するにはどうすればよいですか?

  10. 10

    SQL-特定の条件を持つ行を選択するにはどうすればよいですか?

  11. 11

    範囲内の値を持つ行を選択するにはどうすればよいですか?

  12. 12

    MySQL:次のラガーIDを持つ行を選択するにはどうすればよいですか?

  13. 13

    同じ列値(php)を持つすべてのユーザーを選択するにはどうすればよいですか?

  14. 14

    MySQLで同様の値を持つ行からすべてのIDを選択するにはどうすればよいですか?

  15. 15

    mysqlで同じ値のセットを持つ列を選択するにはどうすればよいですか?

  16. 16

    有効な値を持つ最後の行と最初の行から列名を選択するにはどうすればよいですか?

  17. 17

    jQueryでname属性を持つ要素を選択するにはどうすればよいですか?

  18. 18

    Thymeleaf属性を持つ要素を選択するにはどうすればよいですか?

  19. 19

    同じIDを持つ行に条件を適用するにはどうすればよいですか?

  20. 20

    MySQLで同じ値を持つ重複行を削除するにはどうすればよいですか?

  21. 21

    属性に関係なく、Python XMLの同じ親内で同じタグを持つ要素を結合するにはどうすればよいですか?

  22. 22

    特定の2つの祖先を持つ要素を選択するにはどうすればよいですか?

  23. 23

    同じ時系列のすべての値を選択するにはどうすればよいですか?

  24. 24

    同じ要素を持つ2つの配列を平均するにはどうすればよいですか?

  25. 25

    XPATHでのみ同じノードの位置を選択するにはどうすればよいですか?

  26. 26

    同じアンカーテキストとhref値を持つリンクを選択するにはどうすればよいですか?

  27. 27

    同じ名前の最初のdivのみを選択するにはどうすればよいですか?

  28. 28

    同じテーブルの属性の一意の値を持つテーブルからレコードを選択するにはどうすればよいですか?oracle sqlplusに関して回答してください

  29. 29

    同じオプションと値を持つ5つの選択がある場合、選択したオプションを別の選択タグから削除するにはどうすればよいですか?

ホットタグ

アーカイブ