我正在尝试生成 XML 输出,并且我已经创建了一个 XSLT 来执行此操作。但是,根节点缺少一些名称间距。如何将命名空间添加到 XML 结构的根元素。这是我正在使用的 XSLT:
XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:doc="urn:sapcom:document:sap:rfc:functions" xmlns:r="http://www.castiron.com/response" exclude-result-prefixes="r">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:element name="imageScene7Request">
<xsl:element name="productIds">
<xsl:for-each select="r:productGetAllByIdsResponse/r:payload/r:products">
<xsl:value-of select="r:id"/>
<xsl:if test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
我想添加到根目录的命名空间http://www.castiron.com/response
输入 XML
<?xml version="1.0" encoding="UTF-8"?>
<productGetAllByIdsResponse xmlns="http://www.castiron.com/response">
<rcode>0</rcode>
<rmessage>Success</rmessage>
<payload>
<products>
<id>4022280</id>
</products>
<products>
<id>4022280</id>
</products>
</payload>
</productGetAllByIdsResponse>
您会看到,当您运行时,它会为您提供:
<?xml version="1.0" encoding="utf-8"?>
<imageScene7Request>
<productIds>4022280,4022280</productIds>
</imageScene7Request>
但是我想要这个:
<?xml version="1.0" encoding="utf-8"?>
<imageScene7Request xmlns="http://www.castiron.com/response">
<productIds>4022280,4022280</productIds>
</imageScene7Request>
回复@dbaseman
这很有效,但是它随后为第二个标签提供了一个空命名空间,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<imageScene7Request xmlns="http://www.castiron.com/response">
<productIds xmlns="">4022280,4022280</productIds>
</imageScene7Request>
有没有办法消除它?