RE: [xsl] Creating namespace and schema directives

Subject: RE: [xsl] Creating namespace and schema directives
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Fri, 12 Dec 2003 16:54:19 -0000
> 
> I am writing an xslt file to transform the contents of one 
> xml document to another that has an associated schema.  If I 
> create a new xml document with XMLSpy and assign the schema, 
> it produces the following directives in the root element:
> 
> <ACORD 
> xmlns="http://www.ACORD.org/standards/PC_Surety/ACORD1.4.1/xml/";
> xmlns:Marsh="http://www.marsh.com/"; xmlns:xsi=" 
http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="
http://www.ACORD.org/standards/PC_Surety/ACORD1.4.1/xml/
C:\MYDOCU~1\Marsh\ACORD\XSD\Marsh_ACORD_1-4-1.xsd">

I can specify this element in my xslt template as:

     <xsl:element name="ACORD" namespace="
http://www.ACORD.org/standards/PC_Surety/ACORD1.4.1/xml/"; >

but I can find no documentation on how to reproduce the second namespace
directive or the schema directive.

The xmlns:xsi declaration should be generated automatically when you do

 <xsl:attribute name="xsi:schemaLocation" 
namespace="http://www.w3.org/2001/XMLSchema-instance";>...</xsl:attribute
>

The xmlns:Marsh one is more tricky: in XSLT 2.0 you've got
<xsl:namespace>, but in 1.0 the only way of generating a namespace node
that isn't actually used by the element or any of its attributes is to
copy the namespace node from somewhere. One way is to have a source
document

<dummy xmlns:Marsh="http://www.marsh.com/"/>

and then do <xsl:copy-of
select="document('dummy.xml')/dummy/namespace::Marsh"/>

Michael Kay

____________________
Ed Trembicki-Guy
Application Designer
Marsh USA Inc.
Waterfront Corporate Center
121 River Street
Hoboken, NJ 07030
Phone: (201) 284-3278
Fax: (201) 284-2095
Internet: Ed.Trembicki-Guy@xxxxxxxxx
____________________




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread