我的要求是,根据我的架构验证的任何Xml文件都应符合以下条件。
OTHERWISE元素只能包含CDATA部分,而不包含任何其他部分。
实施例
有效的XML:<OTHERWISE ContentURI=""><![CDATA[<html>Good-bye</html>]]></OTHERWISE>
无效的XML:<OTHERWISE ContentURI="">ABC</OTHERWISE>
我正在尝试以下方法:
<xs:simpleContent>
<xs:restriction base="OtherwiseAtt">
<xs:pattern value="^<\!\[CDATA\[[a-zA-Z0-9]*\]\]>" />
</xs:restriction>
</xs:simpleContent>
任何东西都可以进入CDATA。我把[a-zA-Z0-9] *仅用于测试目的。
请帮帮我。
由于 萨布里
答案 0 :(得分:2)
<![CDATA[
和]]>
之间的内容由解析器处理。您的XML文件在验证之前已经过完全解析。 CDATA基本上是另一种逃避特殊字符的方法。验证器无法以您希望的方式确定元素是否包含CDATA。
验证的目的是对文档结构进行控制。它不是也不能强制执行转义文本的特定方法。
为什么您需要要求内容被CDATA转义?这听起来像是试图在早期阶段处理糟糕的设计选择。