Tutorial de XML

XML INÍCIO Introdução ao XML XML Como usar Árvore XML Sintaxe XML Elementos XML Atributos XML Namespaces XML Exibição XML XML HttpRequest Analisador de XML XML DOM XML XPath XML XSLT XML XQuery XML XLink Validador de XML XML DTD Esquema XML Servidor XML Exemplos XML Teste de XML Certificado XML

XML AJAX

Introdução AJAX AJAX XML Http Solicitação AJAX Resposta AJAX Arquivo XML AJAX PHP AJAX ASP AJAX Banco de dados AJAX Aplicativos AJAX Exemplos AJAX

XML DOM

Introdução ao DOM Nós DOM Acesso ao DOM Informações do nó DOM Lista de nós DOM Travessia do DOM Navegação DOM Valores de obtenção do DOM Nós de alteração do DOM Remoção de nós do DOM Substituir nós DOM DOM Criar nós DOM Adicionar nós Nós clones DOM Exemplos de DOM

Tutorial XPath

Introdução ao XPath Nós XPath Sintaxe XPath Eixos XPath Operadores XPath Exemplos de XPath

Tutorial XSLT

Introdução ao XSLT Idiomas XSL Transformação XSLT XSLT <modelo> XSLT <valor-de> XSLT <para-cada> XSLT <classificar> XSLT <if> XSLT <escolha> Aplicar XSLT XSLT no cliente XSLT no servidor XSLT Editar XML Exemplos de XSLT

Tutorial XQuery

Introdução ao XQuery Exemplo de XQuery XQuery FLWOR XQuery HTML Termos de XQuery Sintaxe XQuery Adicionar XQuery Seleção de XQuery Funções XQuery

XML DTD

Introdução DTD Blocos de construção de DTD Elementos DTD Atributos DTD Elementos DTD vs Attr Entidades DTD Exemplos de DTD

Esquema XSD

Introdução ao XSD XSD Como fazer XSD <esquema> Elementos XSD Atributos XSD Restrições XSD

Complexo XSD

Elementos XSD XSD vazio Apenas elementos XSD Somente texto XSD XSD Misto Indicadores XSD XSD <qualquer> XSD <qualquer atributo> Substituição XSD Exemplo de XSD

Dados XSD

Cadeia XSD Data XSD XSD Numérico XSD Misc Referência XSD

Serviços da Web

Serviços XML XML WSDL XML SOAP XML RDF XML RSS

Referências

Tipos de nós DOM Nó DOM Lista de nós DOM DOM NamedNodeMap Documento DOM Elemento DOM Atributo DOM Texto DOM DOM CDATA Comentário DOM DOM XMLHttpRequest Analisador de DOM Elementos XSLT Funções XSLT/XPath

Indicadores XSD


Podemos controlar COMO os elementos devem ser usados ​​em documentos com indicadores.


Indicadores

São sete indicadores:

Indicadores de pedidos:

  • Tudo
  • Escolha
  • Seqüência

Indicadores de ocorrência:

  • maxOcorre
  • minOcorre

Indicadores do grupo:

  • Nome do grupo
  • nome do grupo atributo

Indicadores de pedidos

Os indicadores de ordem são usados ​​para definir a ordem dos elementos.

Todos os indicadores

O indicador <all> especifica que os elementos filho podem aparecer em qualquer ordem e que cada elemento filho deve ocorrer apenas uma vez:

<xs:element name="person">
  <xs:complexType>
    <xs:all>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:all>
  </xs:complexType>
</xs:element>

Observação: Ao usar o indicador <all>, você pode definir o indicador <minOccurs> como 0 ou 1 e o indicador <maxOccurs> só pode ser definido como 1 (os <minOccurs> e <maxOccurs> são descritos posteriormente).

Indicador de escolha

O indicador <choice> especifica que um elemento filho ou outro pode ocorrer:

<xs:element name="person">
  <xs:complexType>
    <xs:choice>
      <xs:element name="employee" type="employee"/>
      <xs:element name="member" type="member"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

Indicador de sequência

O indicador <sequence> especifica que os elementos filho devem aparecer em uma ordem específica:

<xs:element name="person">
   <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>


Indicadores de Ocorrência

Os indicadores de ocorrência são usados ​​para definir com que frequência um elemento pode ocorrer.

Observação: para todos os indicadores "Ordem" e "Grupo" (qualquer, todos, escolha, sequência, nome do grupo e referência do grupo), o valor padrão para maxOccurs e minOccurs é 1.

Indicador maxOccurs

O indicador <maxOccurs> especifica o número máximo de vezes que um elemento pode ocorrer:

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string"/>
      <xs:element name="child_name" type="xs:string" maxOccurs="10"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

O exemplo acima indica que o elemento "child_name" pode ocorrer no mínimo uma vez (o valor padrão para minOccurs é 1) e no máximo dez vezes no elemento "person".

Indicador de minOcorrências

O indicador <minOccurs> especifica o número mínimo de vezes que um elemento pode ocorrer:

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string"/>
      <xs:element name="child_name" type="xs:string"
      maxOccurs="10" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

O exemplo acima indica que o elemento "child_name" pode ocorrer no mínimo zero vezes e no máximo dez vezes no elemento "person".

Dica: Para permitir que um elemento apareça um número ilimitado de vezes, use a instrução maxOccurs="unbounded":

Um exemplo de trabalho:

Um arquivo XML chamado "Myfamily.xml":

<?xml version="1.0" encoding="UTF-8"?>

<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">

<person>
  <full_name>Hege Refsnes</full_name>
  <child_name>Cecilie</child_name>
</person>

<person>
  <full_name>Tove Refsnes</full_name>
  <child_name>Hege</child_name>
  <child_name>Stale</child_name>
  <child_name>Jim</child_name>
  <child_name>Borge</child_name>
</person>

<person>
  <full_name>Stale Refsnes</full_name>
</person>

</persons>

O arquivo XML acima contém um elemento raiz chamado "persons". Dentro deste elemento raiz definimos três elementos "pessoa". Cada elemento "person" deve conter um elemento "full_name" e pode conter até cinco elementos "child_name".

Aqui está o arquivo de esquema "family.xsd":

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">

<xs:element name="persons">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="person" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="full_name" type="xs:string"/>
            <xs:element name="child_name" type="xs:string"
            minOccurs="0" maxOccurs="5"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

</xs:schema>

Indicadores de Grupo

Os indicadores de grupo são usados ​​para definir conjuntos de elementos relacionados.

Grupos de elementos

Os grupos de elementos são definidos com a declaração do grupo, assim:

<xs:group name="groupname">
...
</xs:group>

Você deve definir um elemento all, choice ou sequence dentro da declaração do grupo. O exemplo a seguir define um grupo chamado "persongroup", que define um grupo de elementos que devem ocorrer em uma sequência exata:

<xs:group name="persongroup">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
    <xs:element name="birthday" type="xs:date"/>
  </xs:sequence>
</xs:group>

Depois de definir um grupo, você pode referenciá-lo em outra definição, como esta:

<xs:group name="persongroup">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
    <xs:element name="birthday" type="xs:date"/>
  </xs:sequence>
</xs:group>

<xs:element name="person" type="personinfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:group ref="persongroup"/>
    <xs:element name="country" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Grupos de atributos

Os grupos de atributos são definidos com a declaração attributeGroup, assim:

<xs:attributeGroup name="groupname">
...
</xs:attributeGroup>

O exemplo a seguir define um grupo de atributos chamado "personattrgroup":

<xs:attributeGroup name="personattrgroup">
  <xs:attribute name="firstname" type="xs:string"/>
  <xs:attribute name="lastname" type="xs:string"/>
  <xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>

Depois de definir um grupo de atributos, você pode referenciá-lo em outra definição, como esta:

<xs:attributeGroup name="personattrgroup">
  <xs:attribute name="firstname" type="xs:string"/>
  <xs:attribute name="lastname" type="xs:string"/>
  <xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>

<xs:element name="person">
  <xs:complexType>
    <xs:attributeGroup ref="personattrgroup"/>
  </xs:complexType>
</xs:element>