У меня просто небольшая проблема, я не могу понять, что я делаю неправильно.Я довольно новичок в XSLT, поэтому прошу прощения, если я делаю ошибку новичка или задаю аналогичный вопрос.У меня просто есть простой XML-файл с данными фильма, и я пытаюсь отобразить все жанры для каждого фильма.Некоторые фильмы имеют несколько жанров, а некоторые только один.Однако, когда я пытаюсь реализовать свое решение, я просто не получаю никакого вывода.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="movies.xsl"?>
<movies>
<movie>
<title lang="en">Spider-Man: Into the Spider-Verse</title>
<poster-url>https://resizing.flixster.com/b5taZMzly27b3UlO8PArsKvP3qM=/fit-in/200x296.2962962962963/v1.bTsxMjg3MjM1MDtqOzE3OTIzOzEyMDA7NjA3Mjs5MDAw</poster-url>
<trailer src="http://www.intothespiderverse.movie/#trailer"/>
<release-date><year>2018</year> <month>12</month> <day>14</day></release-date>
<director>Bob Persichetti</director>
<director>Peter Ramsey</director>
<director>Rodney Rotham</director>
<genre>action</genre>
<genre>animated</genre>
<genre>superhero</genre>
<runtime>100</runtime>
<actor>Shameik Moore</actor>
<actor>Hailee Steinfeld</actor>
<actor>Mahershala Ali</actor>
<mpaa>
<rating>PG</rating>
</mpaa>
<studio>Sony Pictures</studio>
<reviews>
</reviews>
</movie>
и мой фрагмент XSLT
<xsl:choose>
<xsl:when test="count(genre) > 1">
Genres:
<xsl:for-each select="genre">
<xsl:value-of select="genre"/>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
Genre:
<xsl:value-of select="genre"/>
</xsl:otherwise>
</xsl:choose>
, и это весь мой документ.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
<title>Movies Movies Movies</title>
</head>
<body>
<h1>Movies Movies Movies</h1>
<ul>
<xsl:for-each select="movies/movie">
<li><xsl:value-of select="title"/>
<br/>
<img>
<xsl:attribute name="src">
<xsl:value-of select="poster-url"/>
</xsl:attribute>
</img>
See the
<xsl:choose>
<xsl:when test="not(trailer)">
<a>
<xsl:attribute name="href">
<xsl:value-of select="translate(review,' ','+')"/>
</xsl:attribute>
<xsl:text>reviews</xsl:text>
</a>
</xsl:when>
<xsl:otherwise>
<a>
<xsl:attribute name="href">
<xsl:value-of select="translate(trailer,' ','+')"/>
</xsl:attribute>
<xsl:text>trailer</xsl:text>
</a>
and
<a>
<xsl:attribute name="href">
<xsl:value-of select="translate(review,' ','+')"/>
</xsl:attribute>
<xsl:text>reviews</xsl:text>
</a>
</xsl:otherwise>
</xsl:choose>
<br/>
<xsl:choose>
<xsl:when test="count(genre) > 1">
Genres:
<xsl:for-each select="genre">
<xsl:value-of select="genre"/>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
Genre:
<xsl:value-of select="genre"/>
</xsl:otherwise>
</xsl:choose>
<br/>
Released:
<xsl:value-of select="release-date/year"/>
<xsl:value-of select="format-number(release-date/month,'-00')"/>
<xsl:value-of select="format-number(release-date/day,'-00')"/>
</li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
В моем фрагменте выше я сначала подтверждаю, есть ли у фильма один или несколько жанров.Если он имеет более одного, я запускаю цикл и пытаюсь отобразить все связанные жанры и заканчиваю цикл.Если у него только 1, то это просто и красиво, и я просто отображаю жанр.Это показ нескольких жанров, который, кажется, не работает, фильмы только с одним показом.Я думаю, что это связано с моим for-each
цикл, возможно, не в нужном месте?Спасибо!