Как заменить атрибуты xml - PullRequest
0 голосов
/ 28 мая 2018

Редактирование атрибутов XML через XSLT.Этот XML-документ содержит от 10 до 15 атрибутов этого типа.

Example:

<class student="TUTORIAL" Book_type="science" num_pages="250" online_license="yes"  tag="online library"/>

result

<class student="TUTORIAL" Book-type="science" num-pages="250" online-license="yes"  tag="online library"/>

Ответы [ 2 ]

0 голосов
/ 28 мая 2018
 <xsl:template match="class">
        <xsl:copy>

            <xsl:attribute name="Book-type">
                <xsl:value-of select="@Book_type"/>
            </xsl:attribute>
            <xsl:attribute name="num-pages">
                <xsl:value-of select="@num_pages"/>
            </xsl:attribute>
            <xsl:attribute name="online-license">
                <xsl:value-of select="@online_license"/>
            </xsl:attribute>
            <xsl:apply-templates select="@* except (@Book_type|@num_pages|@online_license)"/>
        </xsl:copy>
    </xsl:template>
Check this code if it is useful for you.
0 голосов
/ 28 мая 2018

Сначала вы преобразуете все с идентичным преобразованием

<xsl:template match="node() | @*">
    <xsl:copy>
        <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
</xsl:template>

после этого атрибута дескриптора, как показано ниже

<xsl:template match="@*[contains(name(.), '_')]">
    <xsl:attribute name="{translate(name(), '_', '-')}">
        <xsl:value-of select="."/>
    </xsl:attribute>
</xsl:template>

Выход

<class student="TUTORIAL" Book-type="science" num-pages="250" online-license="yes" tag="online library"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...