Удалить пустые атрибуты в XSLT - PullRequest
2 голосов
/ 08 августа 2011

Я пытаюсь отсортировать все элементы, а затем атрибуты, которые я заработал, однако я не могу понять, как убрать пустые атрибуты

Вот сортировка XSLT

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

<xsl:output method="xml" indent="yes"/>

<xsl:template match="@* | node()">
    <xsl:copy>

        <xsl:apply-templates >
            <xsl:sort select="local-name()"/>
        </xsl:apply-templates>

    </xsl:copy>
</xsl:template>


<xsl:template match="*[*]">

    <xsl:copy>
        <xsl:apply-templates select="@*" >
            <xsl:sort select="local-name()" />
        </xsl:apply-templates>

        <xsl:apply-templates select="*" >
            <xsl:sort select="local-name()"/>
        </xsl:apply-templates>

    </xsl:copy>
</xsl:template>

Спасибо за любую помощь

Ответы [ 2 ]

3 голосов
/ 08 августа 2011

Что ж, единственное место, где вы обрабатываете узлы атрибутов, это <xsl:apply-templates select="@*">, поэтому достаточно изменить его на <xsl:apply-templates select="@*[normalize-space()]">.

1 голос
/ 08 августа 2011
<xsl:template match="@*">
    <xsl:if test="string-length(.)!=0">
        <xsl:copy />
    </xsl:if>
</xsl:template>

<xsl:template match="node()"> <!-- replaces the "match='@* | node()'" template -->
    <xsl:copy>
        <xsl:apply-templates >
            <xsl:sort select="local-name()"/>
        </xsl:apply-templates>
    </xsl:copy>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...