2010-08-22 5 views
1

세 가지 기본 요소가있는 간단한 XML 파일이 있습니다. 첫 번째 매개 변수는 필수이며 (minOccurs = 1) 두 번째 매개 변수와 세 번째 매개 변수는 선택 사항입니다. 그러나 두 번째 요소가 사용되면 세 번째 요소를 필요로합니다. status 요소가 전달됩니다첫 번째 요소가 사용될 때 XSD에서 두 번째 요소가 필요함

<?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> 

경우, informacoes는 필수 요소가된다 : 그는 XML입니다.

<?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> 

수 있다는 것입니다
아래 내 XSD입니까? 그렇다면 어떻게? 감사합니다.

+0

좋은 아이디어 Marc ... 답변으로 게시하여 응답하도록 플래그를 지정할 수 있으며 크레딧을받을 수 있습니다. 그것은 효과가있다! – Pascal

답변

1

내가 볼 수있는 유일한 방법은이 두 요소를 <xs:sequence> (선택 사항)으로 묶는 것입니다.

존재하는 경우 두 요소가 모두 있어야합니다 (또는 둘 다 생략 할 수 있음).

+0

두 가지 요소를 ''에 묶는 것이 다른 방법입니다. 이것은 또한 존재할 수있는 요소들 모두 또는 어느 것도 필요로하지 않을 것이지만,이 두 요소가 임의의 순서로 나타나도록 허용 할 것이다. – jasso

관련 문제