2010-01-22 15 views
9

que tienen un documento XSD que comienza con:¿Para qué sirve este espacio de nombres de importación XSD?

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:import namespace="http://www.w3.org/XML/1998/namespace"  schemaLocation="http://www.w3.org/2001/xml.xsd"/> 
    <xs:complexType name="T_segment"> 
     <xs:sequence> 
      <xs:element ref="element" maxOccurs="unbounded"/> 
     </xs:sequence> 
     <xs:attribute ref="xml:space" use="required"/> 
     <xs:attribute ref="id" use="required"/> 
    </xs:complexType> 
... 

Cuando trato de utilizar este xsd en una aplicación de mapas como BizTalk sopla quejándose de espacios de nombres. Entonces, elimino la etiqueta xs: import namespace y me queja de la etiqueta xs: attribute ref = "xml: space". Entonces, elimino eso y parece funcionar bien (al menos no explota).

Mi pregunta es, ¿para qué sirven esas etiquetas? Al eliminarlos, ¿estoy rompiendo el xsd?

Según lo que sé, los espacios de nombres son para evitar conflictos. Pero en el xsd todo está prefijado por xs y el propio esquema tiene xmlns: xs = "http://www.w3.org/2001/XMLSchema". No estoy seguro para qué es esa importación.

+0

¿Has mirado la documentación del W3C para la etiqueta de importación? (http://www.w3.org/TR/xmlschema-0/#import). –

+1

Sí, sí leí la documentación pero no pude entender lo que significaban porque entra en muchos otros detalles que no pude seguir. Creo que solo necesitaba un ser humano para decir "Esto significa esto ... y sacarlo significa ...". – dtc

Respuesta

8

El elemento <xs:import /> importa el espacio de nombres XML en el esquema. El espacio de nombres importado contiene la definición del atributo "espacio". El bit <xs:attribute ref="xml:space" use="required"/> define un atributo "espacio" requerido para el tipo complejo "T_segment" por referencia del esquema importado (es decir, para que no tenga que volver a escribir la definición). El atributo de espacio esencialmente le da la capacidad de definir si whitespace is significant for the element or not.

Ahora, dependiendo de la aplicación que realmente podría estar rompiendo cosas porque esencialmente está eliminando una restricción del tipo complejo que podría ser relevante para la aplicación que consume el documento descrito por este esquema. Sin saber más sobre la aplicación, es difícil decir si esto es significativo en su caso o no.

+0

Genial. Lo entiendo ahora Gracias por explicarlo en términos claros. – dtc