Pergunta

Eu preciso criar um esquema XML que valida uma estrutura de árvore de um documento XML. Eu não sei exatamente o nível da árvore ocorrências ou profundidade.

exemplo XML:

<?xml version="1.0" encoding="utf-8"?>
<node>
  <attribute/>
  <node>
    <attribute/>
    <node/>      
  </node>
</node> 

Qual é a melhor maneira para validá-lo? Recursão?

Foi útil?

Solução

se você precisar de uma declaração de tipo recursiva, aqui está um exemplo que pode ajudar:

<xs:schema id="XMLSchema1"
    targetNamespace="http://tempuri.org/XMLSchema1.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/XMLSchema1.xsd"
    xmlns:mstns="http://tempuri.org/XMLSchema1.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:element name="node" type="nodeType"></xs:element>

  <xs:complexType name="nodeType">    
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="node" type="nodeType"></xs:element>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

Como você pode ver, isso define um esquema recursiva com apenas um nó chamado "nó", que pode ser tão profundo como desejado.

Outras dicas

XSD, de fato, permitir recursão de elementos. Aqui é um exemplo para você

<xsd:element name="section">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element ref="title"/>
      <xsd:element ref="para" maxOccurs="unbounded"/>
      <xsd:element ref="section" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

Como você pode ver o elemento seção contém um elemento filho que é de secção tipo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top