[
Lists Home |
Date Index |
Thread Index
]
On Wed, 11 Jun 2003, Michael Kay wrote:
> XSLT/XPath is closed with respect to its own data model. I don't know
> how XSLT's data model relates to a "regular tree language", and I'm not
> familiar with notations such as (a^n b^n).
>
> Is there any chance you could translate this into XML terminology for
> us?
You are right that these are about sequences. I will try to do that below.
a^n b^n means:
a is <a/>
b is <b/>
a^n means sequence of any number of <a/>
a^n b^n means sequence of any number of <a/> followed by sequence of the
*same* number of <b/>
The sequences which conform to this are:
empty sequence, <a/><b/>, <a/><a/> <b/><b/> ... etc
You cannot write an XML schema/regular tree grammar for this output..
In my example, when I say S -> s (A, S, B) can be read as
<!ELEMENT a (a, s, b)>
S -> s (A, S, B) | s () can be read as
<!ELEMENT s (a, s, b)?>
A -> a () can be read as
<!ELEMENT a EMPTY>
cheers and regards - murali.
> The examples seem to suggest that your concerns are with queries that
> generate a sequence of nodes rather than a single node. Sequences are
> part of the data model, and the language is closed over this space.
>
> Michael Kay
>
> >
> > I have seen two kinds of operations under which regular tree
> > languages are not closed.. that is the result is not a
> > regular tree language..
> >
> > (a) Consider the schema:
> > S -> s (A, S, B) | s ()
> > A -> a ()
> > B -> b ()
> >
> > if we write a query like // (a | b) -- the result is (a^n
> > b^n) which is not regular tree language..
> >
> > (b) Consider
> > S -> s (A*)
> > A -> a ()
> >
> > consider the query
> > for $x in //a
> > return <b/>
> > for $x in //a
> > return <c/>
> >
> > the result is (b^n c^n)
> >
> > The question is has the new constructs in XPath made it not
> > closed or not.. It might have.. If someone has studied these
> > aspects, then we can know if XPath 2.0 is different from
> > XPath 1.0 in these respects also..
> >
> > cheers and regards - murali.
|