schemagen.exe生成tns前缀

时间:2009-09-28 14:25:10

标签: java xsd jaxb

工具schemagen.exe从类生成xsd定义,例如结果是

<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="aa/bb" xmlns:a="aa/bbb" xmlns:tns="aa/bb" xmlns:xs="http://www.w3.org/2001/XMLSchema">

当我在包级别上放入package-info.class时:

@XmlSchema(namespace = "aa/bb", 
           elementFormDefault = XmlNsForm.QUALIFIED,
           xmlns = {@XmlNs(prefix="a", namespaceURI="aa/bb"),
                    @XmlNs(prefix="xs",namespaceURI="http://www.w3.org/2001/XMLSchema")})

package aa.bb;
import javax.xml.bind.annotation.*;

关键是现在存在两个前缀:我首选的短前缀:a和schemagen.exe自动生成tns前缀。这是一个棘手的问题,因为所有生成的类型都使用tns前缀,如果在没有tns的情况下使用我自己的前缀,我会很高兴。 我该怎么办?

3 个答案:

答案 0 :(得分:1)

这是低技术且容易出错的,但为什么不在文本编辑器中打开XSD文档并使用一些精心选择的全局搜索和替换命令?

答案 1 :(得分:1)

学会喜欢tns?毕竟,使用它来表示XML模式中的目标命名空间是一种惯例。

答案 2 :(得分:0)

在运行时,您可以使用JAXB NamespacePrefixMapper更改所选内容的生成前缀。