Andreas Hochsteger wrote:
(I think this should be discussed in a separate thread)
Sylvain Wallez wrote:
The last minute change is just about replacing "-input" with ":input"
within two XSLs, to avoid problems later.
Isn't ":" used as separator for the namespace prefix?
I don't know if this applies to IDs too, but perhaps we should
double-check before.
The ":" is a valid character in element names and ID and IDREF
attributes (they are defined using the same grammar rule).
Parsers use the ":" in a special way for element names only, when
namespace processing is activated (the default in all modern browsers)
If it is allowed by the XML spec, it makes me wonder, if we want to
prefix the IDs some time in the future to use some kind of "namespace"
here too.
This usage in CForms has already been introduced by the recent library
stuff, which associates prefixes to libraries, thus effectively
forbidding the use of ":" in widget ids (otherwise you cannot
differenciate between a widget name and a composite name that references
a library widget).
That is why I chose this character. The "/" and "." are also forbidden
(used for lookup paths). The "." cannot be used as it is used to combine
widget names in the generated IDs, and thus would lead to a similar
problem as the current one: "-" can conflict with siblings, and "." can
conflict with children.
So the choice is between "/" and ":", but "/" is not allowed in XML
names. Hence the result, ":"...
Wouldn't this conflict with ":input" as you then cannot distinguish
between the two anymore (namespace prefix vs. ":input" suffix).
No, because as I said above, using ":" in widget names is effectively
forbidden by the library prefix notation.
Another possibility is to prefix the name of generated-ids with ":"
(this is allowed by the XML spec), e.g. ":foo-input" instead of
"foo:input". But I prefer to keep the widget ID as the prefix of all
that is related to its styling.
The rule is then: a styling stylesheed can generate whatever ID its
needs for a widget by suffixing the widget's id with ":" followed by a
name. Care should be taken of course that this name doesn't conflict
with names produced by other stylesheets.
Just some random thoughts ...
Perhaps it would help to write something up which summarizes all the
IDs, names, prefixes, suffixes and namespaces involved in every part
of CForms.
Yup. That should be part of the documentation of the various stylings.
Sylvain
--
Sylvain Wallez Anyware Technologies
http://people.apache.org/~sylvain http://www.anyware-tech.com
Apache Software Foundation Member Research & Technology Director