我为此挣扎了一段时间。 我有一个多语言的网络应用程序, 可以在某个时候输出 XML 。 这个 XML 可以包含任何语言, 因此我的消毒方法就是禁止某些将 XML 打破的字符被插入。 这个程序并尽可能在 CDATA 中包扎, 但我在属性中有一大堆内容。 我不想拒绝特殊字符, 因为像括号、 句、 句号、 划线、 划线、 划线和 代号这样的完全有效的字符总是被使用, 并且它们一直在工作 。
将所有会打破 XML 属性, 但保留语言完整的最佳方式是什么?
UPDATE:
I found: http://en.wikipedia.org/wiki/CDATA#CDATA-type_attribute_value , which indicated to me that I can describe an attribute as a CDATA section using DTD; however, this is not true it seems.
<?xml version="1.0" ?>
<!DOCTYPE foo [
<!ELEMENT foo EMPTY>
<!ATTLIST foo a CDATA #REQUIRED>
]>
<foo a="•"><![CDATA[ • ]]> </foo>
任何验证者都会抱怨公牛不是属性中的一个实体。 如果您删除属性, 它将会有效 。 另外, 我听到预案是前进的道路, 所以, 如果像上面那样的事情是可能的, 但是使用 XML 示玛, 那将会是真棒 。
谢谢!