XML Tutorial/XSLT stylesheet/normalize space
normalize-space() returns the argument string with white space normalized by stripping leading and trailing whitespace and replacing sequences of whitespace characters by a single space.
<source lang="xml">
File: Data.xml <?xml version="1.0" encoding="utf-8"?> <paragraph>
<text>Normalized text</text> <text>Sequences of whitespace characters</text> <text> Leading and trailing whitespace. </text>
</P> File: Transform.xslt <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/">
<xsl:value-of select="."/> |
|||
---|---|---|---|
Starting length: |
<xsl:value-of select="string-length(.)"/> |
Normalized length: |
<xsl:value-of select="string-length(normalize-space(.))"/> |
</xsl:template>
</xsl:stylesheet> Output:
<?xml version="1.0" encoding="UTF-8"?>Normalized text | |||
---|---|---|---|
Starting length: | 15 | Normalized length: | 15 |
Sequences of whitespace characters | |||
Starting length: | 41 | Normalized length: | 34 |
Leading and trailing whitespace. | |||
Starting length: | 40 | Normalized length: | 32 |
normalize the space
<source lang="xml">
File: Data.xml <?xml version="1.0" encoding="utf-8"?> <cars>
<manufacturer name=" Chevrolet
">
<car>Cavalier</car> <car>Corvette</car> <car>Impala</car> <car>Monte
Carlo</car>
</manufacturer>
</cars> File: Transform.xslt
<?xml version="1.0"?> <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="*"> <xsl:copy> <xsl:for-each select="@*"> <xsl:attribute name="{name()}"> <xsl:value-of select="normalize-space()"/> </xsl:attribute> </xsl:for-each> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="text()"> <xsl:value-of select="normalize-space()"/> </xsl:template>
</xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?><cars><manufacturer name="Chevrolet"><car>Cavalier</car><car>Corvette</car><car>Impala</car><car>Monte Carlo</car></manufacturer></cars></source>
select=normalize-space(translate(substring(.,5),\,/))
<source lang="xml">
File: Data.xml <?xml version="1.0"?> <greet>
<greeting xml:lang="en">Welcome</greeting> <greeting xml:lang="fr">Bienvenue</greeting> <greeting xml:lang="es">Bienvenido</greeting> <greeting xml:lang="de">Willkommen</greeting>
</greet>
File: Transform.xslt <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" /> <xsl:template match="ms"> <unix> /usr/mike <xsl:value-of select="normalize-space(translate(substring(.,5),"\","/"))" /> </unix> </xsl:template>
</xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?>
Welcome Bienvenue Bienvenido Willkommen</source>