xsl-list
[Top] [All Lists]

Re: [xsl] Namespace problem

2009-09-24 10:48:32
Trevor Nicholls wrote:

My root elements used to have local attributes, but now, thanks to the
miracle of XSD, they have two additional attributes, e.g.
  <document
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";

In the XSLT/XPath data model xmlns:xsi is not modelled as an attribute but rather as a namespace node.

    xsi:noNamespaceSchemaLocation="../../xml_utils/hcdocs.xsd"
    index="N"
    mark="Y">

The stylesheet generating the output XML creates the DTD declaration with
  <xsl:output
    doctype-system="../../xml_utils/fmdocs.dtd"
    method="xml"
    encoding="UTF-8" />

and has some null templates suppressing attributes which are not needed in
the output documents, eg:
  <xsl:template match="@indx|@mark|@formatted" />
  <xsl:template match="@rowspan[string(.)='1']" />
  <xsl:template match="@colspan[string(.)='1']" />
  <xsl:template match="@xml:space" />

Using the last of these as a "template" :-) I added two new lines to the
stylesheet doing this job for the schema version of the input:
  <xsl:template match="@xsi:noNamespaceSchemaLocation" />
  <xsl:template match="@xmlns:xsi" />

These generate an error, because I haven't declared the namespaces, so I
added
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xmlns:xmlns=""

to the <xsl:stylesheet> declaration, thinking this would drop both
attributes. I wasn't sure what to put in the xmlns:xmlns one, as xmlns seems
to be a bit of a special case. However whatever I try isn't helping: the
xsi:noNamespaceSchemaLocattion attribute is being dropped, but the
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; attribute is not.

You will need to avoid copying namespace nodes you don't want to be copied. In XSLT 2.0 you can use e.g.
  <xsl:copy copy-namespaces="no">
respectively
  <xsl:copy-of select="foo" copy-namespaces="no"/>

You will need to show us more of your stylesheet for suggestions on where exactly you need that.


--

        Martin Honnen
        http://msmvps.com/blogs/martin_honnen/

--~------------------------------------------------------------------
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>
--~--

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