XML/XSLT stylesheet/count — различия между версиями

Материал из Web эксперт
Перейти к: навигация, поиск
 
м (1 версия)
 
(нет различий)

Текущая версия на 11:26, 26 мая 2010

count element with certain attribute name

   <source lang="xml">

File: Data.xml <employees>

 <employee hireDate="04/23/1999" officer="yes">
   <last>A</last>
   <first>B</first>
   <salary>1000</salary>
 </employee>
 <employee hireDate="09/01/1998" officer="no">
   <last>C</last>
   <first>D</first>
   <salary>95000</salary>
 </employee>
 <employee hireDate="08/20/2000">
   <last>E</last>
   <first>F</first>
   <salary>8900</salary>
 </employee>

</employees> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 version="1.0">
 <xsl:output method="xml" omit-xml-declaration="yes" indent="no" />
 
 <xsl:template match="employees">
   A. Number of employees:
   <xsl:value-of select="count(employee)" />
   B. Number of officers:
   <xsl:value-of select="count(employee[@officer="yes"])" />
   C. Number of employees without "officer" attribute set:
   <xsl:value-of select="count(employee[not(@officer)])" />
   D. Number of comments in "employees" element:
   <xsl:value-of select="count(//comment())" />
 </xsl:template>
 <xsl:template match="employee" />
 

</xsl:stylesheet> Output:

   A. Number of employees:
   3
   B. Number of officers:
   1
   C. Number of employees without "officer" attribute set:
   1
   D. Number of comments in "employees" element:
   0
</source>
   
  


Count node

   <source lang="xml">

File: Data.xml <?xml version="1.0" encoding="utf-8"?> <People>

 <Person>
   <Name>name 1</Name>
   <Description>description 1</Description>
 </Person>
 <Person>
   <Name>name 2</Name>
   <Description>description 2</Description>
 </Person>

</People>

File: Transform.xslt <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 version="1.0">
 <xsl:template match="/">
   <html>
     <head>
       <title>
         About
         <xsl:value-of select="count(/People/Person)" />
         .
       </title>
     </head>
     <body>

about <xsl:value-of select="count(/People/Person)" /> people.

       
<xsl:apply-templates select="/People/Person" /> </body> </html> </xsl:template> <xsl:template match="Person">

<xsl:value-of select="Name" />

<xsl:value-of select="Description" />

   
</xsl:template>

</xsl:stylesheet> Output: <html>

  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <title>
                  About
                  2
                  .
                
     </title>
  </head>
  <body>

about 2 people.


name 1

description 1


name 2

description 2


</body>

</html>

</source>
   
  


Count tokens

   <source lang="xml">

File: Data.xml <?xml version="1.0"?> <Employees>

 <Person>
    this is a test
 </Person>

</Employees> File: Transform.xslt

<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="2.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
   <html>
     <body>

String handling

       <xsl:variable name="sentence" select=""this is a test"" />
       The sentence: "
       <xsl:value-of select="$sentence" />
       " has
       <xsl:value-of
         select="count(tokenize($sentence, "\s+"))" />
       words.
       
</body> </html> </xsl:template>

</xsl:stylesheet> Output: <html>

  <body>

String handling

             The sentence: "
             this is a test
             " has
             4
             words.
             
</body>

</html>

</source>