XML/XSLT stylesheet/self — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 11:26, 26 мая 2010
Содержание
self::node()
<source lang="xml">
File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="Transform.xslt" type="text/xsl"?> <employees xmlns="http://www.domain.ru/namespace/employee">
<title>Employee Data File</title> <employee eid="1" dept="programming"> <contact addInfo="info1"> <name> <firstName>Joe</firstName> <middleName int="B">Brian</middleName> <lastName>Smith</lastName> </name> <address> <street>1 Drive</street> <city>Vancouver</city> <state>BC</state> <zipcode>80210</zipcode> </address> <phone> <tel type="wk">111-1111111</tel> <tel type="hm">222-222222</tel> <fax>303-4667357</fax> </phone> <email>a@a.ru</email> </contact> <hireDate>2008-10-29</hireDate> </employee>
</employees>
File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" /> <xsl:template match="/"> <html> <head> <title>Employee Data Output</title> </head> <body> <xsl:apply-templates select="employees/employee" /> </body> </html> </xsl:template> <xsl:template match="employee">
<xsl:value-of select="parent::node()/title" />
Number | |
---|---|
<xsl:number /> |
<xsl:value-of select="contact/email" /> |
</xsl:for-each>
</xsl:template>
</xsl:stylesheet> Output: <html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Employee Data Output</title> </head> <body></body>
</html>
</source>
test="self::para[@fontsize="agate"]"
<source lang="xml">
File: Data.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="Transform.xslt"?> <advertisement action="create">
asdf
</advertisement> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"> <xsl:output method="text" indent="no" /> <xsl:variable select="advertisement/text" name="path" /> <xsl:template match="/"> <xsl:apply-templates select="$path" /> </xsl:template> <xsl:template match="text"> <xsl:apply-templates /> </xsl:template> <xsl:template match="headline"> <xsl:text>\F4</xsl:text> <xsl:value-of select="text()" /> </xsl:template> <xsl:template match="para"> <xsl:if test="self::para[@fontsize="agate"]"> <xsl:text> \F1</xsl:text> <xsl:value-of select="text()" /> </xsl:if> <xsl:if test="self::para[@justify="flushleft"]"> <xsl:text><</xsl:text> </xsl:if> </xsl:template>
</xsl:stylesheet>
</source>
value-of select="self::node()"
<source lang="xml">
File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="Transform.xslt" type="text/xsl"?> <employees>
<head:header xmlns:head="http://www.domain.ru/namespace/header"> <title>Employee Data File</title> <maintainer>developer 1</maintainer> </head:header> <employee eid="1" dept="programming"> <contact addInfo="info1"> <name> <firstName>Joe</firstName> <middleName int="B">Brian</middleName> <lastName>Smith</lastName> </name> <address> <street>1 Drive</street> <city>Vancouver</city> <state>BC</state> <zipcode>80210</zipcode> </address> <phone> <tel type="wk">111-1111111</tel> <tel type="hm">222-222222</tel> <fax>303-4667357</fax> </phone> <email>a@a.ru</email> </contact> <hireDate>2008-10-29</hireDate> </employee>
</employees> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"> <xsl:output method="html" indent="yes" /> <xsl:template match="/"> <html> <head> <title>Employee Output</title> </head> <body>
Number |
---|
</body> </html> </xsl:template> <xsl:template match="employee"> <tr> <td> <xsl:number /> </td> <xsl:apply-templates select="contact/email" /> </tr> </xsl:template> <xsl:template match="contact/email"> <td> <xsl:value-of select="self::node()" /> </td> </xsl:template>
</xsl:stylesheet> Output: <html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Employee Output</title> </head> <body>
Number | |
---|---|
1 | a@a.ru |
</body>
</html>
</source>