xsl-list
[Top] [All Lists]

Re: namespaces problem

2003-10-30 01:40:58
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



<Prev in Thread] Current Thread [Next in Thread>