- From: Dave Hollander <dmh@contivo.com>
- Date: Tue, 5 Dec 2000 16:35:43 -0800
- To: David Beech <David.Beech@oracle.com>, Ashok Malhotra <petsa@us.ibm.com>
- Cc: PNiederau2@heyde.de, www-xml-schema-comments@w3.org
I agree that we need to consider complex list facilities and I agree that we may well reject them infavor of more explicit XML syntax based markup. May I suggest we consider it a canidate requirement. Regards, Dave Hollander > -----Original Message----- > From: www-xml-schema-comments-request@w3.org > [mailto:www-xml-schema-comments-request@w3.org]On Behalf Of > David Beech > Sent: Monday, December 04, 2000 10:58 AM > To: Ashok Malhotra > Cc: PNiederau2@heyde.de; www-xml-schema-comments@w3.org > Subject: Re: Hierachy constraining facets > > > 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 Tuesday, 5 December 2000 19:36:56 UTC