Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1954
  • Last Modified:

XSL: Replace underscore with a space?

In an xsl stylesheet how would I go about replacing the underscores "_" with a space in the Title nodes of my xml file below?

<?xml version="1.0" encoding="utf-8" ?>
<Folder xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <FolderID>466</FolderID>
  <ParentID>416</ParentID>
  <Title>Breast_Cancer</Title>
  <Description />
  <Folders>
    <Folder>
      <FolderID>470</FolderID>
      <ParentID>466</ParentID>
      <Title>Carcinoma_In_Situ</Title>
      <Description />
      <Folders />
    </Folder>
    <Folder>
      <FolderID>470</FolderID>
      <ParentID>466</ParentID>
      <Title>Complementary_Medicine</Title>
      <Description />
      <Folders />
    </Folder>
  </Folders>
</Folder>

Thank you.
0
greddin
Asked:
greddin
  • 2
  • 2
1 Solution
 
jkmyoungCommented:
use the translate function whenever you call it's value,
eg. <xsl:value-of select="translate(Title,'_',' ')"/>
0
 
greddinAuthor Commented:
Thanks, I have this but it's not working:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ccs="CancerConsultants.Syndication" exclude-result-prefixes="ccs">
     <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
     <xsl:variable name="FolderCountHalf" select="(count(/ccs:Folder/ccs:Folders/ccs:Folder) + 1) div 2"/>
     <xsl:template match="/ccs:Folder">
          <html>
               <body>
                    <table border="1">
                         <xsl:for-each select="ccs:Folders/ccs:Folder[position() &lt;= $FolderCountHalf]">
                              <tr>
                                      <td><xsl:apply-templates select="."/><br/>
                                      <xsl:value-of select="translate(Title,'_',' ')"/>
                                      </td>
                                                      <td>
                                    <xsl:choose>
                                                      <xsl:when test="following-sibling::ccs:Folder[position() = $FolderCountHalf]">
                                                            <xsl:apply-templates select="following-sibling::ccs:Folder[position() = $FolderCountHalf]"/>
                                                      </xsl:when>
                                                      <xsl:otherwise>&#160;</xsl:otherwise>
                                                      </xsl:choose>
   
                                   </td>
                              </tr>
                         </xsl:for-each>
                    </table>
               </body>
          </html>
     </xsl:template>
     <xsl:template match="ccs:Folder">
          <a href="{ccs:FolderID}"><xsl:value-of select="ccs:Title"/></a>
     </xsl:template>
</xsl:stylesheet>
0
 
jkmyoungCommented:
Forgot, as your xml in this post didn't have the xmlns attribute, so you wouldn't get the Title because it doesn't match.

You only need to change the output template:

<xsl:template match="ccs:Folder">
  <a href="{ccs:FolderID}"><xsl:value-of select="translate(ccs:Title,'_', ' ')"/></a>
</xsl:template>
0
 
greddinAuthor Commented:
Thank you so much again.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now