XSLT foreach属性

时间:2012-12-20 17:51:25

标签: xml xslt

我想做的是从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>

或者将整个文件中的所有variant_effect作为每个<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>“效果”。

任何对类似问题的帮助或引用已经很好,谢谢!

0 个答案:

没有答案