如何为XSD架构中的2种元素类型强制至少出现一次
我需要为这个场景开发一个xsd。其中我有两个类型为Server1和Server2的元素。Server1和Server2可以出现任意数量的事件,但至少有一个事件是必需的,即Server1或Server2如何为XSD架构中的2种元素类型强制至少出现一次,xsd,Xsd,我需要为这个场景开发一个xsd。其中我有两个类型为Server1和Server2的元素。Server1和Server2可以出现任意数量的事件,但至少有一个事件是必需的,即Server1或Server2 <element name="Server1"> <complexType> <sequence> <element name="hostName" type="string"/> <element name="por
<element name="Server1">
<complexType>
<sequence>
<element name="hostName" type="string"/>
<element name="portNumber" type="integer"/>
<element name="userName" type="string"/>
</sequence>
</complexType>
</element>
<element name="Server2">
<complexType>
<sequence>
<element name="hostName" type="string"/>
<element name="portNumber" type="integer"/>
</sequence>
</complexType>
</element>
谢谢
Ravi您可以将它们包装到模式元素中,并将maxOccurs属性设置为unbounded
样本:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<element name="root">
<complexType>
<choice maxOccurs="unbounded">
<element name="Server1">
<complexType>
<sequence>
<element name="hostName" type="string"/>
<element name="portNumber" type="integer"/>
<element name="userName" type="string"/>
</sequence>
</complexType>
</element>
<element name="Server2">
<complexType>
<sequence>
<element name="hostName" type="string"/>
<element name="portNumber" type="integer"/>
</sequence>
</complexType>
</element>
</choice>
</complexType>
</element>
</schema>
我不确定这是否是最好的选择,但有一种可能是将
Server1
和Server2
仅仅作为类型名称,然后创建一个元素,它是Server1
和Server2
的联合体
<xsd:comlexType name=Server1>
<sequence>
// ...
</sequence>
</xsd:complextype>
<xsd:complexType name=Server2>
// ...
</xsd:complexType>
<element name="Server">
<xsd:union memberTypes = "Server1 Server2" />
</element>
// ...
// ...
使用引用可能比使用嵌套元素更好(从长远来看,这会使维护更容易),但这绝对是正确的方法