- From: David Beech <David.Beech@oracle.com>
- Date: Mon, 04 Dec 2000 09:57:58 -0800
- To: Ashok Malhotra <petsa@us.ibm.com>
- CC: PNiederau2@heyde.de, www-xml-schema-comments@w3.org
Just to clarify - I don't think we should give the impression that
we are immediately adopting this as a requirement for version 2.
Indeed, when the list facility was added at a late stage to version 1,
it was with the understanding that it would be kept very simple and
not be the start down a slippery slope of increasing complexity.
There is a point of view that XML primarily offers elements for
marking up and constraining structured information.
Thanks,
David
Ashok Malhotra wrote:
>
> This is an interesting idea but it comes late in the day.
> I suggest we take this as a requirement for version 2.
>
> All the best, Ashok
>
> PNiederau2@heyde.de@w3.org on 11/20/2000 10:57:55 AM
>
> Sent by: www-xml-schema-comments-request@w3.org
>
> To: www-xml-schema-comments@w3.org
> cc:
> Subject: Hierachy constraining facets
>
> Dear colleagues,
>
> I would like to propose an additional constraining facet for list types.
> Consider for example that you want to use a list of string values for
> storing the full path of a file or the name of a Java package, e. g. you
> define the following type in a XML schema
>
> <simpleType name="package">
> <list itemType="string">
> </simpleType>
>
> and use it as follows in an XML document:
>
> <aPackage type="package">org jdom input<aPackage/>
>
> as a representation for org.jdom.input.
>
> It is useful to restrict the values of "package" to the existing packages.
> E. g. you can do that by using the enumeration constraining facet:
>
> <simpleType name="packages">
> <restriction>
> <simpleType>
> <list itemType="string">
> </simpleType>
> <enumeration value="org"/>
> <enumeration value="org jdom"/>
> <enumeration value="org jdom adapters/">
> <enumeration value="org jdom input/">
> <enumeration value="org jdom output/">
> <enumeration value="org log4j"/>
> <enumeration value="org log4j examples/">
> <enumeration value="org log4j helpers/">
> </restriction>
> </simpleType>
>
> The possible values are hierarchically built as in many other examples. It
> would be nice if you could constrain the values of a list to such a
> hierarchically structure, i. e. to the paths of a tree. Due to this
> motivation I propose an additional constraining facet called hierarchy.
> Let's take a look at an example using this new facet:
>
> <simpleType name="packages">
> <restriction>
> <simpleType>
> <list itemType="string">
> </simpleType>
> <hierarchy value="org">
> <hierarchy value="jdom">
> <hierarchy value="adapters"/>
> <hierarchy value="input"/>
> <hierarchy value="output"/>
> </hierarchy>
> <hierarchy value="log4j">
> <hierarchy value="examples"/>
> <hierarchy value="helpers"/>
> </hierarchy>
> </hierarchy>
> </restriction>
> </simpleType>
>
> Instead of the enumeration facet the hierarchy facet is used here. A
> hierarchy facet has a value attribute like the enumeration facet. In
> addition, a hierarchy element can contain a number of hierarchy elements as
> children. The top level hierarchy element constrains the first element of
> the list. The i-th element of the list is constrained by the hierarchy
> elements on i+1-st level depending on the first i elements in the list.
>
> The hierarchy facet has the advantage that lists can be constrained more
> specific to a special group of values. All repetitions of common prefixes
> can be avoided. Implementations can store elements of such lists more
> efficiently.
>
> I tried to embed the hierarchy facet into the XML scheme part 2 in order to
> give a clear cut definition.
>
> I'm looking forward to your comments,
>
> Philipp Niederau
> Heyde AG, Bad Nauheim, Germany
>
> ----------------------------------------------------------------------------
>
> -------------------------------
>
> 4.2.16 (new)
>
> hierarchy provides for
> * Constraining a value space of a list to a specified set of values
>
> Schema Component: hierarchy
>
> [value]
> A tree called hierarchy where each node contains a value from the
> value
> space of the base type definition
> [annotation]
> Optional. An annotation.
>
> Validation Rule: hierarchy valid
>
> A value in a value space if facet-valid with respect on hierarchy if:
>
> 1. the value is a path (from the root to any desired leaf or inner node) of
> the hierarchy {value}
>
> A hierarchy is a root node. A node consists of a value combined with i
> successor nodes (i>=0).
>
> A path of a hierarchy is a list with n elements (n>0) where the first
> element is the value of the root node of the hierarchy and the i+1th
> element
> is the value of a successor node of the i-th element in the hierarchy for
> all 1<=i<n.
>
> 5.1.2 (additional)
>
> When a datatype is derived from a list datatype, also the hierarchy
> constraining facet can be used.
>
> 5.2.16 (new)
>
> The XML representation for a hierarchy schema component is a hierarchy
> element information item. The correspondences between the properties of the
> information item and properties the component are as follows:
>
> XML Representation Summary: hierarchy Element Information Item
>
> <hierarchy
> id = ID
> value = string
> {any attributes with non-schema namespace...} >
> Content: (annotation?) (hierarchy*)
> </hierarchy>
>
> hierarchy Schema Component
>
> {value} A hierarchy which is the root node build up from the hierarchy
> element item appearing as a child of the simple type. The hierarchy element
> builds a node where the value of the node is the value of the value item
> and
> the successor nodes are the hierarchies build up from the hierarchy
> elements
> appearing as children of the hierarchy item.
>
> {annotation} The annotation corresponding to the annotation element
> information item in the children, if present, otherwise null
>
> Example 1): Hierarchy
>
> <simpleType name="stringList">
> <list itemType="string">
> </simpleType>
>
> <simpleType name="package">
> <restriction base="stringList">
> <hierarchy value="org">
> <hierarchy value="jdom">
> <hierarchy value="adapters/">
> <hierarchy value="input"/>
> <hierarchy value="output/">
> </hierarchy>
> <hierarchy value="log4j">
> <hierarchy value="examples/">
> <hierarchy value="helpers"/>
> </hierarchy>
> </hierarchy>
> </restriction>
> </simpleType>
>
> <aPackage type="package">org jdom input<aPackage/>
>
> Example 2):
>
> If you want to allow further values at top level you can use
> a hierarchy element with an empty string value:
>
> <simpleType name="packages">
> <restriction>
> <simpleType>
> <list itemType="string">
> </simpleType>
> <hierarchy value="">
> <hierarchy value="org">
> <hierarchy value="jdom">
> <hierarchy value="adapters"/>
> <hierarchy value="input"/>
> <hierarchy value="output"/>
> </hierarchy>
> <hierarchy value="log4j">
> <hierarchy value="examples"/>
> <hierarchy value="helpers"/>
> </hierarchy>
> </hierarchy>
> <hierarchy value="com">
> <hierarchy value="sun"></hierarchy>
> <hierarchy>
> </restriction>
> </simpleType>
>
> It is an open question if it is a good idea to allow empty strings as
> values
> for inner nodes. It should also be discussed if multiple hierarchy elements
> with same values should be allowed as successor nodes for one hierarchy
> element. Both possibilities would lead to ambiguous paths, i. e. two
> different paths through the hierarchy can have the same lexical
> representation.
>
> Philipp Niederau
> Stefan Wachter
> Heyde AG, Bad Nauheim, Germany
Received on Monday, 4 December 2000 23:47:29 UTC