Closed
Bug 112842
Opened 24 years ago
Closed 6 years ago
XBL content should not generate comment nodes
Categories
(Core :: XBL, defect)
Core
XBL
Tracking
()
RESOLVED
WONTFIX
People
(Reporter: neil, Unassigned)
References
Details
While playing around with XBL I have left comments inside <binding> elements.
These comments appear in the DOM (via the DOM inspector). XUL comments do not.
Updated•24 years ago
|
Status: NEW → ASSIGNED
Target Milestone: --- → Future
Comment 1•22 years ago
|
||
So... Where should I strip comments from? I can strip them from the XBL
document in general, or I can strip them from inside <content> (Or from inside
other random XBL elements, but that could get harder). Which should we do?
I'm raising severity to major since this keeps us from documenting XBL bindings
propely...
Assignee: hyatt → bz-vacation
Severity: enhancement → major
Status: ASSIGNED → NEW
OS: Windows 95 → All
Priority: -- → P1
Hardware: PC → All
Target Milestone: Future → mozilla1.7alpha
Comment 2•22 years ago
|
||
Ian, Neil's afraid to answer my question without your expert guidance. Could
you provide some?
Keywords: qawanted
QA Contact: jrgmorrison → ian
Comment 3•22 years ago
|
||
You don't want Gecko to strip comments from XBL at all. Doing that would mean
authors could not rely on reliable DOMs. You might want to strip all comments
from XBL files that we ship, though, as part of the build process -- either a
simple XML-based identity transform that drops comment nodes or using #-style
comments and running the XBL files through a preprocessor.
At least that would be my opinion.
Comment 4•22 years ago
|
||
The real issue here is that bindings in chrome are very fragile -- adding
comments to <content> makes all sorts of stuff that uses explicit child offsets
break.
This is a problem for authors as much as for chrome, if they use explicit
offsets that way.
Stripping in a preprocessing step is highly suboptimal, since it would make
chrome XBL not behave like other XBL...
We need to either strip comments across the board, or wontfix this bug, and fix
the chrome XBL to not be fragile and finally add some friggin' comments to the
undocumented mess that is chrome XBL.
Comment 5•22 years ago
|
||
Well, using #-style comments would clearly mark that these are not XML comments,
which would be pretty clear.
Comment 6•22 years ago
|
||
It will also totally confuse the XML-mode in any sane editor and prevent proper
validity-checking from being performed by said editor....
If it's clearly specified that comments are stripped out of XBL, where is the
"could not rely on reliable DOMs" coming in? I guess for authors that want
their XBL to work with both current and future Mozilla builds? But those aren't
really using comments anyway, because it's too painful....
Comment 7•22 years ago
|
||
> It will also totally confuse the XML-mode in any sane editor
No it won't, it would just be treated as text, which is fine.
> and prevent proper validity-checking from being performed by said editor....
You are unlikely to be validating XBL anyway. Well-formedness checking works
fine with such comments. (Well, assuming you don't actually include tag names in
the comments, but that's easy to avoid.)
> If it's clearly specified that comments are stripped out of XBL, where is the
> "could not rely on reliable DOMs" coming in? I guess for authors that want
> their XBL to work with both current and future Mozilla builds? But those
> aren't really using comments anyway, because it's too painful....
I don't see why the spec should require that UAs have special code for their XBL
content models as opposed to other models. Why should XBL be any different than
any other XML language, like, say, XHTML?
Comment 8•22 years ago
|
||
> You are unlikely to be validating XBL anyway
Right. Instead you're going to be wasting your time building chrome, starting
the browser, and looking at the JS console... That makes so much more sense.
Avoiding stuff in comments is not a good idea. The goal here is to make the
barrier to documenting XBL low enough that people will do it. That means
comments need to Just Work somehow. Adding comments should not require changes
to any other part of the binding. Everything else is secondary in my opinion. I
don't want to ever again be told that a review comment can't be addressed
because XBL is incapable of usefully and painlessly supporting comments.
The spec is defining how <children> works. It could clearly say that all
non-comment things in <children> are moved over to be anonymous children of the
bound element. Nothing to do with the actual XBL content model, which the
author can't ever access anyway (I don't believe there are ways of getting a
hold of the actual XBL document from inside a binding; "document" refers to the
document of the element the binding is attached to).
Another alternative is to add an <xbl:comment> which will be stripped out by the
content sink. This has the same "avoiding" issue that the preprocessor comments do.
Ccing hyatt (should have done this when I took the bug), since he should
probably be in on this decision and since he may have a proposal for a solution
that you'll like more, Ian.
Comment 9•22 years ago
|
||
You guys may not know this, but XBL already does evil processing of anonymous content. Specifically it
strips whitespace (even though it should not). It had to strip whitespace because XUL strips
whitespace, and we all know that's wrong.
We should make that stripping function just strip comments too, and then find some way to do this
only for XUL. Since we need to remain backwards-compatible probably, I'm not sure what a good
solution is here, since what to do with <content> really depends on the bound element's document
(XUL vs. HTML) and not on the binding document.
Comment 10•22 years ago
|
||
A good solution might be to initially parse everything (comments and whitespace) and then make the
decision on whether to strip the template in the XBL document based off of the first bound element that
gets attached. If it's a XUL document do the strip, and if it isn't XUL, then don't.
This does mean we'll waste time processing comments, but maybe after this initial step, we could add a
little hint to the <binding> tag for our chrome XBL like xul="true" or something cheesy like that.
| Reporter | ||
Comment 11•22 years ago
|
||
How about stripping whitespace/comments if the XUL namespace is defined?
Comment 12•22 years ago
|
||
We shouldn't be doing _any_ stripping of any kind on anything, unless it uses
our XUL MIME type, or is bound to an element in a document that used the XUL
MIME type. I could live with stripping comments and whitespace from XBL (and
XUL) in those cases, though.
However, that will probably not address bz's concern since he wants to be able
to rely on using index-based lookup reliably, and this would not work across
document types.
Personally I'm against all stripping at runtime. (At compile time we should
strip as much as possible, IMHO.) The XML specs actually allow comment
stripping, and whitespace stripping if xml:preserve isn't "preserve", FWIW.
Comment 13•22 years ago
|
||
As Neil pointed out on irc, <xbl:comment><!-- --></xbl:comment> would actually
be a simplish way of doing a comment that could be stripped out either at
runtime or compile time, as desired....
Comment 14•22 years ago
|
||
Where you should read "strip" in that last comment as meaning "assign special
semantics to, just like <xbl:children />" (which we also "strip" if you think
about it).
Comment 15•22 years ago
|
||
<xbl:comment/> feels hacky but I could live with it. It at least makes good
sense in terms of the specs. :-)
Comment 16•22 years ago
|
||
So do we have agreement? Should I add support for <xbl:comment> to the XBL
content sink?
Comment 17•22 years ago
|
||
Hyatt?
Comment 18•22 years ago
|
||
Moving bugs that I'm clearly not going to work on in the foreseeable future out
of buglist.
Assignee: bzbarsky → hyatt
Priority: P1 → --
Target Milestone: mozilla1.7alpha → ---
Updated•16 years ago
|
QA Contact: ian → xbl
Updated•16 years ago
|
Assignee: hyatt → nobody
Comment 20•6 years ago
|
||
XBL is now disabled in Firefox (Bug 1583314) and is in the process of being removed from Gecko (Bug 1566221), so closing bugs requesting changes to its implementation as wontfix.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → WONTFIX
You need to log in
before you can comment on or make changes to this bug.
Description
•