- From: Henri Sivonen <hsivonen@iki.fi>
- Date: Thu, 4 Sep 2008 12:54:17 +0300
- To: Manuel Strehl <svg@manuel-strehl.de>
- Cc: "HTML WG" <public-html@w3.org>, "www-svg" <www-svg@w3.org>
On Sep 4, 2008, at 09:54, Manuel Strehl wrote:
> So now my 2c: Yes, it is anoying, if you have a completely nice SVG
> that
> just misses some small attribute in the root and therefore ceases to
> be
> displayed. I stumbled on that several times when looking at SVG
> produced
> by scientific programs like older gnuplots.
>
> _But_: The problems (from a view of a web developer) if rendering
> SVG is
> allowed _without_ being in the correct namespace will get as worse
> as the
> infamous browser sniffing DHTML thingies:
>
> * You have to check, if the browser displays it
First, I'm *not* arguing that WebKit and Gecko should start displaying
XML-serialized SVG without an explicit namespace declaration. However,
the problem of having to check in the case of XML is already there
when Opera behaves differently from Gecko and WebKit.
In the case of HTML5, the problem of having to check what browsers
support SVG-in-text/html is inherent to the feature no matter how
specified and implemented.
> * What about the DOM? Do you then have to use getElementsByTagNameNS
> or
> getElementsByTagName ("svg:svg") or what?
In the case of the commented out proposal in the HTML5 spec, the SVG
elements end up in the SVG namespace and don't have prefixes.
Therefore, the DOM can be queried either with the *NS getters or the
Level 1 getters. Both Level 1 and Level 2 setters would work for
attributes other than XLink (and xml:*?). XLink would require Level 2
setter. Creating elements would require the Level 2 *NS factory method.
> * XML extensions: <foreignObject> and <metadata> only are useful, if
> you
> can use other XML stuff in them. How do you do that w/o namespaces?
The commented out proposal supports HTML and MathML in <foreignObject>
based on hardwired contextual rules without namespace declaration
syntax.
The commented out proposal doesn't support RDF in <metadata> but does
support HTML <meta> elements as key-value containers there.
> * DOCTYPEs are evil, because you can use the default ones only on a
> small
> subset of SVG content and really have to mess around with DTD's
> features,
> if you want to get 90% of SVG out there valid.
DOCTYPEs in XML are evil, but not for that reason. :-)
But the commented out proposal indeed has a problem when it comes to
validation. It makes all the product-specific or metadata markup with
colons non-conforming. It's not a good use of people's time if a
validator tells people to take that cruft out. However, making it
conforming would violate our DOM consistency design principle. Making
it conforming without violating the DOM consistency principle (i.e.
doing Namespace processing) would be dumb from the point of view of
parser performance, parser code footprint and parser developers' use
of time.
> * for embedding in HTML5, that was just mentioned, using something
> like an
> <xml> tag (just like MS does) would be my choice.
I think that would be inelegant (regardless of name, <xml> or <ext>)
compared to the commented out proposal.
> Embed your XML without the DOCTYPE there and be happy.
What about output from Illustrator that uses an entity reference as
the xmlns value?
> If you want to get it to be valid
> HTML/SGML, you have two choices: Either the content of the <xml>
> will be
> defined in the DTD (which you can do, since XML is a subset SGML), or,
> also nice, declare <xml> as CDATA element and let the content be
> rendered
> by something completely else.
HTML5 isn't SGML. HTML5 validity isn't DTD-based.
--
Henri Sivonen
hsivonen@iki.fi
http://hsivonen.iki.fi/
Received on Thursday, 4 September 2008 09:55:06 UTC