XML Tutorial/XSLT stylesheet/normalize space

Материал из Web эксперт
Версия от 11:26, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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