Philip Taylor wrote:
Manu Sporny wrote:
[...]
[17:37:12] Shane McCarron: we have no option about well formedness of
xml literals.  its a requirement
[17:37:18] … not our requirement.  RDF

Slightly off-topic: RDF seems to always require canonicalisation (http://www.w3.org/TR/rdf-concepts/#dfn-rdf-XMLLiteral - "encoding as UTF-8 yields exclusive Canonical XML (with comments, with empty InclusiveNamespaces PrefixList)"). http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/0011.sparql seems to ignore that requirement since it allows different ways of serialising the XML. Is that intentional?


More general comment: How is this different to XMLLiterals in RDFa-in-XHTML? When you're implementing that, you can't just copy bytes from the data input stream directly - you at least have to insert xmlns declarations to ensure the output is namespace-well-formed. And if the XMLLiteral contains some &entity; that's defined in the XHTML page's DTD then it will have to be expanded out so that it's correct once it's separated from the DTD, and so on. As far as I can see, that's pretty much impossible to implement unless you parse the whole page with an XML parser and then use an XML serialisation algorithm on an element sub-tree to get the XMLLiteral.

It seems logical to me that RDFa-in-HTML should work the same way - you parse the whole page with an HTML parser and then use exactly the same XML serialisation algorithm as before.

(I understand that it may be impossible to specify that behaviour if you're relying on HTML4, since HTML4 doesn't specify how to parse into a structure that can be serialised as XML; but that's why I'd want to base it on the HTML5 parsing algorithm instead, which makes this all quite easy :-) )

[17:36:32] … I think we have two really nasty issues right now: The
first being xmlns + case sensitivity: both of which are fixed if we move
to @prefix and declare that prefix is always case-sensitive (and
implement the legacy case-insensitivity stuff for xmlns that we've been
talking about in the community over the past couple of days).

Related the two issues, a consequence of implementing XMLLiterals using HTML5's parsing and XML-serialisation algorithms is that content like:

  <div property="..."><span xmlns:foo="..."></span></div>

would fail to generate an XMLLiteral. The 'xmlns:foo' gets parsed into an attribute with local name "xmlns:foo" in no namespace. That local name is not an NCName, so it's impossible to serialise as XML, and the XML serialisation algorithm will fail.

Some possible solutions for this issue:

* Change the HTML5 parsing algorithm so xmlns:foo gets local name "foo" in the XML Namespaces namespace. (That seems very unlikely to happen, because of backward-compatibility issues with existing content.)

* Add some ugly hacks in the serialisation process, e.g. find all attributes named "xmlns:foo" and pretend they were called "foo" in the XML Namespaces namespace while serialising.

* Don't support XMLLiterals.



Don't support XMLLitererals in HTML, would, I think, be the safest approach. What is supported with HTML is already a subset of what's supported in XHTML because of the former's inherent limitations. This approach wouldn't add a burden that folks aren't already operating under because they're using HTML.


* Discourage the use of xmlns:foo attributes, and replace them with @prefix or something.

(In all but the last of those cases, xmlns:foo would still be a problem for any other tool that attempts to convert HTML to XML (using HTML5's parsing rules), e.g. http://services.philip.html5.org/html-to-xhtml/ strips out the attributes entirely because they can't be represented in XML.)

Folks have to remember that adding a new attribute to handle differences between HTML and XHTML is probably the more extreme option, and will lead to confusion, as well as breakage when people use XHTML, but serve pages up as HTML. Which many, many people do now.

Supporting a subset of RDFa in HTML would, to me, be better than supporting a different version of RDFa.

Shelley


Reply via email to