[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: Re: Example [Was: Two things to strengthen the spec]
A few comments: 1. I don't think it's necessary to show the simplified schema after each stage of simplification. I think it's sufficient to show the result after all simplifications are performed. 2. In section 2 I would describe the data model in words rather than introducing any notation at that point. I would wait until the example at the end of section 6 to represent the instance of the data model formally using the notation that is introduced in the earlier subsections of section 6. 3. I see that you have addressed the problem of extraneous whitespace by adopting a special formatting style that puts the indentation in the tag. Technically, that's a perfectly reasonable approach, but I wonder whether readers won't be disconcerted by this. --On Tuesday, July 31, 2001 5:38 PM +0900 Murata Makoto <mura034@attglobal.net> wrote: > I revised my example and sketched subsections of Sections 2, 3, 4, 6, > and 7. Before XMLizing these subsections, please let me know if > they deserve the length. > > <section> > <title>Example</title> > > <para>Throughout this specification, we use the following XML document > as an example.</para> > > <programlisting> > <?xml version="1.0"?> > <foo xmlns="" > ><pre1:bar1 xmlns:pre1="http://n1" > /><pre2:bar2 xmlns:pre2="http://n2" > /></foo> > > Note that the root element has two child elements but has no child > strings. > > This document is represented by an element foo containing two child > elements. > > We use the following notation: > > (...) > represents a set > > {...} > rrepresents a sequence > > prefix -> uri > represents a prefix-namespace pair, or the default > namespace when the prefix is the empty string. > > element(n,cx, a, m) > an element with name n, context cx, attributes a and mixed > sequence m as children > > context(b, pair1, pair2, ....) > a context with base uri b and a mapping given by > pair1, pair2, .... > > Let cx0 be the context for the root element. We assume that uri1 is > the base URI of this document. Then, > > cx0 = context(uri1, ""->"") > > The root element e0 is represented by > > element(name("", foo), cx0, {}, {e1, e2}) > > where e1 and e2 represent the first and second child element, > respectively. > > Let cx1 and cx2 be contexts of e1 and e2. Then, > > cx1 = context(uri1, "" -> "", pre1 -> "http://n1") > > and > > cx2 = context(uri1, "" -> "", pre2 -> "http://n2"). > > > e1 is represented by by > > element(name("http://n1", bar1), cx1, {}, {}) > > and e2 is represented by by > > element(name("http://n2", bar2), cx2, {}, {}) > > > 3.2 Example > > Here is an example schema. > > ex10.rng > > 4.20 Example > > We consider how a schema in 3.2 is normalized, but we use the XML > instance syntax for convenience. We assume that unprefixed > tags are in the namespace "http://relaxng.org/ns/structure/0.9". > > 4.20.1 Result of 4.1 > > ex11.rng > > 4.20.2 Result of 4.2 > > <element name="foo" ns="" > ><element ns="http://n1" name="bar1" > ><empty > /></element > ><element ns="http://n2" name="bar2" > ><empty > /></element >> </element> > > > 4.20.3 Result of 4.3, 4.4, 4.5, and 4.6 > > These steps do not apply to this example. > > 4.20.4 Result of 4.7 > > <element ns="" > ><name>foo</name > ><element ns="http://n1" > ><name>bar1</name > ><empty > /></element > ><element ns="http://n2" > ><name>bar2</name > ><empty > /></element >> </element> > > > 4.20.5 Result of 4.8 > > <element > ><name ns="">foo</name > ><element > ><name ns="http://n1">bar1</name > ><empty > /></element > ><element > ><name ns="http://n2">bar2</name > ><empty > /></element >> </element> > > > 4.20.6 Result of 4.9 and 4.10 > > These steps do not apply to this example. > > 4.20.7 Result of 4.11 > > <element > ><name ns="">foo</name > ><group > ><element > ><name ns="http://n1">bar1</name > ><empty > /></element > ><element > ><name ns="http://n2">bar2</name > ><empty > /></element > ></group >> </element> > > > 4.20.8 Result of 4.12, 4.13, 4.14, and 4.15 > > These steps do not apply to this example. > > 4.20.9 Result of 4.16 > > <grammar > ><start > ><element > ><name ns="">foo</name > ><group > ><element > ><name ns="http://n1">bar1</name > ><empty > /></element > ><element > ><name ns="http://n2">bar2</name > ><empty > /></element > ></group > ></element > ></start >> </grammar> > > > 4.20.10 Result of 4.17 > > <grammar > ><start > ><element > ><name ns="">foo</name > ><group > ><ref name="bar1" > /><ref name="bar2" > /></group > ></element > ></start > > ><define name="bar1" > ><element > ><name ns="http://n1">bar1</name > ><empty > /></element > ></define > > ><define name="bar2" > ><element > ><name ns="http://n2">bar2</name > ><empty > /></element > ></define >> </grammar> > > 4.20.11 Result of 4.18 and 4.19 > > These steps do not apply to this example. > > 6.5 Example > > Let nameclass nc1 = <name ns="http://n1">bar1</name> and > nameclass nc2 = <name ns="http://n2">bar2</name>. > > Then, by the inference rule (name) in 6.1, we have > > name("http://n1", "bar1") in nc1 > > and > name("http://n2", "bar2") in nc2 . > > By the inference rule (empty) in 6.2.3, we have > > cx1 |= {};() = <empty/> => {};{} > > and > > cx2 |= {};() = <empty/> => {};{} > > Since > > deref(bar1) = > <element> > <name ns="http://n1">bar1</name> > <empty/> > </element> > > we have > > cx0 |- {}; e1 =~ <ref name="bar1"/> => {}; {} > > by applying the inference rule (element) in 6.2.8. Note that > we have chosen cx0, since any context is allowed. > > Likewise, we have > > cx0 |- {}; e2 =~ <ref name="bar2"/> => {}; {} > > By the inference rule (group) in 6.2.1, we have > > cx0 |- {}; (e1, e2) > =~ <group><ref name="bar1"/><ref name="bar2"/></group> > => {}; {} > > Since > > deref(foo) = <element><name>foo</name> > <group> > <ref name="bar1"/> > <ref name="bar2"/> > </group> > </element> > , > > we have > > cx3 |- {}; element(name("", foo), cx0, {}, {e1, e2}) =~ > <ref name="foo"/> => {}; {} > > by the the inference rule (element) in 6.2.8 again. Here > cx3 is an arbitrary context. > > Finally, since start() = <ref name="foo"/>, we can apply the > inference rule (valid) in 6.4 and obtain > > valid(e0) > > > 7.5 Example > > Observe that the normalized schema in 4.20 satisfies all > restrictions in 7.1 thorough 7.4. > > > ---- > Murata Makoto mura034@attglobal.net > > ------------------------------------------------------------------ > To unsubscribe from this elist send a message with the single word > "unsubscribe" in the body to: relax-ng-request@lists.oasis-open.org > >
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC