0

我有这个 XML:

<items>
    <item name="a_1"/>
    <item name="a_2"/>
    <item name="b_1"/>
    <item name="b_2"/>
    <item name="b_3"/>
    <item name="c_1"/>
    <item name="c_2"/>
    <item name="d_1"/>
</items>

我想选择完全以_1or结尾的项目_2。例如,a_1anda_2可以,但是b_1and b_2are not,因为b_3存在。d_1不行,因为d_2不存在。所以输出将是:

<items>
    <item name="a_1"/>
    <item name="a_2"/>
    <item name="c_1"/>
    <item name="c_2"/>
</items>
4

2 回答 2

1

使用 XSLT 2.0,您可以先分组,然后检查every .. satisfies

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output indent="yes"/>

<xsl:param name="wanted-suffixes" select="'1', '2'"/>

<xsl:template match="items">
  <xsl:copy>
    <xsl:for-each-group select="item" group-by="substring-before(@name, '_')">
      <xsl:if test="count(current-group()) eq count($wanted-suffixes)
                    and (every $item in current-group() satisfies 
                        (some $suffix in $wanted-suffixes satisfies ends-with($item/@name, $suffix)))">
         <xsl:sequence select="current-group()"/>
      </xsl:if>
    </xsl:for-each-group>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>
于 2013-05-30T14:45:13.147 回答
0

您还可以使用 end-with 函数。

http://www.xsltfunctions.com/xsl/fn_ends-with.html

于 2013-05-30T14:47:17.030 回答