XML/XSLT stylesheet/count — различия между версиями
Admin (обсуждение | вклад) м (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>