我有一个简单的XML文件,有3个基本元素。第一个是必需的(minOccurs = 1),第二个和第三个是可选的。但是,如果使用第二个元素,那么我希望make第三个元素。他是XML:
<?xml version="1.0" encoding="utf-8" ?>
<resultado>
<consulta fonte="1" origem="Origem">0</consulta>
<status resultado="REGULAR">0</status>
<informacoes>
<informacao tipo="CPF" dado="23340058865"></informacao>
<informacao tipo="Nome" dado="Nome Titular CPF"></informacao>
<informacao tipo="Endereco" dado="Rua Sem Fim, 48"></informacao>
<informacao tipo="Cidade" dado="Fim do Mundo"></informacao>
<informacao tipo="Estado" dado="TO"></informacao>
<informacao tipo="Cep" dado="93847832"></informacao>
<informacao tipo="Fone" dado="5938476354"></informacao>
</informacoes>
</resultado>
如果status
元素已通过,则informacoes
成为必需元素
以下是我的XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="codigoresultado">
<xs:restriction base="xs:unsignedByte">
<xs:enumeration value="0"/>
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
<xs:enumeration value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="resultadoconsulta">
<xs:restriction base="xs:unsignedByte">
<xs:enumeration value="0"/>
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="resultado">
<xs:complexType>
<xs:sequence>
<xs:element name="consulta" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="resultadoconsulta">
<xs:attribute name="fonte" type="xs:integer" use="required" />
<xs:attribute name="origem" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="status" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="codigoresultado">
<xs:attribute name="resultado" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="informacoes" minOccurs="0" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="informacao">
<xs:complexType>
<xs:attribute name="tipo" type="xs:string" use="required" />
<xs:attribute name="dado" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
这可能吗?如果是的话,怎么样? 谢谢!
答案 0 :(得分:1)
我唯一能看到的方法是将这两个元素捆绑成一个自己的<xs:sequence>
,这是可选的。
如果存在,则必须存在两个元素(或者两者都可以省略)。