Qual é a diferença entre XML e XSD?

Qual é a diferença entre a Extensible Markup Language (XML) e XML Schema (XSD)?

 90
Author: Welbog, 2010-02-25

7 answers

Na verdade o xsd é o próprio xml. Seu objetivo é validar a estrutura de outro documento xml. O xsd não é obrigatório para qualquer xml, mas garante que o xml pode ser usado para alguns propósitos específicos. O xml só contém dados em formato e estrutura adequados.

 125
Author: anthares, 2010-02-25 12:45:25


tome um exemplo

<root>
  <parent>
     <child_one>Y</child_one>
     <child_two>12</child_two>
  </parent>
</root>

E desenha um xsd para isso:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="parent">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="child_one" type="xs:string" />
              <xs:element name="child_two" type="xs:int" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


O que não é possível com o XSD: gostaria de escrevê-lo primeiro porque a lista é muito pequena
1) Você não pode validar um nó/atributo usando o valor de outro nó/atributo.
2) Esta é uma restrição : um elemento definido no ficheiro XSD deve ser definido com apenas um tipo de dados. [no exemplo acima, para <child_two> aparecer em outro nó <parent>, o datatype não pode ser definido exceto int.
3) Você não pode ignorar a validação de elementos e atributos, ou seja, se um elemento/atributo aparece em XML, ele deve ser bem definido no XSD correspondente. Embora o uso de <xsd:any> o permita, mas ele tem suas próprias regras. O que leva ao erro de validação. Eu tinha tentado uma abordagem semelhante, e certamente não foi bem sucedida, aqui está o Q & A


o que é possível com o XSD:
1) você pode testar a hierarquia adequada do XML no. [xsd define qual criança deve ficar sob qual pai, etc, permanecendo que será contado como erro, no exemplo acima, child_two não pode ser o filho imediato do root, mas é o filho de "pai" tag que é por sua vez um filho do nó "root", há uma hierarquia..]
2) você pode definir o tipo de dados dos valores dos nós. [in above example child_two cannot have any-other data than number]
3) Você também pode definir data_types personalizados, [exemplo, para o node <month>, os dados possíveis pode ser um dos 12 meses.. então você precisa definir todos os 12 meses em um novo tipo de dados escrevendo todos os nomes dos 12 meses como valores de enumeração .. a validação mostra erro se o XML de entrada contém qualquer outro valor que não estes 12 valores .. ]
4) você pode colocar a restrição sobre a ocorrência dos elementos, usando minOccurs e maxOccurs, os valores padrão são 1 e 1.

.. e muitos mais ...

 99
Author: InfantPro'Aravind', 2017-05-23 12:26:34

XSD:
XSD (XML Schema Definition) especifica como descrever formalmente os elementos em um documento XML (Extensible Markup Language).
Xml:
O XML foi concebido paradescrever os dados .é independente tanto do software como do hardware.
Melhora as seguintes coisas.
- Partilha de dados.
- Plataforma independente.
- Aumentar a disponibilidade de dados.

Diferenças:

  1. XSD é baseado e escrito em XML.

  2. XSD define elementos e estruturas que podem aparecer no documento, enquanto XML não.

  3. XSD garante que os dados são corretamente interpretados, enquanto XML não.

  4. Um documento XSD é validado como XML, mas o oposto pode nem sempre ser verdade.

  5. XSD é melhor em erros de captura do que XML.

Um XSD define os elementos que podem ser usados nos documentos, relacionados com o real dados com os quais deve ser codificado.
por eg:
Uma data que é expressa como 1/12/2010 pode significar 12 de Janeiro ou 1 de dezembro. declarar um tipo de dados data em um documento XSD, garante que ele segue o formato ditado pelo XSD.

 11
Author: Skull, 2015-08-21 05:46:25

XML versus XSD

XML define a sintaxe do elementos e atributos para a estruturação de dados em um bem-formado documento.

XSD (aka Esquema XML), como DTD antes, poderes eXtensibility em XML permitindo que o usuário defina o vocabulário e gramática do elementos e atributos em um válido Documento XML.

 5
Author: kjhughes, 2017-05-23 11:47:31

Basicamente um ficheiro XSD define como é que o ficheiro XML vai ficar. É um arquivo Schema que define a estrutura do arquivo XML. Então ele especifica quais são os campos possíveis e qual o tamanho que eles vão ser.

Um ficheiro XML é uma instância do XSD porque usa as regras definidas no XSD.

 0
Author: SelMez, 2017-09-07 11:20:58

EXEMPLO XML SIMPLES:

<school>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</school>

XSD DO XML ACIMA:

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

Toma.:

Tipo complexo : indica que contém outros elementos. tipo simples : indica que não contêm outros elementos.

Tipo: cadeia, decimal, inteiro, logico, data, tempo,

Em palavras simples, o xsd é outra forma de representar e validar dados XML com o tipo específico.Com a ajuda de atributos extras, podemos realizar várias operações. executar qualquer tarefa no xsd é mais simples que xml.

 0
Author: shubham1js, 2017-12-06 05:39:03

O XML tem uma aplicação muito mais vasta do que o f. ex. GALERIA. Ele não tem uma "aplicação"intrínseca ou padrão. Então, embora você possa não se importar que as páginas web também sejam regidas pelo que é permitido, do lado do autor, você provavelmente vai querer definir com precisão o que um documento XML pode ou não conter.

É como criar uma base de dados. O problema das tecnologias XML é que são de natureza textual. Com o XSD, isso significa que você tem uma definição de estrutura de dados framework that can be "plugged in" to text processing tools like PHP. Então não só você pode manipular os dados em si, mas também muito facilmente mudar e documentar a estrutura, e até mesmo auto-gerar front-ends.

Visto assim, o XSD é a "cola" ou "middleware" entre ferramentas de processamento de dados (XML) e de dados.

 0
Author: Agnes K. Cathex, 2018-06-19 21:07:04