0

ある時点で次のような大きなテキスト ファイルがあります。

<w>
    <randomnode>
        <pa/>
        <pa>
            Keyword1 sometxt1 <thing>abc</thing>: blabla
        </pa>
        <stuff>abc</stuff>
        <pa>
            just blabla
        </pa>
        <pa>
            Keyword2 othertxt2: blabla
        </pa>
        <pa>
            just blabla
        </pa>
        <pa>
            just blabla
        </pa>
        <pa>
            Keyword1 xxx: and blabla
        </pa>
    </randomnode>
</w>

この結果を取得したい:

<w>
    <randomnode>
        <k attr="keyword1 sometxt1">
            <p>
                <s>
                    Keyword1 sometxt1 <thing>abc</thing>:
                </s>
                blabla
            </p> 
            <stuff>abc</stuff>
            <p>
                just blabla
            </p>
        </k>
        <k attr="keyword1 othertxt2">
            <p>
                <s>
                Keyword2 othertxt2:
                </s>
                blabla
            </p>
            <p>
                just blabla
            </p>
            <p>
                just blabla
            </p>
        </k>
        <k attr="keyword1 xxx">
            <p>
                <s>
                    Keyword1 xxx:
                </s>
                and blabla
            </p>
       </k>
    </randomnode>
</w>

<pa> 英語で:そのノードの text() にキーワード 1、キーワード 2、またはキーワード 3 があるときはいつでも、それぞれを調べてグループ化したいと思います。<s>のコンテンツの分割は別のテンプレートで行われ、正しく:グループ化できれば機能するはずです。<pa>

私はこれまでのところこれを持っています:

<xsl:for-each-group select="$randomnode/*[normalize-space(.)!='']"
     group-starting-with="pa/text()[contains(., 'keyword1')
     or contains(., 'keyword2') or contains(., 'keyword3')]">

問題は、何も選択されていないことであり、text() が原因であると感じています...

text() で group-starting-woth を使用できますか? 完全に異なることをする前に、これを使用して拡張/修正したいと思います..

4

1 に答える 1

0

まあ、私はtext()完全に捨てて、単に比較します

<xsl:for-each-group select="$randomnode/*[normalize-space(.)!='']"
     group-starting-with="pa[contains(., 'keyword1')
     or contains(., 'keyword2') or contains(., 'keyword3')]">

text()子ノードの選択を使用する場合は、必要です

<xsl:for-each-group select="$randomnode/*[normalize-space(.)!='']"
     group-starting-with="pa[text()[contains(., 'keyword1')
     or contains(., 'keyword2') or contains(., 'keyword3')]]">
于 2013-08-14T16:42:03.750 に答える