Jump to: navigation, search

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

Line 24: Line 24:
 
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.  This information is specified in a special Java source file, '''package-info.java'''.
 
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.  This information is specified in a special Java source file, '''package-info.java'''.
  
<div style="width:800px">
+
<div style="width:825px">
 
<source lang="java">
 
<source lang="java">
 
@XmlSchema(
 
@XmlSchema(
Line 38: Line 38:
 
This can be defined in EclipseLink XML Bindings as follows:
 
This can be defined in EclipseLink XML Bindings as follows:
  
<div style="width:800px">
+
<div style="width:825px">
 
<source lang="xml">
 
<source lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
Line 57: Line 57:
 
Using a simple '''Customer''' class, this will produce the following XML:
 
Using a simple '''Customer''' class, this will produce the following XML:
  
<div style="width:800px">
+
<div style="width:825px">
 
<source lang="xml">
 
<source lang="xml">
 
<customer xmlns="http://www.example.org/package">
 
<customer xmlns="http://www.example.org/package">
Line 73: Line 73:
 
Type level annotations will override the package level namespace.
 
Type level annotations will override the package level namespace.
  
<div style="width:800px">
+
<div style="width:825px">
 
<source lang="java">
 
<source lang="java">
 
package example;
 
package example;
Line 91: Line 91:
 
This can be defined in EclipseLink XML Bindings as follows:
 
This can be defined in EclipseLink XML Bindings as follows:
  
<div style="width:800px">
+
<div style="width:825px">
 
<source lang="xml">
 
<source lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
Line 115: Line 115:
 
This will produce the following XML:
 
This will produce the following XML:
  
<div style="width:800px">
+
<div style="width:825px">
 
<source lang="xml">
 
<source lang="xml">
 
<ns2:customer xmlns="http://www.example.org/type" xmlns:ns2="http://www.example.org/package">
 
<ns2:customer xmlns="http://www.example.org/type" xmlns:ns2="http://www.example.org/package">
Line 131: Line 131:
 
You can override the package or type namespaces at the property/field level.  All attribute and element annotations accept the '''namespace''' parameter.
 
You can override the package or type namespaces at the property/field level.  All attribute and element annotations accept the '''namespace''' parameter.
  
<div style="width:800px">
+
<div style="width:825px">
 
<source lang="java">
 
<source lang="java">
 
package example;
 
package example;
Line 151: Line 151:
 
This can be defined in EclipseLink XML Bindings as follows:
 
This can be defined in EclipseLink XML Bindings as follows:
  
<div style="width:800px">
+
<div style="width:825px">
 
<source lang="xml">
 
<source lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
Line 175: Line 175:
 
This will produce the following XML:
 
This will produce the following XML:
  
<div style="width:800px">
+
<div style="width:825px">
 
<source lang="xml">
 
<source lang="xml">
 
<ns3:customer xmlns="http://www.example.org/type" xmlns:ns2="http://www.example.org/property"
 
<ns3:customer xmlns="http://www.example.org/type" xmlns:ns2="http://www.example.org/property"

Revision as of 15:04, 25 July 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 / 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.


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. This information is specified in a special Java source file, package-info.java.

@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 can be defined in EclipseLink XML Bindings as follows:

<?xml version="1.0" encoding="UTF-8"?>
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm">
    <xml-schema
        element-form-default="QUALIFIED"
        namespace="http://www.example.org/package">
    </xml-schema>
 
    <java-types>
        <java-type name="Customer">
        ...
 
</xml-bindings>

Using a simple Customer class, this will produce the following XML:

<customer xmlns="http://www.example.org/package">
   <name>Jane Doe</name>
   <account>36328721</account>
</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;
 
@XmlRootElement
@XmlType(namespace="http://www.example.org/type")
public class Customer {
   private String name;
 
   private String account;
 
   ...
}

This can be defined in EclipseLink XML Bindings as follows:

<?xml version="1.0" encoding="UTF-8"?>
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm">
    <xml-schema
        element-form-default="QUALIFIED"
        namespace="http://www.example.org/package">
    </xml-schema>
 
    <java-types>
        <java-type name="Customer">
            <xml-type namespace="http://www.example.org/type" />
            <java-attributes>
                <xml-element java-attribute="name" />
                <xml-element java-attribute="account" />
            </java-attributes>
        </java-type>
    </java-types>
</xml-bindings>

This will produce the following XML:

<ns2:customer xmlns="http://www.example.org/type" xmlns:ns2="http://www.example.org/package">
    <name>Jane Doe</name>
    <account>36328721</account>
</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;
 
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(namespace="http://www.example.org/type")
public class Customer {
   private String name;
 
   @XmlElement(namespace="http://www.example.org/property")
   private String account;
 
   ...
}

This can be defined in EclipseLink XML Bindings as follows:

<?xml version="1.0" encoding="UTF-8"?>
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm">
    <xml-schema
        element-form-default="QUALIFIED"
        namespace="http://www.example.org/package">
    </xml-schema>
 
    <java-types>
        <java-type name="Customer">
            <xml-type namespace="http://www.example.org/type" />
            <java-attributes>
                <xml-element java-attribute="name" />
                <xml-element java-attribute="account" namespace="http://www.example.org/property" />
            </java-attributes>
        </java-type>
    </java-types>
</xml-bindings>

This will produce the following XML:

<ns3:customer xmlns="http://www.example.org/type" xmlns:ns2="http://www.example.org/property"
    xmlns:ns3="http://www.example.org/package">
    <name>Jane Doe</name>
    <ns2:account>36328721</ns2:account>
</ns3:customer>

Only the account element is qualified with the "http://www.example.org/property" namespace.


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