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