如何替换xml属性

时间:2018-05-28 05:22:53

标签: xslt

通过XSLT编辑XML的属性。这个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"/>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:3)

首先,您使用相同的转换转换所有

<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"/>

答案 1 :(得分:0)

 <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.