Re: [xsl] IGNORE CASE IN XSLT match

Subject: Re: [xsl] IGNORE CASE IN XSLT match
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 1 Oct 2008 14:02:17 +0100
>   <xsl:template match="*[ lower-case( local-name() ) = 'mix']">
>   <xsl:template match="Mix|mix">
etc

while you can do that it's often not really convenient as you have to do
the same more or less everywhere

<xsl:template match="*[ lower-case( local-name() ) = 'mix']">
  <xsl:value-of select="@*[ lower-case( local-name() ) = 'foo']">
  ..

  etc

It may be better to consider a two stage process, first normalize, then
transform.

<xsl:variable name="lc">
 <xsl:apply-templates mode="lc"/>
</xsl:variable>

<xsl:template match="*" mode="lc">
 <xsl:element name="{lower-case(local-name())}
 namespace="{namespace-uri(.)}">
 <xsl:apply-templates select="@*,node()"/>
 </xsl:element>
</xsl:template>

<xsl:template match="@*" mode="lc">
 <xsl:attribute name="{lower-case(local-name())}
 namespace="{namespace-uri(.)}">
 <xsl:value-of select="."/>
 </xsl:attribute>
</xsl:template>


then 

<xsl:template match="/">
  <xsl:apply-templates select="$c/*"/>
</xsl:template>

then the rest of your code.


Then in your main body of code you can assume lower case names an duse
normal xpath syntax


<xsl:template match="min">
  <xsl:value-of select="@foo">
  ..


David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________

Current Thread