Skip to content

Commit 1d00b5a

Browse files
authored
Harvester / CSW / Avoid using uneeded nested operator when only one logical operator is used. (#9166)
1 parent 084e2e7 commit 1d00b5a

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

web/src/main/webapp/xml/csw/harvester-csw-filter.xsl

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,35 @@
66
version="2.0">
77

88
<xsl:template match="filters">
9+
<xsl:variable name="operators"
10+
select="distinct-values(filter/condition[. != ''])"/>
11+
<xsl:variable name="isUsingOneLogicalOperator"
12+
select="count($operators) = 1"/>
13+
914
<ogc:Filter>
10-
<xsl:call-template name="processFilters">
11-
<xsl:with-param name="filters" select="." />
12-
<xsl:with-param name="position" select="count(./filter)" />
13-
</xsl:call-template>
15+
<xsl:choose>
16+
<xsl:when test="$isUsingOneLogicalOperator">
17+
<xsl:variable name="condition">
18+
<xsl:call-template name="getCondition">
19+
<xsl:with-param name="condition" select="$operators[1]" />
20+
</xsl:call-template>
21+
</xsl:variable>
22+
<xsl:element name="{$condition}" namespace="http://www.opengis.net/ogc">
23+
<xsl:for-each select="filter">
24+
<xsl:call-template name="processFilter">
25+
<xsl:with-param name="filter" select="current()" />
26+
</xsl:call-template>
27+
</xsl:for-each>
28+
</xsl:element>
29+
30+
</xsl:when>
31+
<xsl:otherwise>
32+
<xsl:call-template name="processFilters">
33+
<xsl:with-param name="filters" select="." />
34+
<xsl:with-param name="position" select="count(./filter)" />
35+
</xsl:call-template>
36+
</xsl:otherwise>
37+
</xsl:choose>
1438
</ogc:Filter>
1539
</xsl:template>
1640

0 commit comments

Comments
 (0)