- From: Jerome Euzenat <Jerome.Euzenat@inrialpes.fr>
- Date: Fri, 24 Jan 2003 18:27:17 +0100
- To: www-webont-wg@w3.org
Hi again, There is/was a problem with the use of a default namespace in the generated XML/RDF. This has been spoted by Michael: At 10:49 -0600 06/01/2003, Smith, Michael K wrote: >The default namespace looks wrong. <CheninBlanc ..> becomes ><http://www.w3.org/2003/OWL-XMLSchemaCheninBlanc ..> This was true. What we needed is: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/7/owl#" xmlns="TheCorrectURI#"> ... </rdf:RDF> or (less good): <CheninBlanc xmlns="TheCorrectURI#"> </CheninBlanc> Solution 0: ----------- I have thus tried to introduce a correct default namespace on the top-level rdf tag. This has revealed impossible due to the special treatment that is reserved to namespaces in XSLT. This is a known limitation but it is still there. Michael Kay answered the message I posted to the xslt list: >Date: Tue, 7 Jan 2003 18:49:40 -0000 >From: "Michael Kay" <michael.h.kay@ntlworld.com> >Subject: RE: [xsl] generating xml with a runtime resolved default namespace > >> I submit to this enlightened list a concrete XSLT >> problem for a change. It comes from the need to have a >> variable default namespace in the output docu- ment. That is >> a default namespace which is known at run-time only. > >In XSLT 2.0 there is an <xsl:namespace> instruction that does this. > >In 1.0, the workaround is: > ><xsl:variable name="dummy"> > <xsl:element name="abc:dummy" namespace="{$var}"/> ></xsl:variable> > ><xsl:copy-of select="xx:node-set()//namespace::abc"/> The problem is that this solution does not works with xalan. I have thus prefered to not retain it due to the wide availability of Xalan. There were possible solution. Solution 1: ----------- Adding the default namespace directly in the header: <!DOCTYPE xsl:stylesheet [ <!ENTITY owl "http://www.w3.org/2002/7/owl#" > <!ENTITY xsd "http://www.w3.org/2000/10/XMLSchema#"> <!ATTLIST rdf:RDF xmlns "TheCorrectURI#"> ]> But I do not know the degree of commitment of RDF/XML and RDF to these DOCTYPE statements, so I prefer not to do this. Solution 2: ----------- Adding the default namespace like <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/7/owl#" xmlns="TheCorrectURI#"> ... </rdf:RDF> But it involves very dirty XSLT, viz. generating XML through a <xsl:text> statement. This should be avoided. Solution 3: ----------- This involves adding a default namespace to the "Individual" statements which are not owl:Thing typed (xsl:element does not allow to define a default namespace which is not that of the current element). This what is implemented in the current stylesheet. <CheninBlanc xmlns="TheCorrectURI#"> ... </CheninBlanc> This is satisfactory but has the drawback of being re-iterated in each such individual. Possible solution 4: -------------------- It is quite easy to declare a namespace name and to associate it with a namespace à la: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/7/owl#" xmlns:this="TheCorrectURI#"> ... <this:CheninBlanc> ... </this:CheninBlanc> </rdf:RDF> This has not been implemented because it was further away from the example in Guide. Tell me if you have prefereneces or better solutions. -- Jérôme Euzenat __ / /\ INRIA Rhône-Alpes, _/ _ _ _ _ _ /_) | ` / ) | \ \ /_) 655, avenue de l'Europe, (___/___(_/_/ / /_(_________________ Montbonnot St Martin, / http://www.inrialpes.fr/exmo 38334 Saint-Ismier cedex, / Jerome.Euzenat@inrialpes.fr France____________________/ Jerome.Euzenat@free.fr
Received on Friday, 24 January 2003 12:55:27 UTC