xsd的约束是根据xml中某一个元素值
看例子:
xml文档:
例1:
<student>
<studentID>0070</studentID>
<name></name>
</student>
例2:
<student>
<studentID>0070</studentID>
<name>jack</name>
</student>
例3:
<student>
<studentID></studentID>
<name>jack</name>
</student>
xsd文档: (有错误)
<xs:group name="s1">
<xs:sequence>
<xs:element name="studentID">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="name" type="xs:string" />
</xs:sequence>
</xs:group>
<xs:group name="s2">
<xs:sequence>
<xs:element name="studentID">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="0" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="student">
<xs:complexType>
<xs:choice><xs:group ref="s1"></xs:group><xs:group ref="s2"></xs:group>
</xs:choice>
</xs:complexType>
</xs:element>
意思是当学号不为空的时候,名字可以为空也可以不为空;当学号为空的时候,名字不可以为空。这个xsd这样写不行啊,元素名"studentID"和"name"命名冲突。谁能告诉我这个XML相应的xsd约束该怎么写呢???
[解决办法]
自己写了一下,没写出来!水平有限,力挺大牛们的到来!