我正在尝试创建一个验证多个元素组合的XML Schema 1.0。
例如,
是否可以在架构中创建可能的元素 - 值组合列表? 喜欢, 仅在
时有效A = 1&& B = 2
A = 2&& B = 4
通过示例
<Full>
<A>1</A>
<B>2</B>
</Full>
<Full>
<A>2</A>
<B>4</B>
</Full>
失败示例
<Full>
<A>2</A>
<B>2</B>
</Full>
<Full>
<A>1</A>
<B>4</B>
</Full>
我还不能使用XML Schema 1.1。 有没有什么好方法可以将这些逻辑放在一个模式中?
对于这种困惑感到抱歉,我只是重写了我的问题。
答案 0 :(得分:0)
根据您的要求在下面设置: -
minOccurs =“0” - 对于零出现或超过
minOccurs =“1” - 至少一次出现或超过
maxOccurs =“unbounded”:如果您想使用无限次,请设置此项
maxOccurs =“1”:如果您只想一次设置此项
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="FULL">
<xs:complexType>
<xs:sequence>
<xs:element name="A" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="B" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="C" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
假设您正在传递所有三个单独的XML,(不是作为一个完整的XML)
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="FULL">
<xs:complexType>
<xs:sequence>
<xs:element name="A" type="xs:int" minOccurs="1" maxOccurs="1"/>
<xs:element name="B" type="xs:int" minOccurs="0" maxOccurs="1"/>
<xs:element name="C" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="FULL">
<xs:complexType>
<xs:sequence>
<xs:element name="A" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:pattern value="[1-2]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="B" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:pattern value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="C" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>