Subject: [xsl] Namespace problem From: "Trevor Nicholls" <trevor@xxxxxxxxxxxxxxxxxx> Date: Fri, 25 Sep 2009 02:38:32 +1200 |
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Subject: Expression hande, Michael Kay | Thread | Re: [xsl] Namespace problem, Martin Honnen |
Re: [xsl] Subject: Expression hande, David Carlisle | Date | Re: [xsl] Namespace problem, Martin Honnen |
Month |