Wait, before we go any further trying to make xml namespaces work, I
have a suggestion:
Phillip J. Eby wrote:
Then we should get rid of XML namespaces altogether here; parcel
namespaces are *not* globally unique and never have been; repository
paths and Python package namespace requirements prevent them from
being globally unique.
+1 to removing all XML namespaces altogether, and here's a brainstorm
about how to do it We use them inappropriately anyway.
Their most basic use (just for everyone's review) is to allow you to
references items in other parcels. They allow me to say
xmlns:foo="..../foo"
<fooval itemref="foo:bar"/>
<foo:someKind...>
This is broken because "foo:bar" is a part of the data, not the
structure of the document. Thinking about just solving the first case,
it would be trivial to, instead of using namespaces, do something like:
<parcel...>
<parcelref prefix="foo" parcelpath="osaf.framework...."/>
...
</parcel>
because those itemref's dont' need XML namespaces to work.
The trick would be the 2nd case, where we use <foo:someKind> to refer to
a Kind. So what we really need is a way to map Tags => Kinds.
I did a search to figure out how & when we use <foo:sometag> and found:
- 20 non-test parcel.xml files use it
- the biggest consumers are:
- osaf/framework/attributeEditors/parcel.xml
- osaf/framework/blocks/parcel.xml
- osaf/framework/certstore/data/parcel.xml
- osaf/views/main/parcel.xml
- uses seem to be evenly distributed between:
- content model references - core:Integer,
contentModel:ItemCollection and the like
- "local" references, i.e. where we say xmlns:docSchema="...this
file ..."
- a few random external types like wakeupcaller:WakeupCaller
I haven't done the analysis, but I wonder how many of these files
reference more than one namespace using the ":" notation in a given
file? Perhaps if we could come up with a way of doing a "default" parcel
tag, we could eliminate the namespaces in 99% of the cases.
For example, using <parcelpath> from above:
<parcelref prefix="foo" default="true" parcelpath="...">
This might mean "for all future tags in this document, look up the Kind
in this parcelpath."
I haven't completely flushed out this idea, but anyone else have any
thoughts or other approaches to removing the need for <foo:someKind> ?
Alec
Yes, by using "parcel:" instead of "http:", you're avoiding conflicts
with other http URIs, but introducing the potential for conflict
(however unlikely) with someone else who arbitrarily breaks the same
rule and picks "parcel:".
I'm curious about what use cases will be satisfied by introducing
non-Chandler XML namespaces into a parcel.xml document. I can't rule
out such a possibility entirely, of course, but I haven't been able to
come up with anything that makes any sense right now.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev