如何使用XSLT在XML中删除不需要的声明?

时间:2018-07-31 06:51:20

标签: xml xslt xsi

我想删除输出XML中的声明。尝试使用“排除结果前缀”,但它没有任何作用。

我的输出:

<DocumentHeader>
    <SchemaName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">AcmeCorp_MotorApplicationRequest</SchemaName>
    <SchemaVersion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">v1_0</SchemaVersion>
</DocumentHeader>

所需的输出:

<DocumentHeader>
    <SchemaName 
 xsi:type="xsd:string">AcmeCorp_MotorApplicationRequest</SchemaName>
    <SchemaVersion xsi:type="xsd:string">v1_0</SchemaVersion>
</DocumentHeader>

我的XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <xsl:output method="xml"/>
    <xsl:template match="/">
        <xsl:element name="DocumentHeader">
            <xsl:element name="SchemaName">
                <xsl:attribute name="xsi:type">xsd:string</xsl:attribute>
                <xsl:attribute name="SchemaName">
                    <xsl:value-of select="/ApplicationBatch/DocumentHeader/SchemaName"/>
                </xsl:attribute>
                <xsl:value-of select="/ApplicationBatch/DocumentHeader/SchemaName"/>
            </xsl:element>
            <xsl:element name="SchemaVersion">
                <xsl:attribute name="xsi:type">xsd:string</xsl:attribute>
                <xsl:value-of select="/ApplicationBatch/DocumentHeader/SchemaVersion"/>
            </xsl:element>
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

0 个答案:

没有答案