Проверьте, пуста ли карта в xslt - PullRequest
0 голосов
/ 18 октября 2019

Я создаю переменную карты и хочу проверить, есть ли у нее элементы.

<xsl:variable as="map(xs:string, xs:string)*" name="ancestorsMap">
        <xsl:map>
            <xsl:for-each select="$nodes">
                <xsl:variable name="ancestor" select="(ancestor::node()[not(descendant-or-self::layer)])[1]/@xml:id"/>

                <xsl:if test="exists($ancestor)">
                    <xsl:map-entry key="string(@xml:id)" select="string($ancestor)"/>
                </xsl:if>
            </xsl:for-each>
        </xsl:map>
    </xsl:variable>

<xsl:variable name="check">
            <xsl:choose>
                <xsl:when test="empty($ancestorsMap)">
                    <xsl:value-of select="'NaN'"/>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:copy-of select="$ancestorsMap"/>
                </xsl:otherwise>
            </xsl:choose>
    </xsl:variable>

Когда она пуста, на панели переменных oXygen отображается: Тип значения: map (*) 1 Значение: map {}

Я пытался fn: empty () пока

1 Ответ

0 голосов
/ 18 октября 2019

Похоже,

test="map:size($ancestorsMap) = 0"

отлично работает. Но, может быть, есть и лучшие подходы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...