2012-11-14 1 views
2

Nous utilisons schemagen pour créer un XSD à partir de POJO annotés.D'où provient xmlns: tns lors de l'utilisation de schemagen

Voici notre objectif fourmi

<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> 

Cela génère

<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"> 

Où sont les espaces de noms tns de et fait quoi faut-il signifie?

Répondre

1

Cette information provient de l'annotation au niveau du paquet @XmlSchema qui se trouve dans la classe package-info. Voir ci-dessous pour un exemple.

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 Exemple

elementFormDefault spécifie quels éléments doivent être namespace qualifiés (true = tout, faux = seuls éléments globaux), et targetNamespace définit ce que l'espace de noms est.

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

Pour plus d'informations