是否开始使用CDATA进行重大改变?

kic*_*sit 5 xml xsd cdata

为了与客户的应用程序交互,我们使用XML文档.也就是说,我们通过HTTP发送XML并以相同的方式接收响应XML文档.客户指定了两个描述请求和回复格式的XML模式.一切正常,直到有一天客户开始在响应XML中使用CDATA部分.我们设置我们的解析器没有注意CDATA部分,所以我们没有解释它们.

我的问题是:谁在这里弄错了?我试图在XML标准中找到答案,但我仍然不确定.我想我不能在XSD中使用或不使用CDATA,是吗?如果是这样,是不是就XSD达成一致意见,但是必须就CDATA部分达成单独的协议?或者有人必须准备解析CDATA和普通文本?

我对你的个人观点和任何官方声明都很感兴趣.谢谢!

Que*_*tin 6

CDATA是XML的基本部分.不支持它意味着解析器被破坏(而不是真正的XML解析器(它能够处理包含文本,CDATA,实体,其他元素,注释等等的元素等)).

自从我在另一个答案的评论中提到它以来,我现在有一个在这里重复它的冲动.不期望XML中的CDATA就像不期待海中的鱼一样.

  • 在解析文档时(通常在生成文档时),您不必关心*如何表达结构.它应该由解析器无形地处理.让解析器的用户写一些像`$ foo = $ bar-> has_cdata的东西?decode_cdata($ bar-> cdata_content):$ bar-> non_cdata_content;`只是笨蛋.它也变得无法使用,因为您可以随意进入和退出模式CDATA模式(因此部分元素内容位于CDATA块中,而部分内容不是). (3认同)

Ned*_*der 6

许多XML解析器将文本和CDATA分开,这是不幸的.错误是你的:普通文本块和CDATA之间没有语义差异,因此发送者可以根据手头文本的需要自由选择它们.

好消息是,调整代码应该是一件简单的事情.