从一系列地图中获取不同的值

问题描述 投票:0回答:1
xpath xslt-3.0
1个回答
0
投票

deep-equal
适用于地图,所以一种方法是

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="3.0"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  exclude-result-prefixes="#all">
  
  <xsl:variable name="sequence" select="
                  ( map { 'foo' : 1, 'bar' : () },
                    map { 'foo' : 1, 'bar' : '3' },
                    map { 'foo' : 1, 'bar' : '3' } )" as="map(xs:string,item()*)*"/>

  <xsl:output method="adaptive"/>

  <xsl:template match="/" name="xsl:initial-template">
    <xsl:sequence 
      select="fold-left($sequence, (), function($a, $m) { $a, $m[not(some $m2 in $a satisfies deep-equal($m, $m2))] })"/>
  </xsl:template>

</xsl:stylesheet>
© www.soinside.com 2019 - 2024. All rights reserved.