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

Reply via email to