我正在根据第三方规范将一些数据序列化为XML文件。规范似乎是由XMLSpy生成的。我知道可选元素由minOcc = 0指定。我也理解,缺少可选数据可以通过空元素或XML文档中缺少在XML文档中表示。也就是说,一些第三方系统更喜欢以特定方式处理丢失的可选数据。即一些人更喜欢缺少元素,另一些人则更喜欢元素存在,但是空洞。有没有办法单独告诉架构,或者xsd文件如何处理缺少可选元素?
答案 0 :(得分:2)
有没有办法单独从架构中判断,或者可能是xsd文件 如何处理缺少的可选元素?
不,一般情况下,因为存在或不存在的任何元素的语义是由使用XML的应用程序定义的,而不是定义其有效性的模式。
正如您所提到的,XSD可能需要一个元素(minOccurs="1"
)或允许它不存在(minOccurs="0"
)。如果需要存在,则可以允许其为空(nillable="true"
)或不为nillable="false"
)。这些有效性限制是由您通过XSD控制的,但本身并不是处理可选元素的方法。
你提到序列化。在那里,出现了关于如何在序列化为XML的数据中表示空值的问题。例如,请参阅Blaise Doughan对How to represent null value as empty element with JAXB?的回答如果您正在使用其他应用程序执行序列化,请搜索特定于这些应用程序的类似答案。但是,在XSD级别,只有您所控制的上述类型的有效性限制。剩下更多的自由度,如果这些对您很重要,请使用XML查看应用程序的配置以进一步完善。