11

子ノードの値が特定の値と一致するノードのみを選択したいと思います。

ここに私の元のXMLがあります:

これは私の元の XML です

<Entry>
 <Name>AAA</Name>
 <line id="1">A</line>
 <line id="2">B</line>
</Entry>
<Entry>
 <Name>BBB</Name>
 <line id="1">C</line>
 <line id="2">D</line>
</Entry>
<Entry>
 <Name>AAA</Name>
 <line id="1">E</line>
 <line id="2">F</line>
</Entry>
<Entry>
 <Name>CCC</Name>
 <line id="1">G</line>
 <line id="2">H</line>
</Entry>

Name = 'AAA' のすべてのエントリを抽出したいので、結果は次のようになります。

<Entry>
 <Name>AAA</Name>
 <line id="1">A</line>
 <line id="2">B</line>
</Entry>
<Entry>
 <Name>AAA</Name>
 <line id="1">E</line>
 <line id="2">F</line>
</Entry>

XSLT 1.0 の使用に制限されています。

任意のガイダンスを提供してください。一致しない他のサブノードをすべてドロップする方法に行き詰まっています。

よろしく、ラフル

4

3 に答える 3

17

以下は、AAA に等しいサブノード「Name」を持つすべてのエントリ ノードを選択します。

//Entry[Name = "AAA"]
于 2012-09-24T02:24:49.750 に答える
4

次のようなことを試してください (整形式の xml を取得するために追加された List 要素):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <List>
      <xsl:apply-templates select="//Entry[Name='AAA']"/>
    </List>
  </xsl:template>

  <xsl:template match="Entry">
    <xsl:copy-of select="."/>
  </xsl:template>

</xsl:stylesheet>
于 2016-02-21T16:44:45.643 に答える
3

どうですか

//Name[text()='AAA']/..

テキスト コンテンツが AAA であるすべてのノードを検索しName、1 レベル上にある Name の親ノードに移動しますEntry

于 2012-09-24T02:03:06.763 に答える