2012-04-19 10 views
0

DB値= DB1が1つもない場合にのみ、NAMEを与えるために解析する次の基本XMLがあります。複数の子孫の負の値に基づいて要素を選択するxslt transform

<rnas> 
    <rna ID="1"> 
    <NAME>Segment 6</NAME> 
    <XREF> 
     <ID>AF389120</ID> 
     <DB>DB1</DB> 
    </XREF> 
    <XREF> 
     <ID>ABCDE</ID> 
     <DB>DB2</DB> 
    </XREF> 
    </rna> 
    <rna ID="10"> 
    <NAME>Segment 3</NAME> 
    <XREF> 
     <ID>12345</ID> 
     <DB>DB2</DB> 
    </XREF> 
    <XREF> 
     <ID>66789</ID> 
     <DB>DB3</DB> 
    </XREF> 
    </rna> 
</rnas> 

予想される出力は次のようになります。

<rnas> 
    <rna ID="10"> 
    <NAME>Segment 3</NAME> 
    </rna> 
<rnas> 

私はまだ相対的な初心者ですとXSLT 2.0を使用して様々なアプローチを試してみましたが、今のところ正常に動作するために何かを得ることができていません。どんな助けでも大歓迎です。

答えて

1

これは、2つの空のテンプレートと一緒にトランスフォームアイデンティティのあなたは

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="xml" indent="yes"/> 

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

    <xsl:template match="rna[.//DB/text()='DB1']"/> 
    <xsl:template match="XREF"/> 

</xsl:stylesheet> 

やりたいだろう。最初はDBを含むrnaに一致し、テキスト値はDB1であり、抑止されます。 2番目の要素は、出力したくないすべての要素XREFに一致します。

+0

ありがとうございます。私は同様のことをやろうとしていましたが、空のテンプレートの価値を認識していませんでした。 –

関連する問題