XML Schema spec: Attribute Wildcard Intersection

A

Alain Frisch

Hello,

The following rule in the XML Schema spec, section "Schema Component
Constraint: Attribute Wildcard Intersection" seems strange to me:

=======================================
3 If either O1 or O2 is a pair of not and a value (a namespace name or
·absent·) and the other is a set of (namespace names or ·absent·), then
that set, minus the negated value if it was in the set, minus ·absent· if
it was in the set, must be the value.
=======================================


I don't understand the rationale behind "minus ·absent· if it was in the
set". This means that ·absent· is removed whenever it appears in the set.
It would be natural to remove it iff the second component of the "not"
pair is ·absent·.

Can someone explain the rationale behind the spec ?

-- Alain Frisch
 
R

Richard Tobin

Alain Frisch said:
3 If either O1 or O2 is a pair of not and a value (a namespace name or
·absent·) and the other is a set of (namespace names or ·absent·), then
that set, minus the negated value if it was in the set, minus ·absent· if
it was in the set, must be the value.
I don't understand the rationale behind "minus ·absent· if it was in the
set". This means that ·absent· is removed whenever it appears in the set.
It would be natural to remove it iff the second component of the "not"
pair is ·absent·.
Can someone explain the rationale behind the spec ?

The case described is the intersection of ##other and and set of
namespaces. In this context, "absent" means "no-namespace".

When the target namespace is absent, ##other means any non-absent
namespace. When the target namespace is not absent, ##other means any
*non-absent* namespace other than the target namespace. I think the
idea behind this is that ##other is intended to allow extensibility by
having attributes from other namespaces, not by having attributes in
no namespace.

So in the latter case, the intersection should exclude both the target
namespace and absent.

Now for some reason that is not clear to me [*], the namespace
constraint ##other is not represented as a pair of "not" and (a set of
the target namespace and absent), but merely as a pair of "not" and
the target namespace. So to make the intersection give the right
answer, the spec has to give the peculiar definition quoted.
Similarly, it has to give a peculiar definition for "Wildcard allows
Namespace Name" a few paragraphs earlier.

[*] It's probably one of those "historical" reasons.

-- Richard
 
A

Alain Frisch

Richard Tobin, dans le message (comp.text.xml:68011), a écrit :
When the target namespace is absent, ##other means any non-absent
namespace. When the target namespace is not absent, ##other means any
*non-absent* namespace other than the target namespace.

Many thanks, I missed that. It makes perfect sense, now. I was also
wondering about rule 6, but it is now clear as well.

I have another question. Rule 5 is:

=============================================
If the two are negations of different namespace names, then the
intersection is not expressible.
=============================================

Can this actually happen in a valid XML Schema document? Does the spec
make it impossible with another condition somewhere else? Otherwise, how
is the processor supposed to handle this case?


-- Alain
 
R

Richard Tobin

I have another question. Rule 5 is:

=============================================
If the two are negations of different namespace names, then the
intersection is not expressible.
=============================================

Can this actually happen in a valid XML Schema document? Does the spec
make it impossible with another condition somewhere else? Otherwise, how
is the processor supposed to handle this case?

It can happen, if you restrict one ##other wildcard with another
(obviously you must have imported a schema for another namespace to be
able to do this).

I think the processor is supposed to handle it by saying "you can't do
that".

-- Richard
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top