Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

Use translate function with if statement

File: Data.xml <poem>   <a>line 1</a>   <b>line 1</b>   <c>line 1</c>   <d>     line 1   </d> </poem> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   version="1.0">   <xsl:output method="xml" omit-xml-declaration="yes" indent="no" />   <xsl:template match="a">     <xsl:if test=". = 'line 1'">       1. a = "line 1"     </xsl:if>     <xsl:if test=". = ../b">2. a = ../b</xsl:if>     <xsl:if test=". = ../c">3. a = ../c</xsl:if>     <xsl:if test=". != ../c">4. a != ../c</xsl:if>     <xsl:if       test="translate(.,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ') = translate(../c,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')">       5. a = ../c (ignoring case)     </xsl:if>     <xsl:if test=". = ../d">6. a = ../d</xsl:if>     <xsl:if test=". = normalize-space(../d)">       7. a = normalize-space(../d)     </xsl:if>   </xsl:template>   <xsl:template match="b|c|d" /> </xsl:stylesheet> Output:          1. a = "line 1"     2. a = ../b3. a = ../c       5. a = ../c (ignoring case)            7. a = normalize-space(../d)