在我的一个xml有效负载中,我需要在下面一行之后添加一个命名空间。
<?xml version="1.0" encoding="UTF-8"?>
<ep:Document xmlns:ep="namespace here"
xmlns:gk="namespace here"
xmlns:sh="namespace here" schemaVersion="" creationDate="">
之后我要添加命名空间xmlns:xsi =“http://www.w3.org/2001/XMLSchema-instance”&gt;
预期输出应为
<?xml version="1.0" encoding="UTF-8"?>
<ep:Document xmlns:ep="namespace here"
xmlns:gk="namespace here"
xmlns:sh="namespace here" schemaVersion="" creationDate=""xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
你能帮忙吗?
让我详细说明我的要求。在实际的输入消息中,我获得的负载没有任何名称空间。它看起来如下。
<?xml version="1.0" encoding="UTF-8"?>
<document>
</document>
在b / w文件中我们有剩余的有效载荷。
之后我使用XSLT代码在有效负载中添加名称空间和前缀。 下面是我的XSLT代码。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ep="namespace here"
xmlns:sh="namespace here"
xmlns:gk="namespace here">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Document">
<ep:Document>
<xsl:apply-templates select="node()|@*"/>
</ep:Document>
</xsl:template>
<xsl:template match="Extension|Extension//*">
<xsl:element name="gk:{name()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<xsl:template match="Header|Header//*">
<xsl:element name="sh:{name()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:stylesheet>
使用此代码后,我得到的输出如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<ep:Document xmlns:ep="namespace here"
xmlns:gk="namespace here"
xmlns:sh="namespace here" schemaVersion="" creationDate="">
和其余的有效载荷。所以我需要在模式版本之后再添加一个名称空间,并在帖子中提到的现有代码中创建。
答案 0 :(得分:0)
如果将所需的命名空间声明添加到xsl:stylesheet
元素,即:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ep="namespace here"
xmlns:sh="namespace here"
xmlns:gk="namespace here"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
它可能出现在输出的根ep:Document
元素的开始标记内,就像您期望的那样。我说&#34;可能&#34;,因为XSLT处理器不必包含冗余命名空间声明。
您无法控制属性和命名空间声明在开始标记中的显示顺序。根据定义,订单无关紧要。