0

我正在使用 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 属性。我真的可以在这里使用一些帮助!

4

0 回答 0