Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5Mobile wallpaper 6Mobile wallpaper 7Mobile wallpaper 8
168 字
1 分钟
Databases Week4 Seminar

XPath/XSLT#

Considering the Scholars XML code from last week’s tutorial:
Exercise 1 – Express the following XPath Axes queries:

  • The ID of all scholars.
    • //attribute::SID
  • The nationality of the second scholar.
    • //Scholar[2]/child::Nationality
    • //Scholar[2]/Nationality/self::*
  • The sex of scholars who are alive.
    • //Scholar/Age[attribute::Status="Alive"]/ancestor::*/Sex
  • Using the relative location path, retrieve the first profession of all scholars.
    • //Profession[1]/self::*
  • The ID of all-male scholars.
    • //Sex[text()="Male"]/parent::*/attribute::SID
  • All attributes of the scholar age.
    • //Age/attribute::*

Exercise 2 – Derive a full XSLT document to have an output similar to the following: 参考答案:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>Scholars List</title>
</head>
<body>
<h1>Scholars</h1>
<h2>Details of (
<xsl:value-of select="count(Scholars/Scholar)"/>
) scholars
</h2>
<table border="2">
<tr bgcolor="yellow">
<th>Name</th>
<th>Nationality</th>
<th>Birthplace</th>
<th>Age</th>
<th>Birthdate</th>
<th>Deathdate</th>
<th>Sex</th>
<th>Professions</th>
</tr>
<xsl:for-each select="Scholars/Scholar">
<tr>
<td>
<xsl:value-of select="Fullname"/>
<xsl:value-of select="concat(Firstname, ' ', Lastname)"/>
</td>
<td><xsl:value-of select="Nationality"/></td>
<td>
<xsl:if test="Birthplace=''">
<xsl:text>Null</xsl:text>
</xsl:if>
<xsl:value-of select="Birthplace"/>
</td>
<td><xsl:value-of select="Age"/></td>
<td><xsl:value-of select="Age/@Birthdate"/></td>
<td>
<xsl:choose>
<xsl:when test="Age/@Deathdate">
<xsl:value-of select="Age/@Deathdate"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>Alive</xsl:text>
</xsl:otherwise>
</xsl:choose>
</td>
<td><xsl:value-of select="Sex"/></td>
<td>
<xsl:for-each select="Professions/Profession">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Databases Week4 Seminar
https://mizuki.anka2.top/posts/l5-db-week4-seminar/
作者
🐦‍🔥不死鸟Anka
发布于
2025-10-23
许可协议
MIT

部分信息可能已经过时

封面
示例歌曲
示例艺术家
封面
示例歌曲
示例艺术家
0:00 / 0:00