【问题标题】:XPATH 1.0 complex select with two parameters with distinctXPATH 1.0 具有两个不同参数的复杂选择
【发布时间】:2013-01-15 20:44:31
【问题描述】:

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>

我只需要使用@event-source='this' 和不同的@event 来获取&lt;transition /&gt;

对此我的解决方案是选择所有带有“this”属性的&lt;transitions /&gt;,按@event 对其进行排序,然后尝试仅选择其中不同的here

<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>

但它不起作用。

【问题讨论】:

    标签: xslt xpath


    【解决方案1】:

    为了选择独特的项目,您可以使用前面的轴来比较当前匹配项和以前的匹配项,以确保它们不相同。像下面这样的 XPath 查询应该是您选择唯一项目所需的全部内容。我假设@event 属性的唯一性仅限于其他带有@event-source='this' 的过渡元素,而不是全局的。

    /root/state/transition[@event-source='this'][not(@event=preceding::transition[@event-source='this']/@event)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      相关资源
      最近更新 更多