我想在 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>
所以要使用 XSLT 选择 UML:Package 我使用 for-each 循环的选择选项:
<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 但没有成功。有什么帮助吗?