我有一大堆类似的程序,大致如此返回xml:
<result>
<query>
</query>
<transaction>
<revenue>
...
</revenue>
</transaction>
</result>
查询元素始终具有相同的结构。另一方面,收入元素具有六种结构中的一种,具体取决于具体的程序。虽然它们都包含类似的数据,但由于底层系统(我无法解决这个问题),每个变体都完全不同。这不仅仅是每个属性的一些附加属性,它们完全不同。
我正在尝试制作一个XSD来验证任何程序返回的XML。我有一个XSD用于收入元素的每个变体,但我想将它们合并为一个将验证任何元素。
我尝试过使用:
<xs:choice>
<xs:element name="revenue">
#variation
</xs:element>
<xs:element name="revenue">
#Another variation
</xs:element>
<xs:element name="revenue">
#Another variation
</xs:element">
</xs:choice>
但XSD不喜欢具有相同名称的元素。有没有办法解决这个问题或以其他方式实现我想要做的事情?
答案 0 :(得分:0)
需要更像这样:
<xs:element name="revenue">
<xs:complexType>
<xs:choice>
#variation
#Another variation
#Another variation
</xs:choice>
</xs:complexType>
</xs:element>
但由于UPA,它仍然不容易,因为您可能希望该属性与内容模型一样多变。所以细节取决于变化的样子。
如果您为不同类型的收入使用不同的元素名称会更容易,因为在XSD中默认情况下验证规则是元素名称的函数。