Ошибка в XSD без пространства имен

У меня есть два XSD внизу, следующая ситуация: я использую службу REST и проехал два XSD для создания классов через JAXB, бывает, что мне нужно получить целевое пространство имен двух XSD, потому что кажется, что служба имеет нет пространства имен, когда атрибуты потребления имеют значение null, созданный JAXB класс называется package-info.java

@javax.xml.bind.annotation.XmlSchema(namespace = "", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)

Где я удалил пространство имен как низкое (с XSD с этим целевым пространством имен), и это сработало, но я должен взять XSD, и в одном из них я использую элемент, который указывает на другой. Но выдавая эту ошибку форматирования, я пытался импортировать, но спрашивает пространство имен, оба xsd находятся в одном каталоге

Ошибка:

src-resolve.4.2: Компонент разрешения ошибок «Блок». Было обнаружено, что «Блок» находится в пространстве имен «http://www.w3.org/2001/ XMLSchema», но на компоненты из этого пространства имен нельзя ссылаться из документа схемы «file:///G:/Dev/src/main/xsd/Actor.xsd». Если это неправильное пространство имен, возможно, необходимо изменить префикс «BlockList». Если это правильное пространство имен, то соответствующий тег «импорт» должен быть добавлен в «file:///G:/Dev/src/main/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>

person WhoAre    schedule 07.09.2014    source источник
comment
вы решили эту проблему? если да, то как вы ее решили?   -  person Xstian    schedule 13.10.2014


Ответы (1)


Измените свои 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.

person Xstian    schedule 08.09.2014