XML Tutorial/XSLT stylesheet/string length

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

string-length() returns the number of characters in the string

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>
</Paragraph>
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>
            <Td colspan="4">
              <xsl:value-of select="."/>
            </Td>
          </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><Td colspan="4">Normalized text</Td></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>


Use string-length function in math calculation

File: Data.xml
<?xml version="1.0"?>
<numbers>
  <x>4</x>
  <y>3.2</y>
  <z>11</z>
</numbers>

File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">
  <xsl:output method="xml" omit-xml-declaration="yes" />
  <xsl:template match="numbers">
    3.2 + string-length("3.2") =
    <xsl:value-of select="y + string-length(y)" />
  </xsl:template>
</xsl:stylesheet>
Output:

    3.2 + string-length("3.2") =
    6.2