Xml 如何将ID属性写入另一个节点
我是XSLT新手,不知道如何转换: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
<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>