JiBX:如何在导入无命名空间模式的模式上运行codegen

时间:2010-08-23 19:14:48

标签: xml xsd marshalling jibx

我在这里有一个模式,我试图包含/导入另一个没有命名空间的模式(这不能改变,因为它来自另一个供应商,它将不再验证他们的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 :(得分:0)

引用{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中存在一个错误。