我有两个XSD到底,下面的情况是,我正在使用REST服务并通过JAXB运行两个XSD来生成类,碰巧我必须得到两个XSD的targetNamespace,因为它似乎当consumption属性为null时,该服务没有命名空间,JAXB生成的类名为package-info.java
@javax.xml.bind.annotation.XmlSchema(namespace = "", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
我将命名空间删除为低(使用带有此目标命名空间的XSD),并且它有效,但我必须使用XSD,并且在其中一个中我使用指向另一个的元素。但是给出了这个格式化错误,我试图导入,但询问命名空间,两个xsds都在同一个目录中
错误:
src-resolve.4.2:解析组件“阻止”时出错。它被发现了 'Block'在命名空间'http://www.w3.org/2001/ XMLSchema'中,但是 此命名空间中的组件无法从架构引用 document'file:/// G:/Dev/src/main/xsd/Actor.xsd'。如果这是 错误的命名空间,可能需要'BlockList'的前缀 改变。如果这是正确的命名空间,那么适当 'import'标签应添加到'file:/// G:/ Dev / 的src /主/ XSD / Actor.xsd”。
actor.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" >
<include schemaLocation="Block.xsd"/>
<complexType name="Actor">
<sequence>
<element name="type" type="string" maxOccurs="1"
minOccurs="1">
</element>
<element name="blockList" type="Block" maxOccurs="1"
minOccurs="1"></element>
<element name="characteristicList" maxOccurs="1"
minOccurs="1">
<complexType>
<sequence>
<element name="characteristic"
maxOccurs="unbounded" minOccurs="1">
<complexType>
<sequence>
<element name="id" type="long"></element>
<element name="name"
type="string">
</element>
<element name="value"
type="string">
</element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</schema>
Block.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" >
<complexType name="Block">
<sequence>
<element name="greyList" type="boolean"></element>
<element name="blackList" type="boolean"></element>
<element name="blockListTimeToExit" type="long"></element>
<element name="blockedEventList">
<complexType>
<sequence>
<element name="blockedEvent" type="string" maxOccurs="unbounded"
minOccurs="0"></element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</schema>
答案 0 :(得分:0)
在...中更改您的XSD
<强> actor.xsd 强>
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="yourNamespace"
xmlns:prefix="yourNamespace">
<include schemaLocation="Block.xsd"/>
<complexType name="Actor">
<sequence>
<element name="type" type="string" maxOccurs="1" minOccurs="1">
</element>
<element name="blockList" type="prefix:Block" maxOccurs="1" minOccurs="1"></element>
<element name="characteristicList" maxOccurs="1" minOccurs="1">
<complexType>
<sequence>
<element name="characteristic" maxOccurs="unbounded" minOccurs="1">
<complexType>
<sequence>
<element name="id" type="long"></element>
<element name="name" type="string">
</element>
<element name="value" type="string">
</element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</schema>
<强> Block.xsd 强>
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="yourNamespace"
xmlns:apm="yourNamespace">
<complexType name="Block">
<sequence>
<element name="greyList" type="boolean"></element>
<element name="blackList" type="boolean"></element>
<element name="blockListTimeToExit" type="long"></element>
<element name="blockedEventList">
<complexType>
<sequence>
<element name="blockedEvent" type="string" maxOccurs="unbounded"
minOccurs="0">
</element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</schema>
我只添加了名称空间和前缀来使用Block.xsd中的类型。