[closed] Re: xml:base handling of relative URIs

Fixed in latest cvs. Test is 
http://www.w3.org/2000/10/swap/test/regression.n3#t1002b

Yosi
Ralph R. Swick wrote:

>A bug in several RDF/XML parsers' interpretations of xml:base
>recently came to light [1].  The bug had to do with failure to
>interpret nested xml:base attributes correctly; in particular,
>the XML Base Recommendation allows an xml:base attribute
>to contain a relative URI which is then interpreted in the context
>of the base URI of the parent element [3].
>
>   [1] http://lists.w3.org/Archives/Public/semantic-web/2005Jul/0040.html
>   [2] http://www.w3.org/TR/xmlbase/
>   [3] http://www.w3.org/TR/xmlbase/#matching
>
>The test case in the bug report [1] reveals that several RDF/XML
>parsers fail to correctly resolve such nested xml:base attributes.
>
>Running this test through cwm reveals that cwm (rev 1.162,
>xml2rdf.py rev 1.20, xmllib rev 1.2, sax2rdf.py rev 1.42) does not
>even permit relative URIs in xml:base:
>
>% cwm --rdf << EOF
>? <?xml version="1.0"?>
>? <rdf:RDF xml:base="http://example.org/"
>?          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>?          xmlns:dc="http://purl.org/dc/elements/1.1/">
>?  <rdf:Description rdf:about="http://www.w3.org/" xml:base="test1/">
>?    <dc:title>World Wide Web Consortium</dc:title>
>?    <dc:source rdf:resource="test2/"/>
>?    <dc:relation rdf:resource=""/>
>?  </rdf:Description>
>? </rdf:RDF>
>? EOF
>Traceback (most recent call last):
>  File "/home/swick/pub/2000/10/swap/cwm.py", line 635, in ?
>    doCommand()
>  File "/home/swick/pub/2000/10/swap/cwm.py", line 366, in doCommand
>    why = becauseCwm)
>  File "/afs/w3.org/pub/WWW/2000/10/swap/llyn.py", line 1152, in load
>    referer=referer, why=why)  
>  File "/afs/w3.org/pub/WWW/2000/10/swap/webAccess.py", line 127, in load
>    p.feed(buffer)
>  File "/afs/w3.org/pub/WWW/2000/10/swap/sax2rdf.py", line 643, in feed
>    self._p.feed(data)
>  File "/usr/lib/python2.2/site-packages/_xmlplus/sax/expatreader.py", line 216, in feed
>    self._parser.Parse(data, isFinal)
>  File "/usr/lib/python2.2/site-packages/_xmlplus/sax/expatreader.py", line 353, in start_element_ns
>    AttributesNSImpl(newattrs, qnames))
>  File "/afs/w3.org/pub/WWW/2000/10/swap/sax2rdf.py", line 450, in startElementNS
>    x = self.sink.newSymbol(self.uriref(value)) 
>  File "/afs/w3.org/pub/WWW/2000/10/swap/sax2rdf.py", line 156, in uriref
>    return uripath.join(self._base, str)
>  File "/afs/w3.org/pub/WWW/2000/10/swap/uripath.py", line 106, in join
>    assert(bcolonl >= 0), "Base uri '%s' is not absolute" % here # else it's not absolute
>AssertionError: Base uri 'test1/' is not absolute
>% 
>
>
>
>
>  
>

Received on Friday, 22 July 2005 15:15:45 UTC