Hello,
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.
I reduce the problem below to a small stylesheet and input and output
documents:
--------- tentative stylesheet
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns = "http://www.w3.org/2003/OWL-XMLSchema"
xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owls= "http://www.w3.org/2003/OWL-XMLSchema">
<xsl:param name="prefix">http://www.example.com</xsl:param>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="owls:Ontology">
<rdf:RDF
xmlns="{$prefix}#"
xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<xsl:apply-templates mode="axioms"/>
</rdf:RDF>
</xsl:template>
<xsl:template match="owls:Individual" mode="axioms">
<xsl:element name="@owls:class">
<xsl:attribute name="rdf:resource"><xsl:value-of
select="@owls:name"/></xsl:attribute>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
------------- input
<?xml version="1.0" encoding="UTF-8"?>
<owls:Ontology xmlns:owls= "http://www.w3.org/2003/OWL-XMLSchema">
<owls:Individual owls:name="foo" owls:class="Bar" />
</owls:Ontology>
------------- output
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns="http://www.example.com#"
xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<Bar rdf:resource="#foo" />
</rdf:RDF>
IMPORTANT CONSTRAINT: Yes Bar is in the http://www.example.com# namespace.
REMARKS:
0) this is extracted from a real test case (i.e. due yesterday ;-);
1) the '#' do not cause trouble;
2) not found in the FAQ
3) the problem is that XSLT does not treat xmlns and xmlns: prefixed
attributes as the others (and it is pretty consistent in doing so, in
source, in alias and in attribute);
4) we cannot use <xsl:element name="rdf:RDF" namespace="{$prefix}#">
because it will consider that rdf is the same as
http://www.example.com#;
Any help to offer?
Thanks,
--
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(_dot_)Euzenat(_at_)inrialpes(_dot_)fr
France____________________/
Jerome(_dot_)Euzenat(_at_)free(_dot_)fr
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list