[Gvsig_desarrolladores] Problemas exportación a GML

Fernando González fergonco en gmail.com
Mie Ago 17 15:19:22 CEST 2011


Jorge, otra forma de validar los XML contra XSD, que además se puede
incluir en los tests unitarios:

SchemaFactory factory = SchemaFactory
		.newInstance("http://www.w3.org/2001/XMLSchema");
File schemaLocation = new File("my.xsd");
Schema schema = factory.newSchema(schemaLocation);
Validator validator = schema.newValidator();
Source source = new StreamSource("my.xml");
validator.validate(source);


2011/8/16 Fernando González <fergonco en gmail.com>:
> En lugar de añadir un nuevo ticket he completado el que ya habías abierto.
>
> Y yo utilizo habitualmente los editores de la Web Tools Platform (WTP)
> de eclipse:
>
> Help >Install new software > Add > WTP -
> http://download.eclipse.org/webtools/repository/indigo/ -> Eclipse XML
> editors and tools
> (OJO, el repositorio es de indigo, si usas Helios tendrás que buscarte
> el repositorio de WTP de Helios o de la que sea).
>
> Con eso ya puedes abrir XML y XSD. Yo solo uso la vista "Source" del
> editor, nunca "Design". En ella si pones el ratón sobre las marcas
> rojas de la derecha sale la descripción del error.
>
>
>
>> Cambiando de tercio, ¿alguien conoce algún entorno multiplataforma y
>> gratuito que permita validar XML's? Yo he probado versiones de prueba
>> del XMLSpy o el Oxygen de Galdos, pero no conozco ninguno gratuito.
>> Ayudaría mucho para poder validar los GML's generados...
>>
>> Un saludo,
>> Jorge
>>> [1]
>>> <cit:lineas.shp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> xmlns:xlink="http://www.w3.org/1999/xlink"
>>> xmlns:gml="http://www.opengis.net/gml"
>>> xmlns:cit="http://www.gvsig.org/cit"
>>> xsi:schemaLocation="http://www.gvsig.org/cit cit.xsd">
>>> <gml:name>lineas.shp</gml:name>
>>> <gml:boundedBy>
>>> ...
>>> </gml:boundedBy>
>>> <gml:featureMember>
>>> <cit:Feature gml:fid="0">
>>> ...
>>>
>>> 2011/8/16 Jorge Piera Llodrá<jpiera en gvsig.com>:
>>>
>>>> Eso ya no lo tengo tan claro.
>>>>
>>>> Entiendo que el elemento raíz del GML resultante tiene algo como
>>>> gml:FeatureCollection en el elemento raíz, que en el espacio de nombres
>>>> http://www.opengis.net/gml es una colección de Feature's. Ese tipo no es
>>>> necesario definirlo en el esquema, ya que está definida en otra parte.
>>>> Supongo que habría que probar con un validador de esquemas a ver qué dice...
>>>>
>>>> Lo que sí que tienes razón es al comentar lo del "output". El fichero
>>>> resultante debería ser algo como esto:
>>>>
>>>> <gml:featureMember>
>>>> <cit:output>
>>>>      .....
>>>> </cit:output>
>>>> </gml:featureMember>
>>>>
>>>> Que desafortunado lo del output. Aunque se ponga a piñón, sería mejor
>>>> casi cualquier otro nombre...
>>>>
>>>> Un saludo,
>>>> Jorge
>>>>
>>>> On 08/16/2011 10:38 AM, Fernando González wrote:
>>>>
>>>>> Otra cosa. Para un shape de líneas, al exportar me produce el este
>>>>> schema[1], en el que se define un tipo que extiende
>>>>> gml:AbstractFeatureType y un elemento con substitution group
>>>>> gml:_Feature. El caso es que eso sólo nos permite definir una Feature
>>>>> en el XML ¿o estoy equivocado? ¿No debería crearse un tipo que
>>>>> extendiera AbstractFeatureCollection para el elemento raíz?
>>>>>
>>>>> Si estás de acuerdo abro un ticket con eso también.
>>>>>
>>>>>
>>>>> [1]
>>>>> <xs:schema xmlns:cit="http://www.gvsig.com/cit"
>>>>> xmlns:gml="http://www.opengis.net/gml"
>>>>> xmlns:xs="http://www.w3.org/2001/XMLSchema"
>>>>> targetNamespace="http://www.gvsig.com/cit"
>>>>> elementFormDefault="qualified" attributeFormDefault="unqualified"
>>>>> version="2.1.2">
>>>>> <xs:import namespace="http://www.opengis.net/gml" schemaLocation="feature.xsd"/>
>>>>> <xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="output_Type">
>>>>> <xs:complexContent>
>>>>> <xs:extension base="gml:AbstractFeatureType">
>>>>> <xs:sequence>
>>>>> <xs:element name="the_geom" minOccurs="0" nillable="true"
>>>>> type="gml:MultiLineStringPropertyType"/>
>>>>> <xs:element name="ID" minOccurs="0" nillable="true" type="xs:double"/>
>>>>> </xs:sequence>
>>>>> </xs:extension>
>>>>> </xs:complexContent>
>>>>> </xs:complexType>
>>>>> <xs:element name="output" type="cit:output_Type"
>>>>> substitutionGroup="gml:_Feature"/>
>>>>> </xs:schema>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> 2011/8/16 Jorge Piera Llodrá<jpiera en gvsig.com>:
>>>>>
>>>>>
>>>>>> Creo que empieza a estar claro....
>>>>>>
>>>>>> On 08/16/2011 10:04 AM, Fernando González wrote:
>>>>>>
>>>>>>
>>>>>>>> ¿No se está creando el esquema en el mismo directorio que el gml? En
>>>>>>>> teoría, se tiene que crear un esquema con la estructura del GML en el
>>>>>>>> mismo directorio de exportación del GML. Si no se hace así es un bug.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> El usuario selecciona el path del XSD en la interfaz gráfica, pero
>>>>>>> luego el schemaLocation pone siempre "cit.xsd". Para mí el bug es que
>>>>>>> el schemaLocation no refleja el path introducido por el usuario.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> Sí, tiene toda la pinta de ser eso.
>>>>>>
>>>>>>
>>>>>>>>> 2) El elemento exportado no está definido en el esquema. En el esquema
>>>>>>>>> se define un elemento output:
>>>>>>>>>
>>>>>>>>> <xs:element name="output" type="cit:output_Type"
>>>>>>>>> substitutionGroup="gml:_Feature"/>
>>>>>>>>>
>>>>>>>>> pero la salida no tiene ningún elemento output. El elemento raíz tiene
>>>>>>>>> el mismo nombre que la capa de la cual se exportó el GML.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> ¿Pero no has dicho que no hay esquema? Me he perdido....
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> Sí hay esquema, el problema es que con la información del atributo
>>>>>>> schemaLocation no hay manera de encontrarlo. Suponiendo que arreglo a
>>>>>>> mano el schemaLocation, se da lo que comento del elemento.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> Primero habría que mirar que el path del schemaLocation es correcto y
>>>>>> luego que el xsd sea correcto. Queda anotado.
>>>>>>
>>>>>>
>>>>>>>>> 3) Cuando se genera el XML sin el schema, los nombres de los elementos
>>>>>>>>> siguen estando cualificados y sigue habiendo un atributo
>>>>>>>>> schemaLocation, como si realmente hubiera un esquema. Cuando el
>>>>>>>>> usuario selecciona este caso es posible que sea mejor no usar nombres
>>>>>>>>> cualificados, o al menos no especificar el "schemaLocation" del
>>>>>>>>> esquema que no se ha generado.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> En la primera versión que se hizo del exportador a GML había un
>>>>>>>> formulario dónde se podían especificar cosas como el esquema, el espacio
>>>>>>>> de nombres y el prefijo asociado al esquema (creo recordar que si no se
>>>>>>>> definían se generaban respectivamente un esquema con el mismo nombre que
>>>>>>>> el fichero exportado, el namespace "http://www.gvsig.org/cit" y el
>>>>>>>> prefijo "cit"). Si los nombres aparecen cualificados y el schemaLocation
>>>>>>>> "apunta" a un fichero inexistente entiendo que es un error de generación
>>>>>>>> de schema.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> Ahora mismo (1.11_final) se pregunta el path del XML, del XSD y hay un
>>>>>>> check para decir si hay que crear el XSD. Nada de prefijo ni
>>>>>>> namespace.
>>>>>>>
>>>>>>> Ahora que lo pienso, es posible que cuando no se desactiva el check de
>>>>>>> crear el xsd, gvsig asume que el path del XSD es un schema existente
>>>>>>> con la estructura adecuada, por eso crea un XML como si hubiera
>>>>>>> schema. En tal caso no sería un bug. En cualquier caso, el
>>>>>>> schemaLocation sigue sin apuntar a dicho schema.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> Lo miramos en detalle ASAP.... He abierto un ticket en OSOR [1] para que
>>>>>> no se nos pase, que el error es considerable.
>>>>>>
>>>>>> Muchas gracias por el detalle en tus comentarios!
>>>>>> Jorge
>>>>>>
>>>>>> [1]
>>>>>> https://forge.osor.eu/tracker/index.php?func=detail&aid=15722&group_id=89&atid=732
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>> Me he perdido en algo...
>>>>>>>>
>>>>>>>> Un saludo,
>>>>>>>> Jorge
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> Un saludo.
>>>>>>>>> _______________________________________________
>>>>>>>>> gvSIG_desarrolladores mailing list
>>>>>>>>> gvSIG_desarrolladores en listserv.gva.es
>>>>>>>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> --
>>>>>>>> Jorge Piera Llodrá
>>>>>>>> gvSIG software architect
>>>>>>>> PRODEVELOP
>>>>>>>> e-mail: jpiera en gvsig.com
>>>>>>>> http://www.prodevelop.es
>>>>>>>> http://www.gvsig.org
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> gvSIG_desarrolladores mailing list
>>>>>>>> gvSIG_desarrolladores en listserv.gva.es
>>>>>>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> gvSIG_desarrolladores mailing list
>>>>>>> gvSIG_desarrolladores en listserv.gva.es
>>>>>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Jorge Piera Llodrá
>>>>>> gvSIG software architect
>>>>>> PRODEVELOP
>>>>>> e-mail: jpiera en gvsig.com
>>>>>> http://www.prodevelop.es
>>>>>> http://www.gvsig.org
>>>>>>
>>>>>> _______________________________________________
>>>>>> gvSIG_desarrolladores mailing list
>>>>>> gvSIG_desarrolladores en listserv.gva.es
>>>>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>>>>>
>>>>>>
>>>>>>
>>>>> _______________________________________________
>>>>> gvSIG_desarrolladores mailing list
>>>>> gvSIG_desarrolladores en listserv.gva.es
>>>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>>>>
>>>>>
>>>>
>>>> --
>>>> Jorge Piera Llodrá
>>>> gvSIG software architect
>>>> PRODEVELOP
>>>> e-mail: jpiera en gvsig.com
>>>> http://www.prodevelop.es
>>>> http://www.gvsig.org
>>>>
>>>> _______________________________________________
>>>> gvSIG_desarrolladores mailing list
>>>> gvSIG_desarrolladores en listserv.gva.es
>>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>>>
>>>>
>>> _______________________________________________
>>> gvSIG_desarrolladores mailing list
>>> gvSIG_desarrolladores en listserv.gva.es
>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>>
>>
>>
>> --
>> Jorge Piera Llodrá
>> gvSIG software architect
>> PRODEVELOP
>> e-mail: jpiera en gvsig.com
>> http://www.prodevelop.es
>> http://www.gvsig.org
>>
>> _______________________________________________
>> gvSIG_desarrolladores mailing list
>> gvSIG_desarrolladores en listserv.gva.es
>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>
>


Más información sobre la lista de distribución gvSIG_desarrolladores