解析和验证之间的实际区别是什么? 由于解析本身可以识别消息结构,我们为什么要进行验证?
如果消息不是根据为MRM解析器定义的结构,解析本身会抛出错误,那么为什么必须使用“内容和值”设置验证属性?
答案 0 :(得分:3)
首先,只有具有消息模型的解析器才能进行验证,因此XMLNSC / SOAP(带有模式),MRM,DFDL和DataObject。
对于没有验证的基于XMLNSC的解析器,消息将被视为自定义,只有在消息格式不正确时才会抛出异常。
启用验证后,基于XMLNSC的解析器将验证消息是否符合emssage模型,并将检查架构中定义的所有限制/架构方面的有效性。
DFDL和MRM是基于模型的解析器,没有消息模型就无法使用这些解析器,因此它们总是根据模型检查消息内容。与基于XMLNSC的解析器相比,具有这些解析器的非验证解析具有更强的约束。禁用验证后,这些解析器会检查数据是否可以解释为模型的实例。
验证MRM和DFDL解析器时还会检查值约束,正确的数据类型正确并检查排序约束。