XSD架构 - 如何确保两个简单元素具有值或不具有值

时间:2013-01-08 20:43:58

标签: xsd xsd-validation

请协助,这是我想验证我的xml文件的目的:

<?xml version="1.0" encoding="UTF-8"?>
<worker>
    <name>dingo</name>
    <ssn>12345</ssn>
</worker>

我想确保两个简单元素'name'和'ssn'具有值(作为一个组)或没有任何值(作为一个组)。它们不能单独存在一个值。

我必须使用XSD架构,所以不能使用其他选项我有时会看到建议:放松NG等。 我考虑为元素'name'和'ssn'创建一个组,但是我无法找到如何为这个组创建限制以获得我的条件。

我当前的XSD文件:     

<xs:complexType name="worker">
<xs:sequence>
    <xs:element name="name" type="xs:string" minOccurs="0" "maxOccurs="1">
    <xs:element name="ssn" type="xs:positiveInteger" minOccurs="0" "maxOccurs="1">
</xs:sequence>
</xs:complexType>

2 个答案:

答案 0 :(得分:1)

你必须做

<xs:complexType name="worker">
   <xs:group ref="workerGrp" minOccurs="0"/>
</xs:complexType>

<xs:group name="workerGrp">
  <xs:sequence>
    <xs:element name="name" type="xs:string">
    <xs:element name="ssn" type="xs:positiveInteger">
  </xs:sequence>
</xs:group>

答案 1 :(得分:1)

<xs:complexType name="worker">
  <xs:sequence minOccurs="0">
    <xs:element name="name" type="xs:string">
    <xs:element name="ssn" type="xs:positiveInteger">
  </xs:sequence>
</xs:complexType>