I should have written "tiding up namespaces" instead of "removing" as I
don't want to loose them. I just want to clean them up.
Maybe I am wrong but I thought that if the "method" element has the
namespace "http://new.element", all child elements will belong to this
namespace too. So there's no need to write the namespaces of the child
elements to the output.
The namespaces are as you proposed defined in the stylesheet element on
top of the stylesheet:
<xsl:stylesheet version="2.0"
xmlns:srcml="http://srcml.de"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:srcml-new="http://new.element"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:meta="http://srcml.de/meta">
...
I don't really understand why the namespaces show up in the elements
although they are declared on top of the stylesheet. And I am wondering
where the xmlns="" comes from. It would just look nicer if I could get
rid of the namespaces in the elements. If I use the Syntax
srcml-new:modifiers in the template instead of just "modifiers" there is
still the complete srcml-new namespace definition in the output.
regards,
Garvin
I'm not totally sure of what you mean by "hiding" a namespace, which is
impossible. Either you remove it (which means you change the QName of
the elements) or you leave it in. Cleaning up namespaces (putting there
declarations on top of the XML) is possible by declaring the namespaces
in the xsl:stylesheet declaration element (and I'm sure there are other
ways, but I believe that's the way I did it). Then, all you need to do
is use the prefixes in your element names:
<xsl:element name="myns:method">.... etc
using an AVT is also ok, as long as it resolves to an existing namespace.
Btw, your code is not complete and as it is, it is a bit misty for me
why it creates the output you say it does (you do not show declarations
for prefixes "scrcml" and "srcml-new" which are the ones you wanted out
of your way because they were not used in all elements, right?).
Anyway, bottom line is: often it is easiest to declare namespaces as
early as you can so that you have a clearer document to read.
Cheers,
-- Abel Braaksma
Garvin Riensche wrote:
Hello,
One more namespaces question:
I have this template:
<xsl:template name="addMethod">
<xsl:element name="method" namespace="http://new.element">
<xsl:attribute name="name" select="$method_name"/>
<xsl:attribute name="id" select="$method_id"/>
<modifiers>
<modifier name="{$modifier}"/>
</modifiers>
<type name="{$type}"/>
<block>
<expr>
<return>
<expr>
<identifier name="{$variable_name}" idref="{$variable_id}"/>
</expr>
</return>
</expr>
</block>
</xsl:element>
</xsl:template>
which produces the following output:
<method xmlns="http://new.element" name="get_j" id="MB1;get_j()">
<modifiers xmlns:srcml-new="http://new.element" xmlns="">
<modifier name="public"/>
</modifiers>
<type xmlns:srcml="http://srcml.de"
xmlns:srcml-new="http://new.element" xmlns=""
name="int"/>
<block xmlns:srcml="http://srcml.de"
xmlns:srcml-new="http://new.element" xmlns="">
<expr>
<return>
<expr>
<identifier name="j" idref="VCB1;#Cint;j;"/>
</expr>
</return>
</expr>
</block>
</method>
How do I hide the namespaces of the elements? Is the only possibility
to add several xsl:exclude-result-prefixes="..." to the "modifiers",
"type" and "block" elements? Or is there another solution?
regards,
Garvin
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--