Когда вы хотите выбрать узлы в своей XSLT-программе, вы должны указать абсолютный или относительный путь к этому узлу. Например, когда вы выполняете <xsl:template match="/">
и внутри этого шаблона вы хотите выбрать тег <title>
, вы должны указать относительный путь к нему, как в <xsl:value-of select="manuals/title">
, или абсолютный путь, как в <xsl:value-of select="/manuals/title">
или <xsl:value-of select="//title">
, а не просто <xsl:value-of select="title">
.
Мне также пришлось угадывать, как создавать неупорядоченные списки с <ul>...</ul>
, поскольку это не было предусмотрено в вашем коде.
Попробуйте этот XSLT code:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" version="5.0"/>
<xsl:template match="/">
<html lang="en">
<head>
<title>test</title>
<style>table,th, td {border: 1px solid black; padding: 5px;}</style>
</head>
<body>
<table>
<caption>
<xsl:value-of select="manuals/title"/>
</caption>
<xsl:for-each select="manuals/results/auto">
<tr>
<td colspan="2" style="text-align:center">
<xsl:value-of select="@name"/>
</td>
</tr>
<xsl:for-each select="manual">
<tr>
<td>
<xsl:value-of select="@name"/>
</td>
<td>
<xsl:choose>
<xsl:when test="count (result/@column) = 0">
(empty)<!-- you can decide to do something else here -->
</xsl:when>
<xsl:when test="count (result/@column) = 1">
<xsl:value-of select="result/@column"/>
</xsl:when>
<xsl:otherwise>
<ul>
<xsl:for-each select="result/@column">
<li>
<xsl:value-of select="."/>
</li>
</xsl:for-each>
</ul>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Ниже результат, который я получаю с xsltproc
, без отступов, я не знаю почему:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>test</title>
<style>table,th, td {border: 1px solid black; padding: 5px;}</style>
</head>
<body><table>
<caption>Test</caption>
<tr><td colspan="2" style="text-align:center">Data</td></tr>
<tr>
<td>Blank</td>
<td>Data</td>
</tr>
<tr><td colspan="2" style="text-align:center">View</td></tr>
<tr>
<td>Blank2</td>
<td><ul>
<li>Information</li>
<li>Test</li>
</ul></td>
</tr>
<tr>
<td>Value</td>
<td>Exceptions</td>
</tr>
</table></body>
</html>