tutorial targetnamespace schemalocation namespace xml import xsd namespaces

xml - targetnamespace - xsd schema



XSD con importaciones y espacios de nombres (2)

Creo que debes establecer tu elementFormDefault en "no calificado" si quieres evitar los prefijos en tus elementos XML. El resto debería estar bien, creo, el espacio de nombres es el mismo entre tu maestro y tu XSD importado. Está bien. Usted especifica el xmlns = sin un prefijo, eso está bien. Usted debe ser bueno para ir.

Bagazo

Hola, estoy tratando de concentrarme en XSDs, XML y espacios de nombres, pero no puedo hacer que las cosas funcionen como quiero.

Tengo un XSD que, en este momento, comienza así:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.com"> <xs:import namespace="http://www.example.com" schemaLocation="Include.xsd" />

Como puede ver, importa otro archivo xsd, que comienza así:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://www.example.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.com">

Luego tengo algunos documentos xml basados ​​en este esquema:

<foobar> <whatever>....

Básicamente, no me importa qué son los espacios de nombres, solo quiero que lo maldito funcione. Anteriormente no usaba ningún espacio de nombres, pero parece que tengo que usarlos para importar un XSD a otro. Lo que no quiero hacer es proporcionar prefijos a todos los elementos en mis documentos xml.

Para lograr esto, ¿qué combinación de valores necesito para los diversos atributos ( targetNamespace, namespace, xmlns, elementFormDefault, etc.) en los documentos XSD y XML?

Actualmente, cualquier elemento definido en el documento XSD importado requiere la calificación del espacio de nombres en el XML.


Si no está utilizando espacios de nombres o sus esquemas comparten los mismos espacios de nombres, sería mucho mejor usar xs: incluir en lugar de xs: importar. El esquema A puede incluir el esquema B si B tiene el mismo espacio de nombres que A o no tiene espacio de nombres declarado (si este último es el caso, B ''adopta'' el espacio de nombres del includer cuando se incluye). Entonces ... algo así como:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.com"> <xs:include schemaLocation="Include.xsd" /> <!-- ... --> </xs:schema>