Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


[Request] Xerces-J: XML Schema 1.1 feature feedback

From: Khaled Noaman <knoaman@--.---.--->
To: j-users@------.------.---, -------@-----.---.---, -------------@--.---
Date: 11/9/2007 12:01:00 PM
Hi,

The W3C Schema WG has released a last call working draft of XML Schema 1.1 =

Part 1: Structures. We are considering implementing features from this 
draft in Xerces-J. We would like to understand which features users are 
most interested in and what scenarios they plan on using them in.

Here's a summary of the major features introduced in the spec:

All Group 
XML Schema 1.0 imposed many restrictions on <all> groups. XML Schema 1.1 
has relaxed several of those constraints:
<all> groups can now be extended by adding more members to them.
Wildcards are now allowed.
Particles in <all> groups can now have the value of maxOccurs be greater 
than 1.

<xs:complexType name="applianceType">
 <xs:all>
  <xs:element name="item" type="xs:string"/>
  <xs:element name="description" type="xs:string"/>
 </xs:all>
</xs:complexType>

<xs:complexType name="heaterType">
 <xs:complexContent>
  <xs:extension base="applianceType">
   <xs:all>
    <xs:element name="power=5Fin=5Fwatt" type="xs:integer"/>
    <xs:any processContents="lax"/>
   </xs:all>
  </xs:extension>
 </xs:complexContent>
</xs:complexType>

Assertions
A form of co-occurrence constraint, using XPath 2.0 expressions, that is 
associated with a complex type to constrain element and attribute values. 
The list of assertions is evaluated when a complex type is used to 
validate an element. 

<xs:complexType name="intRange">
 <xs:attribute name="min" type="xs:int"/>
 <xs:attribute name="max" type="xs:int"/>
 <xs:assert test="@min le @max"/>
</xs:complexType>

The value of the ?min? attribute must be less than the value of the ?max? 
attribute.

<xs:complexType name="arrayType">
 <xs:sequence>
  <xs:element name="entry" minOccurs="0" maxOccurs="unbounded"/>
 </xs:sequence>
 <xs:attribute name="length" type="xs:int"/>
 <xs:assert test="@length eq fn:count(./entry)"/>
</xs:complexType>

The value of the ?length? attribute must be equal to the number of 
occurrences of the ?entry? sub-elements.

Open Content Models
A new mechanism to allow content models to accept elements other than 
those explicitly defined. The schema author controls the degree of 
openness of the content model. They can specify whether elements should be =

accepted everywhere or at the end of the content model.

<xs:complexType name="name">
  <xs:openContent mode="suffix">
    <xs:any namespace="##other" processContents="skip"/>
  </xs:openContent>
  <xs:sequence>
    <xs:element name="given" type="xs:string"/>
    <xs:element name="middle" type="xs:string" minOccurs="0"/>
    <xs:element name="family" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

A schema author can also define a default open content at the schema 
document level, thus saving many copy/paste if the open content is the 
same across the complex types.

<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.example.com/example">
  . . .
  <xs:defaultOpenContent mode="interleave">
    <xs:any processContents="lax"/>
  </xs:defaultOpenContent>
  . . .
</xs:schema>

Enhanced Wildcards
In XML Schema 1.0, a schema author was only allowed to exclude elements 
and attributes from one namespace, the target namespace,  by using 
##other. In XML Schema 1.1, a schema author can define wildcards that 
exclude:
Elements and attributes from a set of namespaces by using [notNamespace]
A particular set of qualified elements and attributes by using [notQName]
?not-in-schema? elements and attributes (those that do not match any 
declaration in the schema)  by including the ##defined keyword in 
[notQName]

<xs:any namespace="http://www.w3.org/1999/XSL/Transform"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        notQName="xsl:comment xsl:fallback"/>

<xs:anyAttribute xmlns:ns1="http://ns1"
  notNamespace="ns1 ##targetNamespace"/>

Complex Type Restriction
The rules for checking validity of complex-type restrictions have been 
simplified. The set of elements or attributes accepted by a restriction 
must be a subset of those accepted by its base type.

Conditional Type Assignment
A form of co-occurrence constraint, using XPath 2.0, that allows for a 
type to be assigned to an element instance based on its properties 
(typically attribute values).

<xs:complexType name="valueType">
 <xs:simpleContent>
  <xs:extenstion base="xs:long">
   <xs:attribute name="kind" type="xs:string"/>
  </xs:extension>
 </xs:simpleContent>
</xs:complexType>

<xs:element name="value" type="valueType">
 <xs:alternative test="@kind='int'" type="xs:int"/>
 <xs:alternative test="@kind='short'" type="xs:short"/>
 <xs:alternative test="@kind='byte'" type="xs:byte"/>
</xs:element>

Default Attributes
A new mechanism that makes it easier for schema authors to include common 
attributes like xml:base and xml:lang in all their content models.

<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.example.com/example" 
    defaultAttributes="defaultAttrGroup">
  . . .
</xs:schema>

Conditional Inclusion
A mechanism that allows conforming XML Schema 1.1 processors to 
successfully ignore new constructs introduced in future version of the 
spec. It also allows schema authors to define schemas with newer 
constructs and be able to fall back to older versions when the newer 
constructs are not available.

<xsd:schema 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning">

  <xsd:element name="e" vc:minVersion="3.2">
    <!--* declaration suitable for 3.2 
        * and later processors *-->
  </xsd:element>
  <xsd:element name="e" 
    vc:minVersion="1.1"
    vc:maxVersion="3.1">
    <!--* declaration suitable for processors
        * supporting versions 1.1 through 3.1
        *-->
  </xsd:element>
  ...
</xsd:schema>


We would appreciate your feedback.
 
Regards,
Khaled



transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent