#xml #xslt
#xml #xslt
Вопрос:
Я очень новичок в использовании XSLT, и я только недавно начал его изучать. У меня возникли проблемы при попытке напечатать определенное значение для отображения в формате HTML на основе приведенного ниже XML-файла. По сути, я хочу, чтобы HTML-страница, созданная файлом XSL, отображала все идентификаторы книг только из жанра фэнтези, к которому они относятся ‘bk102, bk102, bk104 и bk105’. Я пробовал себя некоторое время, но, честно говоря, не уверен, как это сделать.
Любая помощь будет высоко оценена, извините за беспокойство и заранее благодарю вас.
XML-файл
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "books3.xsl"?>
<catalog>
<book id = "bk101">
<author> Gambardella, Matthew </author>
<title> XML Developer's Guide </title>
<genre> Computer </genre>
<price> 44.95 </price>
<publish>
<publish_date> 2000 </publish_date>
<publisher> Wiley </publisher>
</publish>
<description> An in-depth look at creating applications with XML. </description>
</book>
<book id = "bk102">
<author> Ralls, Kim </author>
<title> Midnight Rain </title>
<genre> Fantasy </genre>
<price> 5.95 </price>
<publish>
<publish_date> 2000 </publish_date>
<publisher> Penguin </publisher>
</publish>
<description> A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world. </description>
</book>
<book id = "bk103">
<author> Corets, Eva </author>
<title> Maeve Ascendant </title>
<genre> Fantasy </genre>
<price> 5.95 </price>
<publish>
<publish_date> 2000 </publish_date>
<publisher> Penguin </publisher>
</publish>
<description> After the collapse of a nanotechnology society in England, the young survivors lay the foundation for a new society. </description>
</book>
<book id = "bk104">
<author> Corets, Eva </author>
<title> Oberon's Legacy </title>
<genre> Fantasy </genre>
<price> 5.95 </price>
<publish>
<publish_date> 2001 </publish_date>
<publisher> Penguin </publisher>
</publish>
<outOfPrint/>
<description> In post-apocalypse England, the mysterious agent known only as Oberon helps to create a new life for the inhabitants of London. Sequel to Maeve Ascendant. </description>
</book>
<book id = "bk105">
<author> Corets, Eva </author>
<title> The Sundered Grail </title>
<genre> Fantasy </genre>
<price> 5.95 </price>
<publish>
<publish_date> 2002 </publish_date>
<publisher> Penguin </publisher>
</publish>
<description> The two daughters of Maeve, half-sisters, battle one another for control of England. Sequel to Oberon's Legacy. </description>
</book>
<book id = "bk106">
<author> Randall, Cynthia </author>
<title> Lover Birds </title>
<genre> Romance </genre>
<price> 4.95 </price>
<publish>
<publish_date> 2000 </publish_date>
<publisher> Whitehouse </publisher>
</publish>
<description> When Carla meets Paul at an ornithology conference, tempers fly as feathers get ruffled. </description>
</book>
<book id = "bk107">
<author> Thurman, Paula </author>
<title> Splish Splash </title>
<genre> Romance </genre>
<price> 4.95 </price>
<publish>
<publish_date> 2000 </publish_date>
<publisher> Whitehouse </publisher>
</publish>
<description> A deep sea diver finds true love twenty thousand leagues beneath the sea. </description>
</book>
<book id = "bk108">
<author> Knorr, Stefan </author>
<title> Creepy Crawlies </title>
<genre> Horror </genre>
<price> 4.95 </price>
<publish>
<publish_date> 2000 </publish_date>
<publisher> Wiley </publisher>
</publish>
<outOfPrint/>
<description> An anthology of horror stories about roaches,centipedes, scorpions and other insects. </description>
</book>
<book id = "bk109">
<author> Kress, Peter </author>
<title> Paradox Lost </title>
<genre> Science Fiction </genre>
<price> 6.95 </price>
<publish>
<publish_date> 2000 </publish_date>
<publisher> Penguin </publisher>
</publish>
<description> After an inadvertant trip through a HeisenbergUncertainty Device, James Salway discovers the problems of being quantum. </description>
</book>
<book id = "bk110">
<author> O'Brien, Tim </author>
<title> Microsoft .NET: The Programming Bible </title>
<genre> Computer </genre>
<price> 36.95 </price>
<publish>
<publish_date> 2000 </publish_date>
<publisher> Penguin </publisher>
</publish>
<description> Microsoft's .NET initiative is explored in detail in this deep programmer's reference. </description>
</book>
<book id = "bk111">
<author> O'Brien, Tim </author>
<title> MSXML3: A Comprehensive Guide </title>
<genre> Computer </genre>
<price> 36.95 </price>
<publish>
<publish_date> 2000 </publish_date>
<publisher> Penguin </publisher>
</publish>
<outOfPrint/>
<description> The Microsoft MSXML3 parser is covered in detail, with attention to XML DOM interfaces, XSLT processing, SAX and more. </description>
</book>
<book id = "bk112">
<author> Galos, Mike </author>
<title> Visual Studio 7: A Comprehensive Guide </title>
<genre> Computer </genre>
<price> 49.95 </price>
<publish>
<publish_date> 2001 </publish_date>
<publisher> Wiley </publisher>
</publish>
<description> Microsoft Visual Studio 7 is explored in depth,looking at how Visual Basic, Visual C , C#, and ASP are integrated into a comprehensive development environment. </description>
</book>
</catalog>
Файл XSLT
<?xml version = "1.0"?>
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0">
<xsl:output method = "html"/>
<xsl:template match = "/">
<html>
<body>
<xsl:for-each select = "catalog/book">
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Комментарии:
1. Пожалуйста, покажите ожидаемый результат.
2. Я хотел бы вывести в HTML-файл или браузер, отображающий следующее:
3. bk102 bk103 bk104 bk105
4. Итак, просто для печати идентификаторов книг, относящихся к жанру фэнтези
5. Ваш метод вывода — HTML. Пожалуйста, укажите точный ожидаемый результат в виде HTML-кода на ваш вопрос.
Ответ №1:
Я предполагаю, что вы хотите сделать что-то вроде:
<xsl:stylesheet version = "1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="html"/>
<xsl:template match="/catalog">
<html>
<body>
<xsl:for-each select="book[normalize-space(genre)='Fantasy']">
<p>
<xsl:value-of select="@id" />
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Комментарии:
1. Это именно то, что я хотел, спасибо, что прояснили это 🙂