以下は、変換する必要のある元のXMLファイルです。これは、アルバムを発行年の昇順で並べ替えたHTMLテーブルに変換する必要がある音楽アルバムレコードのリストであり、個々のレコード要素に含まれるジャンルとレコードレーベル要素を次のように関連付ける必要があります。 id参照を参照し、アルバムごとにテーブルに出力します。
2番目の変換では、基本的に同じことを行う必要がありますが、その場合、出力にはロックとポップのジャンルのアルバムのみを含める必要があります。
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="zadacha1.xsl" ?>
<record_collection>
<genres>
<genre id="1">Rock</genre>
<genre id="2">Pop</genre>
<genre id="3">Disco</genre>
<genre id="4">Rap</genre>
<genre id="5">Electronic</genre>
<genre id="6">Country</genre>
</genres>
<record_labels>
<record_label id="1">DGC Records</record_label>
<record_label id="2">Atlantic</record_label>
<record_label id="3">Epic</record_label>
<record_label id="4">Warner Bros.</record_label>
<record_label id="5">EMI</record_label>
<record_label id="6">Columbia</record_label>
</record_labels>
<records>
<record>
<artist>Nirvana</artist>
<genreID>1</genreID>
<album>Nevermind</album>
<year_of_issue>1992</year_of_issue>
<record_labelID>1</record_labelID>
</record>
<record>
<artist>Twisted Sister</artist>
<genreID>1</genreID>
<album>Stay Hungry</album>
<year_of_issue>1984</year_of_issue>
<record_labelID>2</record_labelID>
</record>
<record>
<artist>Michael Jackson</artist>
<genreID>2</genreID>
<album>Thriller</album>
<year_of_issue>1982</year_of_issue>
<record_labelID>3</record_labelID>
</record>
<record>
<artist>Bee Gees</artist>
<genreID>3</genreID>
<album>Spirits Having Flown</album>
<year_of_issue>1979</year_of_issue>
<record_labelID>4</record_labelID>
</record>
<record>
<artist>Ice-T</artist>
<genreID>4</genreID>
<album>O.G. Original Gangster</album>
<year_of_issue>1991</year_of_issue>
<record_labelID>4</record_labelID>
</record>
<record>
<artist>Kraftwerk</artist>
<genreID>5</genreID>
<album>Computer World</album>
<year_of_issue>1981</year_of_issue>
<record_labelID>5</record_labelID>
</record>
<record>
<artist>Johnny Cash</artist>
<genreID>6</genreID>
<album>Man in Black</album>
<year_of_issue>1971</year_of_issue>
<record_labelID>6</record_labelID>
</record>
</records>
</record_collection>
私が管理できたのは、ジャンルとレコードレーベルの要素なしで並べ替えられていないテーブルを出力することでした。これらは個々のレコードのIDを介してリンクされており、IDに到達してIDの後ろにテキストを出力する方法がわからないためです。これが、XSLT変換として今まで持っているものです。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/record_collection/records">
<html>
<head>
<title>Records Collection</title>
</head>
<body>
<h1>Records Collection</h1>
<table border="1">
<tr>
<th>Genre</th>
<th>Artist</th>
<th>Album</th>
<th>Year</th>
<th>Label</th>
</tr>
<xsl:apply-templates select="record" />
</table>
<xsl:call-template name="footer" />
</body>
</html>
</xsl:template>
<xsl:template match="record">
<tr>
<td>?</td>
<td><xsl:value-of select="artist" /></td>
<td><xsl:value-of select="album" /></td>
<td><xsl:value-of select="year_of_issue" /></td>
<td>?</td>
</tr>
</xsl:template>
<xsl:template name="footer">
<div style="margin: 20px 0; padding: 10px; background-color: #efefef; ">
Record Collection
</div>
</xsl:template>
</xsl:stylesheet>