我想做的是从 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>
表达式时,我要么只得到一个部分:
<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>
或者整个文件中的所有变体效果都作为每个<feature>
部分中的一个长转储。我尝试的一种方法示例:
<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>
仅打印给定节点的所有“效果”。
任何已经回答的类似问题的帮助或参考都会很棒,谢谢!