views:

276

answers:

1

I have a XHTML document and wnat to embed XUL widgets into the document. What is the correct XML syntax to do so?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
</head>
  <body>    
  insert XUL here
  </body>
</html>
+5  A: 

add xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" to your <html> tag.

then use <xul:element>, e.g. <xul:vbox>

Edit

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
      xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
</head>
  <body>    
    <xul:vbox>
    </xul:vbox>
  </body>
</html>

Also, I assume this isn't such a simple case... otherwise there wouldn't be much point in wrapping the xul in html (though the other way around does happen sometimes)

Edit

Some additional points to keep in mind when doing this:

  1. must be served with a valid xml type. e.g. application/xml or text/xml -- not text/html. (See https://bugzilla.mozilla.org/show%5Fbug.cgi?id=101147#c12 -- the whole thread is worth a read)
  2. must be valid xml. A certain degree of sloppiness is tolerated by browsers when parsing html (unclosed tags, etc.) and this is not that case for a document containing xul (even the html parts of the document)

(thanks to Nikolay for the first point)

Jonathan Fingland
This is correct, although this will only work in "real" XML (i.e. served with an XML content-type, not text/html) and there are many known issues when things don't work right when embedding XUL elements in non-XUL documents.
Nickolay
True, Nickolay. Not least among them that it applies to a pretty limited subset of browsers. I'll add your points to the answer. Good to have your expertise here.
Jonathan Fingland
Clarification: my last point was specific to Mozilla. XUL elements are usually not used outside XUL documents in Firefox, so these uses are mostly untested and there are bugs with XUL in non-XUL documents, e.g.: https://bugzilla.mozilla.org/show_bug.cgi?id=101147#c12
Nickolay
(Thanks for updating the answer BTW!)
Nickolay
thanks for the bugzilla link. added to the post.
Jonathan Fingland
Works perfectly. My use case is of course a little bit more complex.
Fabian Jakobs
glad it's working
Jonathan Fingland