Jump to: navigation, search

Difference between revisions of "EclipseLink/UserGuide/MOXy/Type Level/Setting Up Namespace Information"

m
Line 1: Line 1:
 
{{EclipseLink_UserGuide
 
{{EclipseLink_UserGuide
 +
|eclipselink=y
 +
|eclipselinktype=MOXy
 
|info=y
 
|info=y
 +
|api=y
 +
|apis= * [http://www.eclipse.org/eclipselink/api/latest/javax/xml/bind/annotation/XmlSchema.html XmlSchema]
 +
|toc=y
 
}}
 
}}
  
 
=Setting Up Namespace Information=
 
=Setting Up Namespace Information=
Most XL documents are qualified with a namespace. You can qualify elements at the following levels:
 
*Package
 
*Type
 
*Field or Property
 
In most cases, package level annotation is sufficient. You can use the other levels to customize your document. Use the the '''@XmlSchema''' annotation to specify the namespace.
 
  
 +
Most XML documents are qualified with a namespace. You can namespace-qualify elements of your Java class at the following levels:
  
 +
* Package
 +
* Type
 +
* Field
 +
 +
In most cases, package-level annotation is sufficient. You can use the other levels to customize your document. Use the the <tt>@XmlSchema</tt> annotation to specify the namespace.
 +
 +
== Package Level ==
  
==Package Level==
 
 
Use the '''@XmlSchema''' annotation on the package to set a default namespace and specify that all elements in the package are qualified with the namespace.
 
Use the '''@XmlSchema''' annotation on the package to set a default namespace and specify that all elements in the package are qualified with the namespace.
  

Revision as of 16:53, 6 January 2011

EclipseLink MOXy

link="http://wiki.eclipse.org/EclipseLink"
EclipseLink
Website
Download
Community
Mailing ListForumsIRC
Bugzilla
Open
Help Wanted
Bug Day
Contribute
Browse Source

Elug api package icon.png Key API

Setting Up Namespace Information

Most XML documents are qualified with a namespace. You can namespace-qualify elements of your Java class at the following levels:

  • Package
  • Type
  • Field

In most cases, package-level annotation is sufficient. You can use the other levels to customize your document. Use the the @XmlSchema annotation to specify the namespace.

Package Level

Use the @XmlSchema annotation on the package to set a default namespace and specify that all elements in the package are qualified with the namespace.

@XmlSchema(
    namespace = "http://www.example.org/package",
    elementFormDefault = XmlNsForm.QUALIFIED)
package example;
 
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;

This will produce the following XML:

<customer
    xmlns="http://www.example.org/package"
    id="123">
    <name>Jane Doe</name>
</customer>

All elements are qualified with the http://www.example.org/package namespace.


Type Level

Type level annotations will override the package level namespace.

package example;
 
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
@XmlRootElement
@XmlType(namespace="http://www.example.org/type")
public class Customer {
 
    private long id;
    private String name;
 
    @XmlAttribute
    public long getId() {
        return id;
    }
 
    public void setId(long id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
}

This will produce the following XML:

<ns2:customer
    xmlns="http://www.example.org/type"
    xmlns:ns2="http://www.example.org/package"
    id="123">
    <name>Jane Doe</name>
</ns2:customer>

Only elements inside the Customer type are qualified with the http://www.example.org/type namespace.


Field/Property Level

You can override the package or type namespaces at the property/field level. All attribute and element annotations accept the namespace parameter.

package example;
 
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
@XmlRootElement
@XmlType(namespace="http://www.example.org/type")
public class Customer {
 
    private long id;
    private String name;
 
    @XmlAttribute
    public long getId() {
        return id;
    }
 
    public void setId(long id) {
        this.id = id;
    }
 
    @XmlElement(namespace="http://www.example.org/property")
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
}

This will produce the following XML:

<ns2:customer
    xmlns="http://www.example.org/property"
    xmlns:ns2="http://www.example.org/package"
    id="123">
    <name>Jane Doe</name>
</ns2:customer>

The Name element is qualified with the http://www.example.org/property namespace.


Eclipselink-logo.gif
Version: 2.2.0
Other versions...