| // |
| // Copyright (c) 2020 Contributors to the Eclipse Foundation |
| // |
| |
| == [[a151]]Requirements |
| |
| This chapter specifies the scope and requirements for this version of the specification. |
| |
| === XML Schema to Java |
| |
| ==== W3C XML Schema support |
| |
| The mapping of the following XML Schema |
| components must be specified. |
| |
| * type substitution ( _@xsi:type_ ) |
| * element substitution group ( _<xs:element |
| @substitutionGroup_ >) |
| * wildcard support( _xs:any_ and |
| _xs:anyAttribute_ ) |
| * identity constraints ( _xs:key_ , |
| _xs:keyref_ and _xs:unique_ ) |
| * redefinition of declaration ( _xs:redefine_ |
| ) |
| * NOTATION |
| |
| For binding builtin XML Schema datatypes which |
| do not map naturally to Java datatypes, Java datatypes specified by JAXP |
| 1.3 (JSR 206) must be used. |
| |
| ==== Default Bindings |
| |
| There must be a detailed, unambiguous |
| description of the default mapping of schema components to Java |
| representations in order to satisfy the portability goal. |
| |
| ==== Customized Binding Schema |
| |
| A binding schema language and its formats must |
| be specified. There must be a means to describe the binding without |
| requiring modification to the original schema. Additionally, the same |
| XML Schema language must be used for the two different mechanisms for |
| expressing a binding declaration. |
| |
| ==== Overriding default binding behavior |
| |
| Given the diverse styles that can be used to |
| design a schema, it is daunting to identify a single ideal default |
| binding solution. For situations where several equally good binding |
| alternatives exist, the specification will describe the alternatives and |
| select one to be the default (see link:jaxb.html#a165[See |
| Customized Binding Schema]). |
| |
| The binding schema must provide a means to |
| specify an alternative binding for the scope of an entire schema. This |
| mechanism ensures that if the default binding is not sufficient, it can |
| easily be overridden in a portable manner. |
| |
| ==== JAX-WS 2.0 |
| |
| ===== Backward Compatibility |
| |
| Mapping of XML Schema to schema derived Java |
| classes as specified in versions of JAX-RPC 1.x either by default or by |
| customization is out of scope. |
| |
| ===== Binding XML Schema to schema derived classes |
| |
| A binding of XML Schema constructs to schema |
| derived classes must be specified. JAXB 1.0 specified the binding of XML |
| Schema constructs to schema derived interfaces. However, JAX-RPC 1.x |
| specified the binding of XML Schema constructs to schema derived |
| classes, not interfaces. To provide continued support for JAX-RPC 1.x |
| programming model, a customization to enable the binding of XML Schema |
| constructs to schema derived classes will be added. |
| |
| ===== Accessing MIME content stored as an attachment |
| |
| The W3C XMLP MTOM/XOP document and WS-I AP |
| 1.0[WSIAP] both provide mechanisms for embedding references to SOAP |
| attachments in SOAP messages. It is desirable to bind these to suitable |
| Java types (e.g. Image or DataHandler) rather than just provide URI |
| refs. |
| |
| ===== Serializable |
| |
| A customization must be specified to enable |
| schema derived classes to implement the `java.io.Serializable` |
| interface. This capability enables the schema derived instance to be |
| passed as EJB method parameter and to any other API that requires |
| Serializable instances. |
| |
| ===== Disabling Databinding |
| |
| A customization to disable databinding must be |
| specified. When databinding is disabled, an XML Schema component is |
| bound to an XML fragment representation rather than a strongly typed |
| datatype determined by mapping rules. Binding to XML fragment allows the |
| use of alternative binding technologies for example to perform XML |
| operations. |
| |
| === Java to XML Schema |
| |
| ==== Default Mapping |
| |
| A default mapping Java constructs to XML |
| Schema must be specified. The default mapping may be overridden by |
| customizations described in link:jaxb.html#a184[See Customized |
| Mapping]”. |
| |
| ==== Customized Mapping |
| |
| A customization mechanism to override default |
| mapping of Java constructs to XML Schema constructs must be specified. |
| Since XML Schema provides a much richer feature set than Java language |
| for defining data models, the scope of customizations will be restricted |
| to enable mapping to commonly used XML Schema constructs. |
| |
| Support for the following mechanism must be |
| specified: |
| |
| * customization mechanism using the JSR175 |
| program annotation facility. |
| |
| ==== JAX-WS 2.0 |
| |
| ===== WSDL <types> |
| |
| The WSDL <types> is generated using Java |
| constructs to XML Schema mapping. The latter should therefore define |
| customizations that enable mapping to XML Schema constructs commonly |
| used in web services, subject to the requirements in |
| link:jaxb.html#a184[See Customized Mapping]” and |
| link:jaxb.html#a182[See Default Mapping]”. |
| |
| ===== Backward Compatibility |
| |
| Mapping of existing Java constructs to XML |
| Schema constructs as specified in JAX-RPC versions 1.x, either by |
| default or through customization, is out of scope. |
| |
| === Binding Framework |
| |
| ==== Disabling schema validation |
| |
| The specification will provide an ability to |
| disable schema validation for unmarshal and marshal operations. |
| |
| There exist a significant number of scenarios |
| that do not require validation and/or can not afford the overhead of |
| schema validation. An application must be allowed to disable schema |
| validation checking during unmarshal and marshal operations. The goal of |
| this requirement is to provide the same flexibility and functionality |
| that a SAX or DOM parser allows for. |
| |