私がやりたいことは、XML から XML への変換を行い<variant_effect>
、現在の状態を維持することです。特定の「効果」がいくつあるかはわかりません。<feature>
そのため、各子には 0...n の効果属性があります。これを行うための最良/最も簡単な方法がわかりません。
各ドキュメント内に複数の機能を持つ XML レイアウトがあるとします。
<feature>
<seqid>12</seqid>
<source>HGMD</source>
<type>substitution</type>
<start>9232268</start>
<end>9232268</end>
<score>.</score>
<strand>+</strand>
<id>HGMD_SNV_000001</id>
<alias>HGVS:NM_000014.4:c.2998G-A,HGVS:NP_000005.2:p.V1000I</alias>
<variant_seq>A</variant_seq>
<reference_seq>T</reference_seq>
<variant_effect>
<feature_id effect="1">A2M</feature_id>
<index effect="1">0</index>
<sequence_variant effect="1">gene_variant</sequence_variant>
<feature_type effect="1">gene</feature_type>
<feature_id effect="2">CM980001</feature_id>
<index effect="2">0</index>
<sequence_variant effect="2">transcript_variant</sequence_variant>
<feature_type effect="2">transcript</feature_type>
<feature_id effect="3">CM980001</feature_id>
<index effect="3">0</index>
<sequence_variant effect="3">coding_sequence_variant</sequence_variant>
<feature_type effect="3">mRNA</feature_type>
</variant_effect>
<sequence_context>CTAAATGAAACACAGCAGCTTACTCCAGAG,TCAAGTCCAAGGCCATTGGCTATCTCAACA</sequence_context>
</feature>
XSLT を使用してすべてのタグを新しい XML ドキュメントに移動するのは簡単ですが、<variant_effect>
. 式をさまざまな方法で使用すると
<xsl:for-each>
、1 つのセクションしか得られません。
<feature>
<!-other values -->
<variant_effect>
<feature_id>A2M</feature_id>
<index effect>0</index>
<sequence_variant>gene_variant</sequence_variant>
<feature_type>gene</feature_type>
</variant_effect>
</feature>
または、ファイル全体からのすべての variant_effect を、各<feature>
セクションの 1 つの長いダンプとして。私が試みた1つの方法の例:
<xsl:template match="/">
<xsl:for-each select="GVFClin/feature">
<!- dealing with each sections first -->
<variant_effect>
<xsl:for-each select="/GVFClin/feature/variant_effect/sequence_variant">
<xsl:value-of select="/GVFClin/feature/variant_effect/sequence_variant"/>
</xsl:for-each>
</variant_effect>
</xsl:for-each>
</xsl:template>
各要素を追跡し<variant_effect>
、特定のノードのみのすべての「効果」を出力する方法が本当にわからないと思います。
すでに回答されている同様の質問へのヘルプまたは参照は素晴らしいでしょう、ありがとう!