1

我想做的是从 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>仅打印给定节点的所有“效果”。

任何已经回答的类似问题的帮助或参考都会很棒,谢谢!

4

0 回答 0