3

次の情報を含むxmlがあり、Xpathを使用して解析しています

<root>
  <a>
    <b></b>
    <c></c>
    <d></d>
  </a>
  <a>
    <b></b>
    <c></c>
    <d></d>
  </a>
</root>

私の目標は、タグ「a」のノードリストを取得し、「b」と「c」を含む各サブノードリストで(「d」を除外するなど)、現在行っていることは「/ root / a」を使用して取得することですすべての「a」、「b」、および「c」を含むノードは、その後「c」を取り除きます。余分なコードを使用する代わりに、XPath 内でフィルタリングを行うことを目的としています。ありがとう!

4

1 に答える 1

2

以下のパターンですべてをコピーし、除外したい要素をインターセプトすることで、要素を除外できます。

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


  <xsl:template match="a/d"/>


  <xsl:template match="node() | @*">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet> 

これは、特別なテンプレートが一般的なテンプレートよりも優先されるためです。dしたがって、2 つ目はbelowを除くすべての要素に適用されますa。最初のテンプレートは何もしません。つまり、要素を無視します。

于 2012-05-22T10:22:33.950 に答える