Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

Select=preceding-sibling

File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="Transform.xslt" type="text/xsl"?> <employees xmlns="http://www.domain.com/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.com</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>         <xsl:apply-templates select="employees/employee" />       </body>     </html>   </xsl:template>   <xsl:template match="employee">     <xsl:variable name="choose">       <xsl:choose>         <xsl:when           test="preceding-sibling::*/contact/name/firstName">           <xsl:value-of             select="preceding-sibling::*[1]/contact/name/firstName" />         </xsl:when>         <xsl:otherwise>Nobody</xsl:otherwise>       </xsl:choose>     </xsl:variable>     <p>       The employee element node that is the preceding sibling of       <xsl:value-of select="self::*/contact/name/firstName" />       is for the following staff member:       <xsl:value-of select="$choose" />     </p>   </xsl:template> </xsl:stylesheet> Output: <html>    <head>       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">       <title>Employee Output</title>    </head>    <body></body> </html>