JiBX: Как запустить codegen в схеме, которая импортирует в схему без пространства имен - PullRequest
0 голосов
/ 23 августа 2010

У меня есть схема, в которой я пытаюсь включить / импортировать другую схему, у которой нет пространства имен (и ее нельзя изменить, поскольку она исходит от другого поставщика и она больше не будет проверять их XML).Вот первая схема:

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

И «NO_NAME_SPACE_SHEMA_PROBLEM.xsd», который может быть изменен до некоторой степени, но не может иметь пространства имен.

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

Проблема, которую я получаю, когдапод управлением 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 Ответ

0 голосов
/ 27 августа 2010

Сообщение об ошибке для ссылки на {http://sample/namespace}:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA кажется странным, поскольку вы не ссылаетесь на {http://sample/namespace}:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA, а some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA.

Я вижу только два варианта:

  • Вы не вставили полный образец родительской схемы; в вашей фактической схеме вы привязываете xmlns (то есть без префикса) к образцу пространства имен. Это объясняет сообщение об ошибке, и вы можете исправить его, не привязывая xmlns.
  • В JiBX есть ошибка при импорте схем без целевого пространства имен.
...