如何消除XML文档中的十六进制值并重命名标记
我有如下XML文件如何消除XML文档中的十六进制值并重命名标记,xml,xslt,Xml,Xslt,我有如下XML文件 由于具有十六进制值,此类型的XML文件SSIS XML任务不接受 像这样的标签,我需要用替换 我必须在每个XML文件中更改大约40个标记 我怎样才能做到这两件事,有人能给我指出正确的方向吗?这个答案假设你说的“十六进制值”是指十六进制字符引用。如果这是不正确的,请澄清 只要通过XSLT处理器运行XML,就可以解析十六进制引用。(我使用Xalan、Saxon 6.5.5和Saxon HE/PE/EE 9.3.05进行了测试。) 除了身份转换之外,您只需要另一个模板来重命名元素
这样的标签,我需要用
替换
我怎样才能做到这两件事,有人能给我指出正确的方向吗?这个答案假设你说的“十六进制值”是指十六进制字符引用。如果这是不正确的,请澄清 只要通过XSLT处理器运行XML,就可以解析十六进制引用。(我使用Xalan、Saxon 6.5.5和Saxon HE/PE/EE 9.3.05进行了测试。) 除了身份转换之外,您只需要另一个模板来重命名元素 XML输入
<some.doc>
<some.element attr="test">
<another.element>Here is a hex ref: Ω</another.element>
<another.element>Here is a hex ref: Σ</another.element>
</some.element>
</some.doc>
<some_doc>
<some_element attr="test">
<another_element>Here is a hex ref: Ω</another_element>
<another_element>Here is a hex ref: Σ</another_element>
</some_element>
</some_doc>
这是一个十六进制参考:Ω;
这是一个十六进制参考:Σ;
XSLT1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="text()|processing-instruction()|comment()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{translate(name(),'.','_')}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
XML输出
<some.doc>
<some.element attr="test">
<another.element>Here is a hex ref: Ω</another.element>
<another.element>Here is a hex ref: Σ</another.element>
</some.element>
</some.doc>
<some_doc>
<some_element attr="test">
<another_element>Here is a hex ref: Ω</another_element>
<another_element>Here is a hex ref: Σ</another_element>
</some_element>
</some_doc>
这是一个十六进制参考:Ω
这是一个十六进制参考∑
感谢您的快速回复。这对我来说很好。在我的源XML中使用十六进制有一些十六进制符号,这些符号类似于^(不完全是),当我将该XML作为SSIS中XML任务的源时,如何删除或克服这些符号。