Re: [xsl] Controlling attributes and xsi:type

Subject: Re: [xsl] Controlling attributes and xsi:type
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Tue, 08 Jun 2010 14:16:10 +0100
The xsi:type attribute should be in namespace http://www.w3.org/2001/XMLSchema-instance, not in namespace http://www.calypso.com/xml. Just change the namespace in the xsl:attribute instruction.

In fact you don't need xsl:element and xsl:attribute here. You can just write:

<calypso:cashflow
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
   xsi:type="calypso:CashflowSimple">
...
</calypso:cashflow>

Michael Kay
Saxonica



On 08/06/2010 13:58, Nick Leaton wrote:
I'm trying to output some xml from and XSLT 2.0 stylesheet.

The format is outside of my control - third party - and its picky.

The output is as follows.

     <calypso:cashflow xsi:type="calypso:CashflowSimple">
				...
     </calypso:cashflow>
									
Header of the stylesheet is this

<xsl:stylesheet
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
     xmlns:xs="http://www.w3.org/2001/XMLSchema";
     xmlns:calypso="http://www.calypso.com/xml";
     version="2.0"
     exclude-result-prefixes="xs xsl"
     >

xsl to output looks like this

         <xsl:element name="calypso:cashflow">
             <xsl:attribute
                 name="xsi:type"
                 namespace="http://www.calypso.com/xml";
                 select="'calypso:CashflowSimple'"
                 />					
                 ...
	</xsl:element>							
				
The output produced is this

         <calypso:cashflow xmlns:xsi="http://www.calypso.com/xml";
xsi:type="calypso:CashflowSimple">

The third party app doesn't accept the
xmlns:xsi="http://www.calypso.com/xml"; as an attribute.

How can I supress this attribute for the element?

Thanks

Nick

Current Thread