¿Cuál es la diferencia entre XML y XSD?


¿Cuál es la diferencia entre el Lenguaje de Marcado Extensible (XML) y el Esquema XML (XSD)?

 90
Author: Welbog, 2010-02-25

7 answers

En realidad el xsd es xml. Su propósito es validar la estructura de otro documento xml. El xsd no es obligatorio para ningún xml, pero asegura que el xml podría ser utilizado para algunos propósitos particulares. El xml solo contiene datos en formato y estructura adecuados.

 125
Author: anthares,
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-02-25 12:45:25


Tomemos un ejemplo

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

Y diseñar un xsd para eso:

<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>


Lo que no es posible con XSD: quisiera escribirlo primero ya que la lista es muy pequeña
1) No puede validar un nodo/atributo usando el valor de otro nodo/atributo.
2) Esta es una restricción : Un elemento definido en el archivo XSD debe ser definido con un solo tipo de datos. [en el ejemplo anterior, para <child_two> que aparece en otro nodo <parent>, el tipo de datos no se puede definir otro than int.
3) No se puede ignorar la validación de elementos y atributos, es decir, si un elemento/atributo aparece en XML, debe estar bien definido en el XSD correspondiente. Aunque el uso de <xsd:any> lo permite, pero tiene sus propias reglas. Que conduce al error de validación. Había intentado un enfoque similar, y ciertamente no tuvo éxito, aquí está la pregunta y respuesta


lo que es posible con XSD:
1) Puede probar la jerarquía adecuada de los nodos XML. [xsd define qué hijo debe venir bajo qué padre, etc, permaneciendo que se contará como error, en el ejemplo anterior, child_two no puede ser el hijo inmediato de raíz, pero es el hijo de la etiqueta " padre "que es a su vez un hijo del nodo" raíz", hay una jerarquía..]
2) Puede definir el tipo de datos de los valores de los nodos. [en el ejemplo anterior child_two no puede tener ningún otro dato que el número]
3) También puede definir data_types personalizados, [ejemplo, para node <month>, los datos posibles pueden ser uno de los 12 meses.. por lo tanto, debe definir todos los 12 meses en un nuevo tipo de datos escribiendo todos los nombres de 12 meses como valores de enumeración .. la validación muestra un error si el XML de entrada contiene cualquier valor distinto de estos 12 valores .. ]
4) Puede poner la restricción en la ocurrencia de los elementos, utilizando minOccurs y maxOccurs, los valores predeterminados son 1 y 1.

.. y muchos más ...

 99
Author: InfantPro'Aravind',
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:26:34

XSD:
XSD (Definición de esquema XML) especifica cómo describir formalmente los elementos en un documento XML (Extensible Markup Language).
Xml:
XML fue diseñado para describir datos.Es independiente tanto del software como del hardware.
Mejora las siguientes cosas.
- Compartir datos.
- Plataforma independiente.
- Aumentar la disponibilidad de datos.

Diferencias:

  1. XSD está basado y escrito en XML.

  2. XSD define elementos y estructuras que pueden aparecer en el documento, mientras que XML no lo hace.

  3. XSD garantiza que los datos se interpreten correctamente, mientras que XML no.

  4. Un documento XSD se valida como XML, pero lo contrario puede no ser siempre cierto.

  5. XSD es mejor para detectar errores que XML.

Un XSD define los elementos que se pueden utilizar en los documentos, relacionados con datos con los que se va a codificar.
por ejemplo:
Una fecha que se expresa como 1/12/2010 puede significar el 12 de enero o el 1 de diciembre. Declarar un tipo de datos de fecha en un documento XSD, asegura que siga el formato dictado por XSD.

 11
Author: Skull,
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-08-21 05:46:25

XML versus XSD

XML define el sintaxis de elementos y atributos para la estructuración de los datos en una bien formado documento.

XSD (también conocido como Esquema XML), al igual que DTD antes, potencia la tensibilidad eXen XML al permitir al usuario definir el vocabulario y la gramática de los elementos y atributos en una válido Documento XML .

 5
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 11:47:31

Básicamente un archivo XSD define cómo se verá el archivo XML. Es un archivo de esquema que define la estructura del archivo XML. Por lo que especifica cuáles son los campos posibles y qué tamaño van a ser.

Un archivo XML es una instancia de XSD ya que utiliza las reglas definidas en el XSD.

 0
Author: SelMez,
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-09-07 11:20:58

EJEMPLO XML SIMPLE:

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

XSD DEL XML ANTERIOR:

<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>

Aquí:

Tipo Complejo: indica que contiene otros elementos. tipo simple: denota que no contienen otros elementos.

Tipo: cadena, decimal, entero, booleano, fecha, tiempo,

En palabras simples, xsd es otra forma de representar y validar datos XML con el tipo específico.Con la ayuda de atributos adicionales, podemos realizar múltiples operaciones. realizar cualquier tarea en xsd es más simple que xml.

 0
Author: shubham1js,
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-12-06 05:39:03

XML tiene una aplicación mucho más amplia que f.ex. HTML. No tiene una "aplicación" intrínseca o predeterminada. Por lo tanto, si bien es posible que no le importe que las páginas web también se rijan por lo que está permitido, desde el lado del autor, es probable que desee definir con precisión lo que un documento XML puede y no puede contener.

Es como diseñar una base de datos.

Lo que pasa con las tecnologías XML es que son de naturaleza textual. Con XSD, significa que tiene una definición de estructura de datos framework que puede ser "conectado" a herramientas de procesamiento de texto como PHP. Así que no solo puede manipular los datos en sí, sino también cambiar y documentar la estructura con mucha facilidad, e incluso generar automáticamente front-ends.

Visto así, XSD es el "pegamento" o "middleware" entre los datos (XML) y las herramientas de procesamiento de datos.

 0
Author: Agnes K. Cathex,
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
2018-06-19 21:07:04