¿Qué es el formato de archivo XSD?
Un archivo .xsd contiene una descripción formal de los elementos de un documento XML: definiciones de datos guardadas en formato de texto XML. Define un conjunto de reglas que los archivos XML deben seguir para ser considerados documentos XML válidos; un analizador de validación rechaza cualquier documento que infrinja esas reglas.
Los archivos .xsd no tienen un identificador de tipo de medio de Internet único; comparten el mismo tipo que el XML ordinario: application/xml o text/xml. Los archivos suelen comenzar con una declaración XML (<?xml version="1.0"?>) y un elemento raíz <xs:schema> vinculado al espacio de nombres http://www.w3.org/2001/XMLSchema. Los datos XSD pueden organizarse en espacios de nombres. Los componentes principales del esquema son:
- Declaraciones de elementos,
- Declaraciones de atributos,
- Tipos de datos: simples o complejos, basados en restricciones, listas de selección o tipos primitivos,
- Grupos reutilizables de elementos o atributos (análogos a las macros).
La especificación XSD fue desarrollada en 2001 con la ayuda del W3C (World Wide Web Consortium). XSD ofrece más funciones que el formato de definición de documentos similar .dtd, incluyendo datos tipados y soporte para espacios de nombres. Los archivos de descripción de servicios web como .wsdl comúnmente incrustan definiciones de tipo XSD para sus estructuras de mensajes. El documento de especificación XSD se divide en tres partes:
- Parte 0. Primer (Manual básico): contiene una descripción general del estándar y los conceptos básicos, consultada comúnmente por usuarios menos técnicos que trabajan con
.xsd, - Parte 1. Estructuras,
- Parte 2. Tipos de datos.
Las partes 1 y 2 tienen muchas páginas de extensión y están escritas en lenguaje técnico. Una segunda versión de la especificación se lanzó en 2004, y XSD 1.1 fue aprobado por el W3C en 2012, añadiendo aserciones y asignación de tipos condicionales. Los archivos XSD se utilizan para almacenar metadatos de documentos XML, pero también pueden ser utilizados por desarrolladores para generar código o descripciones de documentos en forma legible para humanos.
Seguridad y protección
RIESGO: LOWUn XSD es texto plano y no puede ejecutar código, por lo que abrir uno para leerlo es seguro. Los únicos riesgos reales son indirectos: <xs:import>/<xs:include> pueden atraer esquemas externos (los ataques de entidad externa tipo XXE se dirigen al ANALIZADOR XML, no al esquema en sí), por lo que debe validar XML no confiables con la expansión de entidades y las búsquedas externas desactivadas. La <xs:documentation> incrustada en el archivo puede revelar detalles internos del sistema o de los campos, lo cual es una consideración de divulgación de información más que un riesgo de malware.
Detalles del formato
en pocas palabrasProgramas que abren archivos XSD
xsd.exe genera clases a partir de un esquema. xmllint --schema esquema.xsd datos.xml --noout Detalles técnicos
especificación profunda| Tipo de formato de archivo | Documento XML de texto plano (codificación UTF-8) |
| Tipo MIME | application/xml o text/xml (compartido con todos los archivos XML; no existe un tipo MIME específico para XSD) |
| Elemento raíz | <xs:schema> o <xsd:schema>, vinculado al espacio de nombres del W3C http://www.w3.org/2001/XMLSchema |
| Firma de archivo | Ninguna (texto plano); los archivos convencionalmente se abren con una declaración XML <?xml version="1.0"?> |
| Convención de prefijo de espacio de nombres | xs: o xsd: (ambos son válidos; xs: es la opción moderna más común) |
| Sistema de tipos integrado | Más de 44 tipos primitivos y derivados: string, integer, decimal, dateTime, boolean, base64Binary, anyURI, y más |
| Derivación de tipos | Los tipos complejos admiten derivación por restricción o extensión; los tipos simples por restricción, lista o unión |
| Restricciones de validación | Modelo de contenido (sequence, choice, all), cardinalidad mediante minOccurs/maxOccurs, y facetas como pattern, length y enumeration |
| Soporte de espacios de nombres | El atributo targetNamespace declara el espacio de nombres del esquema; las directivas xs:import, xs:include y xs:redefine combinan esquemas |
| Mecanismo de anotación | <xs:annotation> que contiene <xs:documentation> para texto legible por humanos y <xs:appinfo> para metadatos legibles por máquinas |
| Adiciones de XSD 1.1 | Aserciones (xs:assert), asignación de tipos condicional (xs:alternative) y restricciones de co-ocurrencia relajadas |
| Comparado con DTD | Reemplaza a DTD para validación tipada y con reconocimiento de espacios de nombres; DTD no tiene tipos de datos ni soporte para espacios de nombres |
| Comparado con RELAX NG | Más ampliamente soportado en herramientas que .rng; RELAX NG es más simple pero carece de la herencia de tipos de XSD |
| Integración de herramientas | Soportado por Visual Studio, VS Code y Altova XMLSpy para autocompletado, validación en tiempo real y generación de código basada en esquemas |
| Contextos de uso comunes | Validación de archivos de configuración, servicios web SOAP/WSDL, contratos de intercambio de datos, formatos de documentos de oficina OOXML |
| Lanzado | 2001 (W3C XML Schema 1.0 Recommendation); 1.1 in 2012 |
| Estándar abierto | Sí · libre de regalías |
| Especificación | www.w3.org |
Conversiones de XSD
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos XSD.
Preguntas frecuentes
¿Para qué se utiliza un archivo XSD?
¿Cómo abro un archivo XSD?
¿Cuál es la diferencia entre XML y XSD?
¿Cómo valido un archivo XML contra un XSD?
xmllint --schema archivo.xsd datos.xml en la línea de comandos, el comando «Validar» de un editor XML o un validador XSD en línea. Este informa exactamente dónde el XML rompe las reglas del esquema.¿Cuál es la diferencia entre XSD y DTD?
¿Puedo generar código o un XML de ejemplo a partir de un XSD?
xsd.exe), Java JAXB (xjc) y XMLSpy generan clases a partir de un esquema, y la mayoría de los editores XML pueden producir una instancia XML de ejemplo que cumpla con el XSD.