On 23/07/2021 04:07, Amelia A Lewis wrote:
> On Thu, 22 Jul 2021 23:20:37 +0100, Pete Cordell wrote:
>> If you're not interested in the new syntax being a subset of XML and
>> you still want namespaces, you'll want to consider an alternative way
>> of mapping namespace prefixes to namespaces so that the mapping is
>> available BEFORE it is required. Currently the mapping mechanism
>> requires a fair bit of pre-fetching and caching which is sub-optimal.
>>
>> Something like the following might work:
>>
>> <:and http://www.whatever.com/:>
>> <and:harry />
>
> Why? That still separates :and from and:, so if you start parsing on
> the <and:harry /> line, you're busted. And why use a non-default prefix
> for an element?
>
> <harry xmlns="http://www.whatever.com">
And if the have the following and want to extract sally you are still
busted:
<and:harry xmlns:and="http://www.whatever.com">
<and:sally>
...
</and:sally>
</and:harry>
Or if you have the following and want harry:
<tom xmlns:and="http://www.whatever.com">
<and:harry>
<and:sally>
...
</and:sally>
</and:harry>
</tom>
So the current scheme is troublesome to implement and only gives you a
benefit in certain key situations.
> It is almost never *necessary* to bind a namespace to a prefix for use
> with elements. It can be verbose to repeatedly re-declare with a bad
> schema design like this:
>
> <root>
> <othernschild xmlns="http://other.ns.example.com" />
> <othernschild xmlns="http://other.ns.example.com" />
> <othernschild xmlns="http://other.ns.example.com" />
> <othernschild xmlns="http://other.ns.example.com" />
> <!-- ... -->
> </root>
That looks very undesirable. And composition of grammars using
components from different namespaces seems a common and useful use-case
even if it isn't the only one.
Pete.
--
---------------------------------------------------------------------
Pete Cordell
Codalogic Ltd
C++ tools for C++ programmers, http://codalogic.com
Read & write XML in C++, http://www.xml2cpp.com
---------------------------------------------------------------------