select 带有 XSLT 的标签的父级
select parent of a tag with XSLT
我想 select for-each 循环中 XMI 标记的父级。
这是我的输入:
<XMI xmi.version='1.2' xmlns:UML="org.omg.xmi.namespace.UML">
<XMI.content>
<UML:Model xmi.id='eee_1045467100313_135436_1' name='Data'>
<UML:Namespace.ownedElement>
<UML:Package xmi.id='_9_0_bc102e5_1427365805826_580042_23'
name='migration2'>
<UML:Package xmi.id='_9_0_bc102e5_1427365805826_580042_22'
name='migration'>
<UML:Class xmi.id='_9_0_bc102e5_1427367042666_255023_151'
name='Employee'>
<UML:Classifier.feature>
<UML:Attribute xmi.id='_9_0_bc102e5_1427367052819_893122_168'
name='cin'>
</UML:Attribute>
</UML:Classifier.feature>
</UML:Class>
<UML:Class xmi.id='_9_0_bc102e5_1427367042666_255023_152'
name='Employee2'>
<UML:Classifier.feature>
<UML:Attribute xmi.id='_9_0_bc102e5_1427367052819_893122_169'
name='cin2'>
</UML:Attribute>
</UML:Classifier.feature>
</UML:Class>
<UML:Class xmi.id='_9_0_bc102e5_1427367042666_255023_153'
name='Employee3'>
<UML:Classifier.feature>
<UML:Attribute xmi.id='_9_0_bc102e5_1427367052819_893122_170'
name='cin3'>
</UML:Attribute>
</UML:Classifier.feature>
</UML:Class>
</UML:Package>
</UML:Package>
</UML:Namespace.ownedElement>
</UML:Model>
</XMI.content>
</XMI>
所以 select UML:Package 与 XSLT 我使用 for-each 循环的 select 选项:
<xsl:for-each
select="XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:Package">
<packagedElement>
<xsl:attribute name="xmi:type">uml:package</xsl:attribute>
<xsl:attribute name="xmi.id">
<xsl:value-of select='@xmi.id' />
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select='@name' />
</xsl:attribute>
</xsl:for-each>
有没有可能取代
select="XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:Package"
PS :我试过 */UML:Package 和 ../UML:Package 但没有成功。
有帮助吗?
你的问题不是很清楚。
I want to select the parent of an XMI tag in a for-each loop.
这部分很简单:只需使用 parent::*
或很快 ../*
。但这只有在您已经处于具有父节点的某个节点的上下文中时才有效。所以你的问题:
Is there any possibility to replace the
select="XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:Package"
在这种情况下没有意义。
要选择所有 UML:Package
个元素,您可以简单地写
select="//UML:Package"
我想 select for-each 循环中 XMI 标记的父级。 这是我的输入:
<XMI xmi.version='1.2' xmlns:UML="org.omg.xmi.namespace.UML">
<XMI.content>
<UML:Model xmi.id='eee_1045467100313_135436_1' name='Data'>
<UML:Namespace.ownedElement>
<UML:Package xmi.id='_9_0_bc102e5_1427365805826_580042_23'
name='migration2'>
<UML:Package xmi.id='_9_0_bc102e5_1427365805826_580042_22'
name='migration'>
<UML:Class xmi.id='_9_0_bc102e5_1427367042666_255023_151'
name='Employee'>
<UML:Classifier.feature>
<UML:Attribute xmi.id='_9_0_bc102e5_1427367052819_893122_168'
name='cin'>
</UML:Attribute>
</UML:Classifier.feature>
</UML:Class>
<UML:Class xmi.id='_9_0_bc102e5_1427367042666_255023_152'
name='Employee2'>
<UML:Classifier.feature>
<UML:Attribute xmi.id='_9_0_bc102e5_1427367052819_893122_169'
name='cin2'>
</UML:Attribute>
</UML:Classifier.feature>
</UML:Class>
<UML:Class xmi.id='_9_0_bc102e5_1427367042666_255023_153'
name='Employee3'>
<UML:Classifier.feature>
<UML:Attribute xmi.id='_9_0_bc102e5_1427367052819_893122_170'
name='cin3'>
</UML:Attribute>
</UML:Classifier.feature>
</UML:Class>
</UML:Package>
</UML:Package>
</UML:Namespace.ownedElement>
</UML:Model>
</XMI.content>
</XMI>
所以 select UML:Package 与 XSLT 我使用 for-each 循环的 select 选项:
<xsl:for-each
select="XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:Package">
<packagedElement>
<xsl:attribute name="xmi:type">uml:package</xsl:attribute>
<xsl:attribute name="xmi.id">
<xsl:value-of select='@xmi.id' />
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select='@name' />
</xsl:attribute>
</xsl:for-each>
有没有可能取代
select="XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:Package"
PS :我试过 */UML:Package 和 ../UML:Package 但没有成功。 有帮助吗?
你的问题不是很清楚。
I want to select the parent of an XMI tag in a for-each loop.
这部分很简单:只需使用 parent::*
或很快 ../*
。但这只有在您已经处于具有父节点的某个节点的上下文中时才有效。所以你的问题:
Is there any possibility to replace the
select="XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:Package"
在这种情况下没有意义。
要选择所有 UML:Package
个元素,您可以简单地写
select="//UML:Package"