我有如下的XML文件。
<FIRST.NAME>
之类的标签,我需要将<FIRST.NAME>
替换为<FIRST_NAME>
。我必须在每个XML文件中更改大约40个标记。
我怎样才能实现这两件事,谁能让我朝着正确的方向前进?
答案 0 :(得分:0)
当你说“十六进制值”时,这个答案假设你的意思是十六进制字符引用。如果这不正确,请澄清。
只需通过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>
XSLT 1.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>