Use translate function with if statement : translate « XSLT stylesheet « XML






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)
    
  
  
  

 








Related examples in the same category

1.translate function
2.Use translate() function and text() function to change the letter case