¿Cuál es el propósito de los archivos XSD?


Dado que podemos consultar el archivo XML desde C# (. NET), ¿por qué necesitamos un archivo XSD? Sé que es un archivo de metadatos de un archivo XML en particular. Podemos especificar las relaciones en XSD, pero ¿cuál es su funcionamiento entonces?

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>

Quiero obtener datos de los elementos Order de acuerdo con un CustomerID proporcionado.

También: ¿Cuál es el propósito de dar las relaciones en XSD?

 77
Author: kjhughes, 2010-08-04

10 answers

Los archivos XSD se utilizan para validar XML - que se ajusta a un formato determinado.

En ese sentido son similares a DTD s que existían antes de ellos.

La principal diferencia entre XSD y DTD es que XSD está escrito en XML y se considera más fácil de leer y entender.

 91
Author: Oded,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-04 08:02:47

Sin esquema XML (archivo XSD) un archivo XML es un conjunto relativamente libre de elementos y atributos. El archivo XSD define qué elementos y atributos están permitidos y en qué orden.

En general XML es un metalenguaje. Los archivos XSD definen lenguajes específicos dentro de ese metalenguaje. Por ejemplo, si su archivo XSD contiene la definición de XHTML 1.0, entonces se requiere que su archivo XML se ajuste a XHTML 1.0 en lugar de algún otro formato.

 39
Author: Oleg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-15 18:41:20

Mencionas C# en tu pregunta, por lo que puede ayudar pensar que XSD cumple un rol similar al de una interfaz de C#.

Define cómo debe 'verse' el XML de una manera similar a como una interfaz define lo que una clase debe implementar.

 16
Author: Garry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-04 08:06:21

Los XSD limitan el vocabulario y la estructura de los documentos XML.

  • Sin un XSD , un documento XML solo necesita seguir las reglas para ser bien formado como se indica en la Recomendación W3C XML.
  • Con un XSD, un documento XML debe cumplir con restricciones adicionales impuestas a los nombres y valores de sus elementos y atributos para ser considerado válido contra el XSD per la Recomendación del Esquema XML del W3C.

XML tiene que ver con el acuerdo, y los XSD proporcionan los medios para estructurar y comunicar el acuerdo más allá de la definición básica del propio XML.

 13
Author: kjhughes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:27

También se pregunta: ¿Cuál es el propósito de dar las relaciones en xsd.

Supongamos que desea generar algún XML para la herramienta de una parte externa, o similar - ¿cómo sabe qué estructura se le permite seguir para ser utilizado correctamente para su herramienta? escribes en un esquema. Del mismo modo, si quieres que otras personas usen tu herramienta, escribirás un esquema para que ellos sigan. También puede ser útil para validar su propio XML.

 10
Author: Robert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-04 08:26:09

Un XSD es un contrato formal que especifica cómo se puede formar un documento XML. A menudo se usa para validar un documento XML o para generar código a partir de él.

 6
Author: troelskn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-04 08:27:07

Antes de entender el XSD(Definición de Esquema XML) permítanme explicar;

¿Qué es schema?

Por ejemplo; emailID: peter # gmail

Puede identificar que el emailID anterior no es válido porque no hay@,. com o. net o. org.

Conocemos el esquema de correo electrónico que parece [email protected].

Conclusión: Schema no valida los datos, hace la validación de la estructura.

XSD es en realidad uno de los implementación de esquema XML. otros tenemos relaxng

Utilizamos XSD para validar datos XML.

 6
Author: Premraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-23 02:00:35

Un archivo XSD es una definición de esquema XML y se utiliza para proporcionar un método estándar de comprobación de que un documento XML determinado se ajusta a lo que espera.

 5
Author: a'r,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-04 08:03:33

An .el archivo xsd se denomina esquema XML. A través de un esquema XML, podemos requerir una cierta estructura en un XML dado: qué elementos en qué orden, cuántas veces, con qué atributos, cómo están anidados, etc. Si tenemos un esquema para nuestra entrada XML, podemos verificar que contiene los datos que necesitamos que contenga, y nada más, con unas pocas líneas invocando un validador de esquema.

 5
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-04 08:06:24

El archivo xsd es el esquema del archivo xml - define qué elementos pueden aparecer y sus restricciones (como cantidad, orden, límites, relaciones,...)

 3
Author: mort,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-04 08:03:07