[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] Which is more declarative? More XMLish?
- From: Michael Kay <mike@saxonica.com>
- To: Dimitre Novatchev <dnovatchev@gmail.com>
- Date: Sat, 2 Dec 2017 18:15:53 +0000
> On 2 Dec 2017, at 17:04, Dimitre Novatchev <dnovatchev@gmail.com> wrote:
>
>
> This is not a set -- this is, strictly speaking, a sequence.
>
> More precisely, this is just one of the n! possible representations of
> the set {0, 2, ..., 2*(n-1)} as a specific sequence. I believe in XML
> Schema there is a way to express that the order of elements doesn't
> matter -- this must be specified when defining a set.
No, I don't think there is any way in XSD of saying what "matters" and what doesn't. XSD only says what is allowed, not what it means.
Perhaps you were thinking of xs:all, which says that several elements (A, B, and C say) are allowed to appear in any order - but it doesn't say whether the order matters.
> But an XML document cannot contain infinite number of
> elements (unless W3C makes a new XML Spec allowing this -- and this
> would be conveniently hand-in-hand with XSLT streaming).
I don't think there is any rule that says the number of elements in a document must be finite.
Oddly, there are some things that are required to be finite: the number of items in a value of variety {list}, the number of characters in a string, the number of digits in a decimal number. But I don't think there is a requirement that the number of elements in a document must be finite.
I remember complaining about this: since XSD says that strings should be finite, is an XSD processor expected to report an invalidity when they are not? I was assured that it was quite possible to write a test that would distinguish finite from infinite strings, provided the user wanting the answer has infinite patience...
One can conceive of infinite documents that are representable using finite memory. I'm not sure they have any practical applications though.
Perhaps more interestingly, XPath 3.1 introduces maps, and there is no rule that says a map must be finite. It is possible to take a finite graph structure (such as schema component model) and represent each node in the graph as a map; the map will then be infinite (you can navigate around it for ever, going round and round in circles). There are no operations in XPath/XQuery/XSLT that allow you to generate an infinite map, but one can envisage operations outside the language that do so. Saxon has mechanisms for generating maps using non-XPath operations (for example in Saxon-JS an external Javascript object is presented as a map) and this means that an operation such as map:find which traverses a map recursively becomes potentially non-terminating.
Michael Kay
Saxonica
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]