RE: [xsl] Matching attributes with namespace

Subject: RE: [xsl] Matching attributes with namespace
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 3 Aug 2006 19:14:21 +0100
Order of attributes in XML is undefined. You can never rely on an XML parser
delivering attributes in a particular order, or on the order being
maintained in a transformation. If you have applications that depend on the
order of attributes then you need to fix them, because they could stop
working with the next release of your XML parser. In fact, since the order
often depends on hashing, they could in principle stop working simply when
you move the application to a different machine.

Michael Kay
http://www.saxonica.com/

 

> -----Original Message-----
> From: Spencer Tickner [mailto:spencertickner@xxxxxxxxx] 
> Sent: 03 August 2006 19:08
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Matching attributes with namespace
> 
> Hi List,
> 
> Thanks in advance for the help. I have a very simple 
> transformation that I can't seem to get right. The following 
> is a shortened example.
> 
> XML
> 
> <?xml version="1.0"?>
> <?xml-stylesheet type="text/xsl" 
> href="../../media/xslt_2.xsl"?> <act 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xsi:noNamespaceSchemaLocation="../../media/ActSchema.xsd"
> index="96001_01">
>   <title>This is the <insert>title</insert></title> </act>
> 
> 
> XSL
> 
> <?xml version='1.0'?>
> <xsl:stylesheet version="2.0" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> 
> <xsl:template match="/">
> 	<xsl:apply-templates/>
> </xsl:template>
> 
>   <xsl:template match="node()">
>        <xsl:copy>
>             <xsl:copy-of select="@*" />
>             <xsl:apply-templates select="node()" />
>        </xsl:copy>
>   </xsl:template>
> 
> 
> <xsl:template match="insert"><xsl:apply-templates/></xsl:template>
> 
> </xsl:stylesheet>
> 
> 
> So basically just stripping out the insert element. 
> Everything else should stay the same. However my attributes 
> on <act> get jumbled to:
> 
> OUTPUT
> 
> <?xml version='1.0' ?>
> <?xml-stylesheet type="text/xsl" 
> href="../../media/xslt_2.xsl"?> <act index="96001_01"
> xsi:noNamespaceSchemaLocation="../../media/ActSchema.xsd"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
>   <title>This is the title</title>
> </act>
> 
> and for whatever reason this is messing up other things in 
> our work-flow. Anyone have any ideas on how to make the <act> 
> attributes come out exactly as they are in the source document?
> 
> Thanks,
> 
> Spencer

Current Thread