我已经为此苦苦挣扎了一段时间。我有一个多语言 Web 应用程序,可以在某些时候输出 XML。该 XML 可以包含任何语言,因此我的清理方法是禁止插入某些破坏 XML 的字符。那并在 CDATA 中尽可能多地包装,但我在属性中有大量内容。我不想禁止特殊字符,因为括号、句点、破折号、刻度和撇号等完全有效的字符一直都在使用并且它们有效。
去除所有会破坏 XML 属性的字符但保持语言完整的最佳方法是什么?
更新:
我发现:http ://en.wikipedia.org/wiki/CDATA#CDATA-type_attribute_value ,这表明我可以使用 DTD 将属性描述为 CDATA 部分;然而,这似乎不是真的。
<?xml version="1.0" ?>
<!DOCTYPE foo [
<!ELEMENT foo EMPTY>
<!ATTLIST foo a CDATA #REQUIRED>
]>
<foo a="•"><![CDATA[ • ]]> </foo>
任何验证者都会抱怨公牛不是属性中的实体。如果您删除该属性,它将是有效的。另外我听说模式是要走的路,所以如果像上面这样的事情是可能的,但使用 XML 模式,那就太棒了。
谢谢!