2

架构根

<xs:schema jxb:version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema
http://www.nubean.com/schemas/schema.xsd" >
<xs:element name="UsOrCanadaAddress" >

JAXB 绑定 XML

<?xml version='1.0' encoding='utf-8' ?>
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<jxb:bindings node="/xs:schema" schemaLocation="address.xsd" >
<jxb:schemaBindings>
<jxb:package name="com.apress.jaxb1.example" ></jxb:package>
</jxb:schemaBindings>
</jxb:bindings>
</jxb:bindings>  

我从 JAXB 开始,这是我在书中遇到的两个标签。
关于这两个标签的各个部分,我有一些基本问题。他们来了:

问题一:

xmlns:jxb="http://java.sun.com/xml/ns/jaxb"  

该属性是否必须具有完全相同的值?

问题2:

xsi:schemaLocation="http://www.w3.org/2001/XMLSchema
    http://www.nubean.com/schemas/schema.xsd"  

这个属性,在模式中..在模式中???我的意思是,我可以理解 XML 文档中指向 XML 模式的属性,但是这个?如果不触发 schema-ception 它会做什么?
此外,命名空间-位置对。在 XML 文档中,它将指向一个物理位置。在这里,它是否必须指向一个物理位置?

问题3:绑定
这个词。在我的脑海中,我明白你可以在移动或计算机应用程序中进行更改。它们具有您可以更改的默认值。在上面的绑定文档中,他们已经更改了包设置。现在,假设我不想将文档保存在任何包装中,我应该保持原样吗? 我不需要编写那个绑定 XML 文档吗? settings

问题 4:
在 JAXB 绑定文档schemaLocation="address.xsd"中指向模式位置。现在这是物理位置。如果我的模式包含一个 JAR 文件怎么办?

4

1 回答 1

1

问题 1 - 此属性是否必须具有完全相同的值?

JAXB (JSR-222)实现期望绑定文件中的元素使用"http://java.sun.com/xml/ns/jaxb"名称空间限定。它不依赖于使用的特定前缀。


问题 2 - 这个属性,在模式中.. 在模式中???

由于 XML 模式是一个 XML 文档,我想这样做是可以的,但我自己从未在 XML 模式中这样做过。


问题 3 - 单词绑定。

我对“绑定”这个词有一种爱恨交织的关系。它已经与将对象转换为/从不一定持久的数据格式(即 XML、JSON 等)相关联。


问题 4 - 在 JAXB 绑定文档中 schemaLocation="address.xsd" 指向模式位置。

我不相信schemaLocation绑定文件中需要。


由于您刚刚开始使用 JAXB,您可能不想被绑定文档挂断。仅当您需要自定义从 XML 模式生成的类时才需要它。下面是一个不需要它的例子:

我发现更有趣的用例是盯着对象。下面是一个您可能会觉得有用的示例:

于 2013-05-15T19:33:47.757 回答