xsl-list
[Top] [All Lists]

[xsl] Namespace problem

2009-09-24 10:39:15
Hi

Problem: I have an application which uses XML documents (conforming to a
particular DTD) and which transforms them via an existing stylesheet into
XML documents which conform to a different DTD. Multiple input documents are
combined into fewer output documents. It all works.

For perfectly good reasons I am changing the initial set of XML documents so
that they conform to a schema rather than a DTD. Now I am changing the
stylesheet which outputs the 2nd-DTD-conformant XML files, and I have hit a
difficulty - I'm sure it's something basic but haven't found the answer yet!

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";
    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.

Is there a solution (other than picking attributes to copy from a whitelist,
which is barely practicable here)?

Thanks for any help
Trevor



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