我收到的是每天运行XSLT进程的XML;然而,偶尔的特殊性格导致这种情况破裂。我正在寻找一些可以清理XML和XML的工具。用正确的html数字编码替换特殊字符。只需要一个实用工具或想法。
从评论中更新
XML有时会包含一个 special等特殊字符 比
¢
所以我需要一种方法来改变 标签的特殊字符
答案 0 :(得分:1)
如果您的XSLT代码无法处理此输入XML,则输入实际上不是XML,或者您将其错误地呈现给XSLT处理器。最可能的解释是文件的编码不是文件开头的XML声明所说的;或者可能没有XML声明,因此处理器假定为UTF-8,但它实际上是iso-8859-1。解决方案可能就像在文件的开头添加XML声明一样简单,以将编码声明为iso-8859-1。
答案 1 :(得分:0)
“特殊”字符(非ASCII字符的Unicode字符)是有效的XML,因此您应该真正修复解析器。如果这不起作用,请通过以下过滤器管道代码:
#!/usr/bin/env python
import sys
input = sys.stdin.read().decode('UTF-8')
for c in input:
sys.stdout.write('&#%04d;' % ord(c) if c >= 128 else c)
将UTF-8
替换为文档的编码。将上述代码保存到xmlentities
,然后调用
python xmlentities <broken.xml >fixed.xml
答案 2 :(得分:0)
我无法重现此问题
此样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
使用此输入:
<t>¢</t>
输出:
<?xml version="1.0" encoding="UTF-16"?>
<t>¢</t>