如何告诉我的 JAXB 输出包含对创建它的 XSD 的引用?

发布于 2024-12-12 04:50:59 字数 2151 浏览 0 评论 0原文

这是我的pages.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>

这是我的pages.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> 

如何将该属性自动添加到 JAXB 输出的 data 元素上?

Here is my pages.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>

Here is my pages.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>

Here is what I want the output to look like, notice the 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> 

How do I get that attribute onto the data element the JAXB output automatically?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

活雷疯 2024-12-19 04:50:59

Marshaller 上将属性 jaxb.noNamespaceSchemaLocation 设置为所需的值。

编辑:检查 Marshaller 中有关受支持属性的部分文档以及方法 setProperty 了解更多信息。

Set property jaxb.noNamespaceSchemaLocation with the desired value on your Marshaller.

EDIT: check the section on supported properties in the Marshaller documentation as well as method setProperty for additional info.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文