尝试将xmlns:xsi属性添加到元素

时间:2013-07-08 20:43:05

标签: attributes xslt-1.0 xml-namespaces xsi

我正在使用XSLT 1.0生成XML文档,其中所需的输出如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" **xmlns:xsi="
       http://www.w3.org/2001/XMLSchema-instance"**>

...

    </Document>

我尝试过以下几项内容:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="no"/>
    <xsl:template match="/VendorPayments">
      <xsl:element name="Document" namespace="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
        <xsl:attribute name="xsi" namespace="xmlns">http://www.w3.org/2001/XMLSchema-instance</xsl:attribute>

    ...

    </xsl:template>
</xsl:stylesheet>

...以及xsl:attribute标记的此变体:

<xsl:attribute name="xsi" namespace="xmlns">
    <xsl:text>http://www.w3.org/2001/XMLSchema-instance</xsl:text>
</xsl:attribute>

......而且这一个:

<xsl:attribute name="xsi" namespace="xmlns">
    <xsl:value-of select="'http://www.w3.org/2001/XMLSchema-instance'"/>
</xsl:attribute>

在每种情况下,我的结果都是一样的:

<?xml version="1.0" encoding="utf-8"?>
<Document xp_0:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xp_0="xmlns">
    ...
</Document>

我还尝试完全删除xsl:attribute标记,而是修改xsl:stylesheet标记,如下所示:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

...但这会产生以下结果:

<?xml version="1.0" encoding="utf-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
    ...
</Document>

...除了缺少的xmlns:xsi属性外,这是正确的。我真的可以在这里使用一些帮助!

0 个答案:

没有答案