考虑两种情况:
我有一个看起来像这样的XML:
<personinfo>
<info>
<option1>Coke</option1>
</info>
</personinfo>
我应该在option1和option2元素之间进行选择。
我有另一个看起来像这样的XML:
<personinfo>
<info>
<firstname>Yair</firstname>
<lastname>Zaslavsky</lastname>
</info>
</personinfo>
应该出现firstname和lastname(因此是一个序列)。
我尝试使用以下架构:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="optionsChoice">
<xs:choice>
<xs:element name="option1" type="xs:string"/>
<xs:element name="option2" type="xs:string"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="optionsSequence">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="personinfo">
<xs:choice>
<xs:element name="info" type="optionsSequence"/>
<xs:element name="info" type="optionsChoice"/>
</xs:choice>
</xs:complexType>
</xs:schema>
没有运气。
请记住,我必须拥有&#34; info&#34;作为两种情况下的元素名称。
如何解决此问题?
答案 0 :(得分:1)
您不能在内容模型中同时显示两个名称相同但元素不同的元素。
然而,您可以推断选择,以便personinfo
可以选择option1
或option2
,也可以选择firstname
和{{1} }:
lastname
此XSD将成功验证两个XML文档。