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"