Qual é a finalidade dos arquivos XSD?

90

Visto que podemos consultar o arquivo XML em C # (.NET), por que precisamos de um arquivo XSD? Eu sei que é um arquivo de metadados de um arquivo XML específico. Podemos especificar os relacionamentos em XSD, mas como funciona então?

XML

<?xml version="1.0" encoding="utf-8" ?>
<Root>
  <Customers>
    <Customer CustomerID="GREAL">
      <CompanyName>Great Lakes Food Market</CompanyName>
      <ContactName>Howard Snyder</ContactName>
      <ContactTitle>Marketing Manager</ContactTitle>
      <Phone>(503) 555-7555</Phone>
      <FullAddress>
        <Address>2732 Baker Blvd.</Address>
        <City>Eugene</City>
        <Region>OR</Region>
        <PostalCode>97403</PostalCode>
        <Country>USA</Country>
      </FullAddress>
    </Customer>
  </Customers>
  <Orders>
    <Order>
      <CustomerID>GREAL</CustomerID>
      <EmployeeID>6</EmployeeID>
      <OrderDate>1997-05-06T00:00:00</OrderDate>
      <RequiredDate>1997-05-20T00:00:00</RequiredDate>
      <ShipInfo ShippedDate="1997-05-09T00:00:00">
        <ShipVia>2</ShipVia>
        <Freight>3.35</Freight>
        <ShipName>Great Lakes Food Market</ShipName>
        <ShipAddress>2732 Baker Blvd.</ShipAddress>
        <ShipCity>Eugene</ShipCity>
        <ShipRegion>OR</ShipRegion>
        <ShipPostalCode>97403</ShipPostalCode>
        <ShipCountry>USA</ShipCountry>
      </ShipInfo>
    </Order>
    <Order>
      <CustomerID>GREAL</CustomerID>
      <EmployeeID>8</EmployeeID>
      <OrderDate>1997-07-04T00:00:00</OrderDate>
      <RequiredDate>1997-08-01T00:00:00</RequiredDate>
      <ShipInfo ShippedDate="1997-07-14T00:00:00">
        <ShipVia>2</ShipVia>
        <Freight>4.42</Freight>
        <ShipName>Great Lakes Food Market</ShipName>
        <ShipAddress>2732 Baker Blvd.</ShipAddress>
        <ShipCity>Eugene</ShipCity>
        <ShipRegion>OR</ShipRegion>
        <ShipPostalCode>97403</ShipPostalCode>
        <ShipCountry>USA</ShipCountry>
      </ShipInfo>
    </Order>
  </Orders>
</Root>

Eu quero obter dados dos Orderelementos de acordo com um fornecido CustomerID.

Além disso : Qual é o propósito de fornecer os relacionamentos no XSD?

Cisne Vermelho
fonte
stackoverflow.com/questions/2333998/… , também pode ser referido!
AVA

Respostas:

106

Os arquivos XSD são usados ​​para validar se os arquivos XML estão em conformidade com um determinado formato.

Nesse aspecto, são semelhantes aos DTDs que existiam antes deles.

A principal diferença entre XSD e DTD é que XSD é escrito em XML e é considerado mais fácil de ler e entender.

Oded
fonte
Obrigado, então posso consultar arquivos xsd de c3.net usando Linq para obter os dados do arquivo xml? Quão?
Red Swan
@Lalit - Linq não tem nada a ver com isso.
Oded
Outra diferença importante é que você não pode fazer muitas coisas facilmente feitas em XSD em um DTD.
morte de
Portanto, para obter dados, posso usar apenas o arquivo xml, certo? Não preciso gerar seu arquivo de esquema. (Não quero validá-lo por enquanto) Só quero obter dados de xml que tenham vários registros dependentes de mapas de IDs em cada elemento.
Red Swan
4
@Lalit - se você não se importa com os relacionamentos como tais e não precisa verificar se eles estão em conformidade com algum tipo de regra (codificada em um XSD), então não use um XSD e apenas consulte o XML diretamente.
Oded
48

Sem o XML Schema (arquivo XSD), um arquivo XML é um conjunto relativamente livre de elementos e atributos. O arquivo XSD define quais elementos e atributos são permitidos e em que ordem.

Em geral, XML é uma metalinguagem. Os arquivos XSD definem idiomas específicos dentro dessa metalinguagem. Por exemplo, se seu arquivo XSD contém a definição de XHTML 1.0, então seu arquivo XML deve caber em XHTML 1.0 em vez de algum outro formato.

Oleg
fonte
18

Você mencionou C # em sua pergunta, portanto, pode ser útil pensar em XSD como tendo uma função semelhante a uma interface C #.

Ele define como o XML deve ser "parecido" de maneira semelhante a uma interface que define o que uma classe deve implementar.

Garry
fonte
4
Se você pegar uma classe e uma interface que ela deve implementar, poderá saber se a classe está correta. Da mesma forma, se você pegar um arquivo xml e for xsd, poderá saber se o xml está correto.
Garry
16

Os XSDs restringem o vocabulário e a estrutura dos documentos XML.

XML tem tudo a ver com acordo , e XSDs fornecem os meios para estruturar e comunicar o acordo além da definição básica do próprio XML.

kjhughes
fonte
12

Também perguntas são: Qual é o propósito de fornecer os relacionamentos no xsd.

Suponha que você queira gerar algum XML para a ferramenta de uma parte externa, ou similar - como você saberia que estrutura é permitido seguir para ser usado corretamente por sua ferramenta? você escreve para um esquema. Da mesma forma, se quiser que outras pessoas usem sua ferramenta, você deve escrever um esquema para que elas sigam. Também pode ser útil para validar seu próprio XML.

Robert
fonte
8

Antes de entender o XSD (XML Schema Definition), deixe-me explicar;

O que é esquema?

por exemplo; emailID: peter # gmail

Você pode identificar que o emailID acima não é válido porque não existe @, .com ou .net ou .org.

Conhecemos o esquema de e-mail, ele se parece com [email protected].

Conclusão: O esquema não valida os dados, faz a validação da estrutura.

XSD é na verdade uma das implementações do XML Schema. outros nós temos

Usamos XSD para validar dados XML.

Premraj
fonte
7

Um XSD é um contrato formal que especifica como um documento XML pode ser formado. Geralmente é usado para validar um documento XML ou para gerar código a partir dele.

Troelskn
fonte
5

Um arquivo XSD é uma definição de esquema XML e é usado para fornecer um método padrão de verificação de que um determinado documento XML está em conformidade com o que você espera.

a'r
fonte
5

Um arquivo .xsd é chamado de esquema XML. Por meio de um esquema XML, podemos exigir uma certa estrutura em um determinado XML - quais elementos em que ordem, quantas vezes, com quais atributos, como eles são aninhados, etc. Se tivermos um esquema para nossa entrada XML, podemos verificar que contém os dados que precisamos conter, e nada mais, com algumas linhas invocando um validador de esquema.


fonte
4

O arquivo xsd é o esquema do arquivo xml - ele define quais elementos podem ocorrer e suas restrições (como quantidade, ordem, limites, relacionamentos, ...)

mort
fonte