0

XPATHに問題があります。私は次のように構造化されたXMLを持っています:

<root>
    <state name="UsUed">
        <transition event-source="this" event="edit()" target="UsEd_editing" />
        ...
    </state>
    <state>
        <transition event-source="this" event="edit()" target="UsEd" />
        <transition event-source="that" event="new()" target="SUed" />
        ...
    </state>
</root>

<transition />そして、私はとだけで'sを取得する必要があり@event-source='this'ます@event

この点に対する私の解決策は<transitions />、「this」属性を持つすべてを選択し、それらを並べ替えてから、ここ@eventのようにそれらの個別のもののみを選択しようとすることです。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <xsl:for-each select="//transition[@event-source='this']">
        <xsl:sort select="@event"/>
            <xsl:if https://stackoverflow.com/questions/2812122/distinct-in-xpath>
                <!--Here goes the transformation-->
            </xsl:if>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

しかし、それは機能しません。

4

1 に答える 1

0

一意のアイテムを選択するには、前の軸を使用して現在の一致を前の一致と比較し、それらが同じでないことを確認できます。一意のアイテムを選択するために必要なのは、次のようなXPathクエリだけです。@event属性の一意性は、@event-source='this'グローバルではなく、を含む他の遷移要素に限定されていると仮定しました。

/root/state/transition[@event-source='this'][not(@event=preceding::transition[@event-source='this']/@event)]
于 2013-01-15T21:02:35.440 に答える