所以我解析了一堆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更改为一些独特的东西,但是我得到了更多的错误,所以我想知道我是否可以对原始错误做些什么。
谢谢!
答案 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
模式本身的组合模式,这几乎肯定不是你想要做的。