尝试使用XJC生成架构时出错

时间:2012-01-12 22:56:43

标签: jaxb xsd

所以我解析了一堆XML来使用trang生成一个巨大的模式文件。但是,当我尝试使用xjc生成源时,我收到以下错误,

xjc reutersXMLSchema.xsd 
parsing a schema...
[ERROR] no-xsi: The {target namespace} of an attribute declaration must not match       'http://www.w3.org/2001/XMLSchema-instance'.
line 11 of file:/Users/cqin/Downloads/trang-20081028/xsi.xsd

Failed to parse a schema.

架构如下所示,

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"   targetNamespace="http://www.w3.org/2001/XMLSchema-instance"      xmlns:filter="http://schemas.reuters.com/ns/2006/04/14/rmds/webservices/news/filter"   xmlns:ns0="http://www.reuters.com/ns/2006/05/01/webservices/rkd/News_1"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:s="http://www.w3.org/2003/05/soap-envelope"  xmlns:ns1="http://schemas.reuters.com/ns/2006/04/14/rmds/webservices/news/headlineml"  xmlns:cache_1="http://www.reuters.com/ns/2008/03/01/webservices/rkd/Cache_1"  xmlns:ns2="http://www.reuters.com/ns/2006/05/01/webservices/rkd/TokenManagement_1" xmlns:global="http://www.reuters.com/ns/2006/05/01/webservices/rkd/Common_1"  xmlns:a="http://www.w3.org/2005/08/addressing">
<xs:import   namespace="http://schemas.reuters.com/ns/2006/04/14/rmds/webservices/news/filter"   schemaLocation="filter.xsd"/>
<xs:import namespace="http://schemas.reuters.com/ns/2006/04/14/rmds/webservices/news/headlineml" schemaLocation="ns1.xsd"/>
<xs:import namespace="http://www.reuters.com/ns/2006/05/01/webservices/rkd/Common_1" schemaLocation="global.xsd"/>
<xs:import namespace="http://www.reuters.com/ns/2006/05/01/webservices/rkd/News_1" schemaLocation="reutersXMLSchema.xsd"/>
<xs:import namespace="http://www.reuters.com/ns/2006/05/01/webservices/rkd/TokenManagement_1" schemaLocation="ns2.xsd"/>
<xs:import namespace="http://www.reuters.com/ns/2008/03/01/webservices/rkd/Cache_1" schemaLocation="cache_1.xsd"/>
<xs:import namespace="http://www.w3.org/2003/05/soap-envelope" schemaLocation="s.xsd"/>
<xs:import namespace="http://www.w3.org/2005/08/addressing" schemaLocation="a.xsd"/>
<xs:attribute name="type" type="xs:NCName"/>
</xs:schema>

知道为什么它不起作用?

我已经尝试将targetNameSpace更改为一些独特的东西,但是我得到了更多的错误,所以我想知道我是否可以对原始错误做些什么。

谢谢!

2 个答案:

答案 0 :(得分:1)

我会将此归类为trang中的错误。用所有文件中的“schemas.reuters.com/ns/2006/04/14/rmds/webservices/news/xsi”替换字符串“www.w3.org/2001/XMLSchema-instance”的所有实例,以及你应该没事。

e.g。

sed -i -e's,www.w3.org / 2001 / XMLSchema-instance,schemas.reuters.com / ns / 2006/04/14 / rmds / webservices / news / xsi,g'*

答案 1 :(得分:0)

是的,这不对:

targetNamespace="http://www.w3.org/2001/XMLSchema-instance"

这就是说,模式的目标名称空间实际上是模式定义模式本身的名称空间(即定义<xs:schema><xs:import>之类的内容的模式实际上是指。这个架构是固定的,你不能编写自己的架构来定位它,这就是XJC拒绝它的原因。

  

我尝试将targetNameSpace更改为独特的但我得到更多错误

继续尝试,你会比你现在拥有的更进一步。然而,Trang正在产生这种糟糕的模式的事实暗示着你已经做了一些错误的事情。也许你要求它生成一个包含http://www.w3.org/2001/XMLSchema-instance模式本身的组合模式,这几乎肯定不是你想要做的。