Вы неправильно выбираете значение элемента для электронных писем.Например, по инструкции:
<xsl:value-of select="@yahoo.com"/>
Вы просите выбрать узел с именем @yahoo.com
среди дочерних узлов CONTACT
.Вы должны использовать:
<xsl:value-of select="EMAILS/
EMail[Type='yahoo']/Value"/>
Эта инструкция получает текст Value
, потомок EMail
, Type
которого равен 'yahoo'.Код в атрибуте select
- это просто выбор XPath, использующий предикат [..]
для соответствия требуемому элементу.Я действительно предлагаю взглянуть на учебный сайт W3C и потратить на него немного времени.
Ваш xsl:for-each
подход к созданию таблицы не является неправильным, и вы близки к хорошему решению;однако более XSLT-способ для достижения этой цели - просто использовать xsl:apply-templates
в правильном месте.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="html" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="CONTACTS" >
<html>
<head>
<title>ContactMatrix</title>
</head>
<body>
<table width="400" border="1" >
<tr bgcolor = "#546789" >
<th>FirstName</th>
<th>LastName</th>
<th>Gmail</th>
<th>Yahoo</th>
<th>Libero</th>
<th>URL</th>
</tr>
<xsl:apply-templates select="CONTACT"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="CONTACT">
<tr>
<td><xsl:value-of select="FirstName"/> </td>
<td><xsl:value-of select="LastName"/> </td>
<td><xsl:value-of select="EMAILS/
EMail[Type='gmail']/Value"/>
</td>
<td><xsl:value-of select="EMAILS/
EMail[Type='yahoo']/Value"/>
</td>
<td><xsl:value-of select="EMAILS/
EMail[Type='libero']/Value"/>
</td>
<td><xsl:value-of select="URL"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
При применении к вашему входу выдает:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ContactMatrix</title>
</head>
<body>
<table width="400" border="1">
<tr bgcolor="#546789">
<th>FirstName</th>
<th>LastName</th>
<th>Gmail</th>
<th>Yahoo</th>
<th>Libero</th>
<th>URL</th>
</tr>
<tr>
<td>AfgZohal</td>
<td>Zohal Afg</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Rangarajkarthik</td>
<td>karthik Rangaraj</td>
<td>kart2006@gmail.com</td>
<td>karthikrangaraj@yahoo.com</td>
<td></td>
<td></td>
</tr>
<tr>
<td>ReganPaul</td>
<td>Paul Michael Regan</td>
<td></td>
<td></td>
<td></td>
<td>http://www.facebook.com/profile.php?id=1660466705</td>
</tr>
<tr>
<td>keyankarthik</td>
<td>karthik keyan</td>
<td></td>
<td>karthycse@yahoo.co.in</td>
<td></td>
<td></td>
</tr>
<tr>
<td>ColomboGiorgia</td>
<td>Giorgia Colombo</td>
<td></td>
<td></td>
<td>giorgiacolombo89@libero.it</td>
<td></td>
</tr>
</table>
</body>
</html>