Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

Select node by attribute value

File: Data.xml <?xml version="1.0"?> <employees>   <employee eid="98145" dept="programming">     <title>Java Programmer</title>     <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 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet        version="1.0"        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   <xsl:template match="employees">     <html>       <head>         <title>Employee Data</title>       </head>       <body>         <table>           <tr>             <th>Name</th>             <th>Hire Date</th>             <th>Address</th>             <th>Phone</th>             <th>Fax</th>             <th>Email</th>           </tr>           <xsl:for-each select="employee">             <tr>               <td><xsl:value-of select="contact/name/name"/> <xsl:value-of select="contact/name/middleName"/> <xsl:value-of select="contact/name/lastName"/></td>               <td><xsl:value-of select="hireDate"/></td>               <td><xsl:value-of select="contact/address/street"/>                   <br />                   <xsl:value-of select="contact/address/city"/>, <xsl:value-of select="contact/address/state"/> <xsl:value-of select="contact/address/zip"/>               </td>               <td>WK: <xsl:value-of select="contact/phone/tel[@type=wk]"/>                   <br />                   HM: <xsl:value-of select="contact/phone/tel[@type=hm]"/>               </td>               <td><xsl:value-of select="contact/phone/fax"/></td>               <td><xsl:value-of select="contact/email"/></td>             </tr>           </xsl:for-each>         </table>       </body>     </html>     </xsl:template> </xsl:stylesheet> Output: <html>    <head>       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">       <title>Employee Data</title>    </head>    <body>       <table>          <tr>             <th>Name</th>             <th>Hire Date</th>             <th>Address</th>             <th>Phone</th>             <th>Fax</th>             <th>Email</th>          </tr>          <tr>             <td>BrianSmith</td>             <td>2008-10-29</td>             <td>1 Drive<br>Vancouver, BC             </td>             <td>WK: <br>                HM:              </td>             <td>303-4667357</td>             <td>a@a.com</td>          </tr>       </table>    </body> </html>