Tengo un esquema aquí donde estoy tratando de incluir/importación de un esquema a otro que no tiene ningún espacio de nombres (y esto no se puede cambiar porque viene de otro proveedor, y que ya no validar XML). Aquí está el primer Esquema:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:samp="http://sample/namespace" 
targetNamespace="http://sample/namespace" 
elementFormDefault="unqualified" attributeFormDefault="unqualified"
xmlns:otr1="http://sample/import/namespace1" 
xmlns:otr2="http://sample/import/namespace2">

<xs:import namespace="http://sample/import/namespace1" schemaLocation="other1.xsd" />
<xs:import namespace="http://sample/import/namespace2" schemaLocation="other2.xsd"  />
<!-- This one below is having problems, it is valid XML, and I am able to use it
but I am not meeting the actual requirments I have (explained later) -->
<xs:include schemaLocation=="NO_NAME_SPACE_PROBLEM.xsd"/>

...
<xs:element ref="some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA"/>
...


</xs:schema>

Y el «NO_NAME_SPACE_SHEMA_PROBLEM.xsd», que puede ser cambiado en cierta medida, pero no puede tener espacio de nombres.

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     elementFormDefault="unqualified" attributeFormDefault="unqualified">

 <xsd:element name="some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA" 
    type="xsd:string" nillable="true"/>

</xs:schema>

El problema es que la some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA está siendo puesto en el samp espacio de nombres. Así que cuando trato de marshall este XML se imprime <samp:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA><child-elem/></samp:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA> que es un gran problema debido a que XML no valida, ya que no está destinado a tener. Así que mi objetivo es simplemente importar elementos en el no-espacio de nombres de espacio de nombres.

Actualización de 1: lo Siento por la confusión, yo estaba y estoy usando xs:incluir, no xs:importación para el no-espacio de nombres del esquema. Pregunta sintaxis ha sido actualizado. También estoy usando JiBX codegen para generar objetos de dominio y JiBX vinculante para el cálculo de referencias. Por lo que debe ser JiBX compatible.

Actualización 2: Como por skaffman la respuesta, ahora voy a estar usando xs:importación. Creo que va a ser de ramificación en una nueva pregunta.

  • Tienes que ser muy claro acerca de la distinción entre import y include, que hacen totalmente diferentes cosas.
  • Sí, estoy triste, me refería a llegar a que la anterior pero se detuvo antes de que pudiera regresar a mi teclado.
InformationsquelleAutor Zombies | 2010-08-23

1 Comentario

  1. 3

    ¿Has probado

    <xs:import namespace="" schemaLocation="NO_NAME_SPACE_PROBLEM.xsd"/>

    Interesante, el Esquema XML spec sugiere fuertemente que

    <xs:import schemaLocation="NO_NAME_SPACE_PROBLEM.xsd"/>

    debe importar NO_NAME_SPACE_PROBLEM.xsd en la «ningún espacio de nombres». Si en su entorno en lugar de importarlo en el adjuntando el documento de esquema del espacio de nombres, entonces estoy bastante seguro de que es un error en su plataforma.


    actualización: OK, su actualización, dice que está intentando utilizar <xs:include> para referirse a los tipos en un espacio de nombres diferente. Usted no puede hacer esto – <xs:include> siempre trae los elementos incluidos en el mismo espacio de nombres como el padre del esquema del documento. Si son para un espacio de nombres diferente, usted debe utilizar <xs:import>.

    Si desea hacer referencia a uno de los elemento de definiciones en los importados no-espacio de nombres del esquema, entonces usted necesita para encontrar una forma de asignar un prefijo a la «ningún espacio de nombres» espacio de nombres. Si había un prefijo, podría referirse a ellos como este:

    <xs:element ref="nn:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA"/>

    Trate de añadir el atributo xmlns:nn="" a los padres de documento de esquema, a ver si eso funciona.

    • He actualizado mi respuesta, lo siento por la confusión. También traté de <xs:import namespace="" schemaLocation="NO_NAME_SPACE_PROBLEM.xsd"/> pero ahora <xs:element ref="some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA"/> no puede resolver el elemento ref.
    • Ver respuesta actualizada.
    • estás actualizado respuesta es muy apreciada. Ahora estoy mirando en esa dirección. Yo soy sólo tener JiBX problemas ahora, tal vez voy a rama que en una nueva pregunta.
    • la adición de xmlns:="" causando un error: no se puede agregar cadena vacía para no espacio de nombres predeterminado.
    • No xmlns:="", xmlns:nn=""
    • xmlns:nn=»» no funciona, pero tienes razón acerca de la importación vs incluir de manera que su respuesta es aceptado. Yo ramificada de los nuevos desarrollos a esta pregunta: stackoverflow.com/questions/3550901/… Gracias y que tenga un buen día.
    • se produce un error porque viola el W3C espacios de nombres de especificaciones. Sin prefijo undeclaring
    • Un hijo de puta.

Dejar respuesta

Please enter your comment!
Please enter your name here