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

90

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 Orderelementos de acuerdo con un archivo CustomerID.

Además : ¿Cuál es el propósito de dar las relaciones en XSD?

Cisne rojo
fuente
stackoverflow.com/questions/2333998/… , ¡también puede ser referido!
AVA

Respuestas:

106

Los archivos XSD se utilizan para validar que los archivos XML se ajusten a un formato determinado.

En ese sentido, son similares a los DTD que existían antes.

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

Oded
fuente
gracias, entonces, ¿puedo consultar los archivos xsd de c3.net usando Linq para obtener los datos del archivo xml? ¿Cómo?
Red Swan
@Lalit - Linq no tiene nada que ver con eso.
Oded
Otra diferencia importante es que no puede hacer muchas cosas fácilmente en XSD en un DTD.
mort
Entonces, para obtener datos, solo puedo usar el archivo xml, ¿verdad? No necesito generar su archivo de esquema. (No quiero validarlo por ahora) Solo quiero obtener datos de xml que tengan varios registros que dependen de los mapas de ID en cada elemento.
Red Swan
4
@Lalit: si no le importan las relaciones como tales y no necesita verificar que se ajusten a algún tipo de regla (codificada en un XSD), no use un XSD y solo consulte el XML directamente.
Oded
48

Sin el 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 idiomas específicos dentro de ese metalenguaje. Por ejemplo, si su archivo XSD contiene la definición de XHTML 1.0, entonces su archivo XML debe ajustarse a XHTML 1.0 en lugar de algún otro formato.

Oleg
fuente
19

Menciona C # en su pregunta, por lo que puede ser útil pensar que XSD cumple una función similar a una interfaz C #.

Define cómo debería "verse" el XML de una forma similar a como una interfaz define lo que debería implementar una clase.

Garry
fuente
4
Si toma una clase y una interfaz que se supone que debe implementar, puede saber si la clase es correcta. De la misma manera, si toma un archivo xml y es xsd, puede saber si el xml es correcto.
Garry
16

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

  • Sin un XSD , un documento XML solo necesita seguir las reglas para estar bien formado como se indica en la Recomendación XML del W3C .
  • Con un XSD , un documento XML debe cumplir con las restricciones adicionales impuestas a los nombres y valores de sus elementos y atributos para que se considere válido contra el XSD según la Recomendación de 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 de XML en sí.

kjhughes
fuente
12

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

Suponga que desea generar algún XML para la herramienta de una parte externa, o similar, ¿cómo sabría qué estructura se le permite seguir para que se use correctamente para su herramienta? escribes en un esquema. Del mismo modo, si desea que otras personas usen su herramienta, debe escribir un esquema para que lo sigan. También puede resultar útil para validar su propio XML.

Robert
fuente
8

Antes de comprender el XSD (Definición de esquema XML), déjeme explicarlo;

¿Qué es el esquema?

por ejemplo; emailID: peter # gmail

Puede identificar que el ID de correo electrónico anterior no es válido porque no hay @, .com o .net o .org.

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

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

XSD es en realidad una de las implementaciones de XML Schema. otros tenemos

Usamos XSD para validar datos XML.

Premraj
fuente
7

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

troelskn
fuente
5

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

Arkansas
fuente
5

Un archivo .xsd se denomina esquema XML. A través de un esquema XML, es posible que necesitemos 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 que invocan un validador de esquema.


fuente
4

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

mort
fuente