Thanks for answering me,
I have litteraly written the result, it did suceed. but the problem is that
all the namespaces on the <xsl:stylesheet> element also appear on the
result file.
What do i have to do to select namspaces that have to appear on the result
file and to forbid the others?
Thanks again.
----- Original Message -----
From: "Jeni Tennison" <jeni(_at_)jenitennison(_dot_)com>
To: "belangour abdessamad"
<abdessamad(_dot_)belangour(_at_)info(_dot_)univ-nantes(_dot_)fr>
Cc: "XSL-list" <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Wednesday, October 29, 2003 6:15 PM
Subject: Re: [xsl] namespaces problem
Hi,
I'm trying to automatically generate a schema using XSLT.
How can i please generate the attributes "targetNamespace="MyDoc" and
xmlns:my="MyDoc" as in the example:
--------------------------------------------------------------------------
--
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="MyDoc" xmlns:my="MyDoc" elementFormDefault="qualified">
--------------------------------------------------------------------------
--
Namespace declarations (attributes that start with xmlns) are not
really attributes, and you can't create them as if they were. Instead,
if a namespace is in-scope for the instruction that you use to create
an element, then a namespace declaration will usually be placed on the
element.
The easiest thing to do is just use a literal result element like:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="MyDoc" xmlns:my="MyDoc"
elementFormDefault="qualified">
...
</xsd:schema>
Usually, I'd put the namespace declarations that I want to appear in
the output on the <xsl:stylesheet> element, so something like:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:my="MyDoc">
<xsl:template match="/">
<xsd:schema targetNamespace="MyDoc"
elementFormDefault="qualified">
...
</xsd:schema>
</xsl:template>
</xsl:stylesheet>
That way, they remain in-scope throughout the stylesheet, which means
that you don't run into problems with namespace un-declarations.
Note that elements generated with <xsl:element> *don't* automatically
get namespace nodes for the namespaces that are in-scope for the
instruction. This is another reason to use literal result elements
instead of generating them with <xsl:element>.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list