note: base problem in inline-rdf in XHTML

(while working on the generic XSLT module ...)

consider

GET from
http://example.org/a/b/c/d/e/f.html

giving

<html>
   <head xml:base="../../foo">
     <base href="../../foo"/>
     <rdf:RDF>
        <rdf:Description rdf:about="">
           <rdfs:comment>Bar</rdfs:comment>
        </rdf:Description>
      </rdf:RDF>

....

annotated correctly to apply inline-rdf transform.

Currently this does not work correctly (whatever correctly might be), 
and I cannot see any changes that will make it work correctly.

I assume the intended triple might be:

<http://example.org/a/b/c/foo> rdfs:comment "Bar".

I think a GRDDL aware agent, will currently get

<http://example.org/a/foo> rdfs:comment "Bar".

I am minded to simply document the problem.

I am wondering whether I should make any changes.

====

Part of the underlying problem is that (X)HTML is designed to use the 
base element, not xml:base, whereas RDF/XML is designed to use xml:base 
and not html:base element.

Thus it is unclear how the mechanisms should interact ... (It is 
unspecified).

The current behaviour is that:
  - a top-level xml:base is ignored, i.e. on the html element
  - an html base is respected by the GRDDL aware agent
  - lower-level xml:base is copied across to the inline RDF content.

It may be cleaner to explicitly ignore any xml:base except those inside 
the rdf:RDF - xml:base is not supported in (X)HTML.

Alternatively, one could, in the transform, respect all xml:base 
declaration in the document, and flag an error if the resulting xml:base 
and an HTML base are both present and both relative. That's probably the 
best one can do ....

any thoughts?

Jeremy

-- 
Hewlett-Packard Limited
registered Office: Cain Road, Bracknell, Berks RG12 1HN
Registered No: 690597 England

Received on Wednesday, 13 June 2007 13:49:49 UTC