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 14:04, 25 July 2011

EclipseLink MOXy

Eclipselink-logo.gif
EclipseLink
Website
Download
Community
Mailing ListForumsIRCmattermost
Bugzilla
OpenHelp WantedBug 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...