xmlns:tns在使用schemagen时来自何处

时间:2012-11-14 17:32:21

标签: xsd jaxb schemagen annotated-pojos

我们正在使用schemagen从一些带注释的POJO创建XSD。

这是我们的蚂蚁目标

<target name="generate-xsd" depends="compile">
    <taskdef name="schemagen" classname="com.sun.tools.jxc.SchemaGenTask" 
                     classpathref="xjc.classpath"/>
    <schemagen srcdir="src" destdir="generated" includeantruntime="false">
        <include name="com/acme/exam/delivery/records/**"/>
        <schema namespace="http://www.acme.com/deliverylog" 
                            file="deliverylog.xsd"/>
        <schema namespace="" file="supplemental.xsd"/> 
    </schemagen>
</target>

这是生成

<xs:schema elementFormDefault="qualified" version="1.0" 
           targetNamespace="http://www.acme.com/deliverylog" 
           xmlns:tns="http://www.acme.com/deliverylog" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema">

tns命名空间的来源是什么?它表示什么?

1 个答案:

答案 0 :(得分:1)

该信息来自包级别注释@XmlSchema,可以在package-info类中找到。请参阅下面的示例。

<强>包信息

@XmlSchema(
    namespace = "http://www.acme.com/deliverylo",
    elementFormDefault = XmlNsForm.QUALIFIED)
package example;

import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;

示例XML

elementFormDefault指定哪些元素应该是名称空间限定的(true = all,false =仅全局元素),targetNamespace定义名称空间是什么。

<foo xmlns="http://www.acme.com/deliverylog">
    <bar>Hello World</bar>
</foo>

了解更多信息