Как мне указать выводу JAXB включить ссылку на XSD, который его создал? - PullRequest
3 голосов
/ 24 октября 2011

Вот мои страницы. Xsd

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:mac="http://www.tvworks.com/tva/xml/ns/max/data-types" 
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">

 <xs:import namespace="http://www.tvworks.com/tva/xml/ns/max/data-types" 
            schemaLocation="http://developer.tva.tvworks.com/xml/ns/max/data-types-3.2.xsd"/>


 <xs:element name="data">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="scenes" type="scenesType"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>

 <xs:complexType name="scenesType">
  <xs:sequence>
   <xs:element name="row" minOccurs="1" maxOccurs="unbounded">
    <xs:complexType>
     <xs:sequence>
      <xs:element name="page" type="mac:page-ref"/>
     </xs:sequence>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
 </xs:complexType>
</xs:schema>

Вот мои страницы. Xjb

<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          version="2.1">
    <bindings schemaLocation="pages.xsd" version="1.0"">
        <schemaBindings>
            <package name="com.mycompany.pages"/>
        </schemaBindings>
    </bindings>
</bindings>

Вот то, что я хочу, чтобы вывод был похож, обратите внимание на xsi:noNamespaceSchemaLocation="pages.xsd".

<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="pages.xsd">
 <scenes>
  <row>
   <page>page1</page>
  </row>
  <row>
   <page>page2</page>
  </row>
    <row>
   <page>page3</page>
  </row>
    <row>
   <page>page4</page>
  </row>
 </scenes>
</data> 

Как я могу получить этот атрибут на элемент data, который автоматически выводит JAXB?

1 Ответ

3 голосов
/ 24 октября 2011

Установите свойство jaxb.noNamespaceSchemaLocation с нужным значением на вашем Marshaller.

РЕДАКТИРОВАТЬ: проверьте раздел о поддерживаемых свойствах в документации Marshaller , а также метод setProperty для получения дополнительной информации.

...