XML Tutorial/XSLT stylesheet/normalize space
Версия от 18:22, 25 мая 2010; (обсуждение)
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.
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="/">
<TABLE>
<xsl:for-each select="//text">
<TR>
<TH colspan="4">
<xsl:value-of select="."/>
</TH>
</TR>
<TR>
<TD>Starting length:</TD>
<TD>
<xsl:value-of select="string-length(.)"/>
</TD>
<TD>Normalized length:</TD>
<TD>
<xsl:value-of select="string-length(normalize-space(.))"/>
</TD>
</TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-8"?><TABLE><TR><TH colspan="4">Normalized text</TH></TR><TR><TD>Starting length:</TD><TD>15</TD><TD>Normalized length:</TD><TD>15</TD></TR><TR><TH colspan="4">Sequences of whitespace characters</TH></TR><TR><TD>Starting length:</TD><TD>41</TD><TD>Normalized length:</TD><TD>34</TD></TR><TR><TH colspan="4"> Leading and trailing whitespace. </TH></TR><TR><TD>Starting length:</TD><TD>40</TD><TD>Normalized length:</TD><TD>32</TD></TR></TABLE>
normalize the space
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>
select=normalize-space(translate(substring(.,5),\,/))
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