Я не могу найти какой-либо твердый, полезный ответ на это онлайн.Для класса мне нужно иметь файлы XML, XSD, XSL, HTML и CSS для включения. XML и XSD готовы, и они могут быть проверены, но у меня возникли проблемы с XSL / HTML.По сути, мне нужно иметь 5 разных шаблонов в одном и том же XSL - по одному для каждого раздела в моем XML.Вот основная схема моего XML:
<duchovny>
<filmography>
...
</filmography>
<vg>
...
</vg>
<music>
...
</music>
<books>
...
<awards>
...
</awards>
</duchovny>
Это то, что у меня есть для моего XSL - он выдает ошибку, когда я пытаюсь отобразить мой XML в своем браузере («Ошибка загрузки таблицы стилей: парсингОшибка таблицы стилей XSLT. "):
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0" indent="yes"/>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css"/>
<title>All About David Duchovny</title>
</head>
<body>
<xsl:template match="/">
<header>
<h1>All About David Duchovny</h1>
<div id="navigation">
<nav>
<a href="#filmography">filmography</a> |
<a href="#vg">video games</a> |
<a href="#music">music</a> |
<a href="#bookd">books</a> |
<a href="#awards">awards</a>
</nav>
</div>
</header>
</xsl:template>
<xsl:template match="filmography">
<section>
<div id="filmography" a href="#filmography">
<h2>Filmography</h2>
<h3>Movies</h3>
<xsl:for-each select="//film">
<p><xsl:value-of select="film/info1/@title"/></p>
</xsl:for-each>
</div>
</section>
</xsl:template>
</body>
</html>
</xsl:stylesheet>
Я не могу понять, почему именно это не работает.Это работает, когда я ставлю сразу после выходного вызова, но тогда раздел, где я пытаюсь отобразить названия фильмов, не появляется (потому что мне нужно закрыть элемент HTML перед этим разделом, я думаю).Я не могу понять, как применить несколько шаблонов и заставить их все отображаться.
В качестве альтернативы (хотя и не работающей) у меня есть этот код, пытающийся использовать apply-template:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css"/>
<title>All About David Duchovny</title>
</head>
<body>
<header>
<h1>All About David Duchovny</h1>
<div id="navigation">
<nav>
<a href="#filmography">filmography</a> |
<a href="#vg">video games</a> |
<a href="#music">music</a> |
<a href="#bookd">books</a> |
<a href="#awards">awards</a>
</nav>
</div>
</header>
<section>
<xsl:apply-template match="filmography" mode="filmography"/>
</section>
</body>
</html>
</xsl:template>
<xsl:template match="filmography">
<div id="filmography" a href="#filmography">
<h2>Filmography</h2>
<h3>Movies</h3>
<xsl:for-each select="//film">
<p><xsl:value-of select="film/info1/@title"/></p>
</xsl:for-each>
</div>
</xsl:template>
</xsl:stylesheet>
Буду очень признателен за вашу помощь !!