2010-08-23 15 views
0

J'ai un schéma ici où j'essaie d'inclure/importer un autre schéma qui n'a pas d'espace de nom (et cela ne peut pas être changé car il provient d'un autre fournisseur et il ne serait plus valider leur XML). Voici le premier schéma:JiBX: Comment exécuter codegen sur un schéma qui importe dans le schéma sans espace de noms

<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:import schemaLocation=="NO_NAME_SPACE_PROBLEM.xsd"/> 

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


</xs:schema> 

Et le « NO_NAME_SPACE_SHEMA_PROBLEM.xsd » qui peut être changé dans une certaine mesure, mais il ne peut pas avoir l'espace de noms.

<?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> 

Le problème que je reçois lors de l'exécution JiBX codegen:

[echo] Running code generation 
[java] Output to directory C:\DOCUME~1\user1\LOCALS~1\Temp\nguser\Temp-Src 
[java] ERROR validation.ValidationContext - Error: Referenced element '{http://sample/namespace}:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA` is not defined for element at (line 69, col 32, in parent.xsd) 
[java] Terminating due to errors in input schemas 
[java] Error: Referenced element '{http://sample/namespace}:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA' is not defined for element at (line 69, col 32, in parent.xsd) 
+1

J'ai ramifié cette question basée sur l'original ici: http://stackoverflow.com/questions/3550459/how-to-import-an-xml-schema-into-the-no-namespace. Parce que je travaille avec le même code source, mais avec un problème complètement différent. Donc non, ce n'est pas un doublon, et je ne pense pas que cela devrait être refondu puisqu'il s'agit de deux questions différentes, il s'agit simplement du même code source, mais de technologies différentes. – Zombies

Répondre

0

Le message d'erreur pour la référence à {http://sample/namespace}:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA semble étrange, comme vous n'êtes pas référencez {http://sample/namespace}:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA mais some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA.

Je ne vois que deux options:

  • Vous ne l'avez pas coller l'échantillon de schéma parent complet; Dans votre schéma actuel, vous avez lié xmlns (c'est-à-dire sans préfixe) à l'espace de noms de l'échantillon. Cela expliquerait le message d'erreur, et vous pourriez le corriger en ne liant pas xmlns.
  • Il y a un bug dans JiBX lors de l'importation de schémas sans espace de noms cible.