我是XSLT的新手,需要帮助从XML中删除属性。除了删除属性
之外,XSLT的输出中没有任何内容可以更改xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03
pain.001.001.03.xsd"
来自'文件'
<?xml version="1.0" encoding="utf-8"?>
<Document
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03
pain.001.001.03.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
<CstmrCdtTrfInitn>
答案 0 :(得分:0)
我认为您要从根元素中删除命名空间,请尝试使用以下代码删除命名空间属性
{{1}}
答案 1 :(得分:0)
您必须在脚本中包含属性的空模板 省略:
<xsl:template match="@*[name() = 'xsi:schemaLocation']"/>
要复制源而不做任何其他更改,您还需要 身份模板。
有关工作示例,请参阅http://xsltransform.net/bEJaofE
上述模板实际上会删除每个 xsi:schemaLocation 属性, 无论其在文件中的位置如何。 如果您只想从根节点中删除此属性, 将模板更改为:
<xsl:template match="/*/@*[name() = 'xsi:schemaLocation']"/>
注意添加/*/
以仅匹配根节点的属性,无论其名称如何。
答案 2 :(得分:0)
最好使用xsl:copy-of />
,请尝试以下
<xsl:template match="Document/node()">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>`