Xml 如何将ID属性写入另一个节点

Xml 如何将ID属性写入另一个节点,xml,xslt,xpath,Xml,Xslt,Xpath,我是XSLT新手,不知道如何转换: <GCInitialStep id="id_A" name="INIT"/> <GCTransition id="id_B" name="T1"/> <GCStep id="id_C" name="A1"/> <!-- ... --> <GCLink fromObject="id_A" toObject="id_B"/> <GCLink fromObjec

我是XSLT新手,不知道如何转换:

   <GCInitialStep id="id_A" name="INIT"/>
   <GCTransition id="id_B" name="T1"/>
   <GCStep id="id_C" name="A1"/>
   <!-- ... -->
   <GCLink fromObject="id_A" toObject="id_B"/>  
   <GCLink fromObject="id_B" toObject="id_C"/>


可能吗?怎么做


谢谢:)

使用类似以下内容:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" indent="yes" />

    <xsl:key name="fromKey" match="GCLink" use="@fromObject"/>
    <xsl:key name="toKey" match="GCLink" use="@toObject"/>

    <xsl:template match="/root">
        <xsl:copy>
            <xsl:apply-templates select="*[not(self::GCLink)]"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="*">
        <xsl:element name="{substring(name(), 3)}">
            <xsl:copy-of select="@id"/>
            <xsl:copy-of select="@name"/>
            <xsl:attribute name="parentid">
                <xsl:value-of select="key('toKey', @id)/@fromObject"/>
            </xsl:attribute>
            <xsl:attribute name="childid">
                <xsl:value-of select="key('fromKey', @id)/@toObject"/>
            </xsl:attribute>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>

适用于

<root>
    <GCInitialStep id="id_A" name="INIT"/>
    <GCTransition id="id_B" name="T1"/>
    <GCStep id="id_C" name="A1"/>
    <GCLink fromObject="id_A" toObject="id_B"/>
    <GCLink fromObject="id_B" toObject="id_C"/>
</root>

输出

<root>
  <InitialStep id="id_A" name="INIT" parentid="" childid="id_B" />
  <Transition id="id_B" name="T1" parentid="id_A" childid="id_C" />
  <Step id="id_C" name="A1" parentid="id_B" childid="" />
</root>


我刚刚编辑了问题,在输入中,
GCLink
根据对象的ID链接对象,我想通过指定父/子(如果有)在节点中对其进行整合。您需要解释要求!例如:生成
动作
元素的规则是什么?请编辑这个问题,并提供一个完整的XML文档(您现在拥有的不是一个格式良好的文档)、确切的所需结果以及转换必须实现的所有需求的良好解释。
<root>
  <InitialStep id="id_A" name="INIT" parentid="" childid="id_B" />
  <Transition id="id_B" name="T1" parentid="id_A" childid="id_C" />
  <Step id="id_C" name="A1" parentid="id_B" childid="" />
</root>