Как я могу получить эти идентификаторы определенного жанра в XSLT?

#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. Это именно то, что я хотел, спасибо, что прояснили это 🙂