我是 XML 和 XSLT 的新手。我一直在尝试编写 XSL。但无法弄清楚如何在我的 xsl 中处理 xml 文档中的属性。
这是我的示例 xml。
<Books>
<Book Cover="Paper back">
<Isbn>AS-1-4652-05128-2</Isbn>
<Title>Advanced Computing Theory</Title>
<Author>
<Name>
<First>John</First>
<Last>Grisham</Last>
</Name>
<Contact Office="str1234">
<Phone>782-999-1212</Phone>
</Contact>
</Author>
<Publisher>Kendall Hunt</Publisher>
<Year Edition="2">
<Year>1980</Year>
</Year>
这是我的 XSL 文档:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html> <body>
<h1>Books</h1>
<table border="1">
<tr bgcolor="yellow">
<td><b>ISBN </b></td>
<td><b>Title</b></td>
<td><b>Author</b></td>
<td><b>Publisher</b></td>
<td><b>Year and Edition</b></td>
</tr>
<xsl:for-each select="Books/Book">
<xsl:sort select="Title" />
<tr style="font-size: 10pt; font-family: verdana">
<td><xsl:value-of select="Isbn"/></td>
<td><xsl:value-of select="Title"/></td>
<xsl:for-each select="Author">
<td><xsl:value-of select="First"/> <xsl:value-of select="Last"/> <xsl:value-of select="Phone"/> <xsl:value-of select="@Office"/> </td><!-- Problem here-->
</xsl:for-each>
<td><xsl:value-of select="Publisher"/></td>
<td><xsl:value-of select="Year"/> <xsl:value-of select="@Edition"/> </td>!-- Problem here-->
</tr>
</xsl:for-each>
</table>
</body> </html>
</xsl:template>
</xsl:stylesheet>
渲染的(相关)HTML如下:
<tr style="font-size: 10pt; font-family: verdana">
<td>AS-1-4652-05128-2</td>
<td>Advanced Computing Theory</td>
<td></td><!--Empty-->
<td>Kendall Hunt</td>
<td>
1980
<!--Empty, No edition!-->
</td>
</tr>
我知道我错过了一个小细节,但不能完全弄清楚它是什么!