我的代码存在一些问题,但我不知道错误是什么。 它应该从XML文件中获取元素并将它们显示为表中的项。该表显示正常,但问题是没有元素。
这是XML:
<?xml version="1.0" encoding="UTF-8"?>
<bibliography>
<book>
<title>
Hello World
</title>
<author>
Ross Andrews
</author>
<article>
Article1
</article>
<bookreport>
Book Report1
</bookreport>
<presentation>
Presentation1
</presentation>
<weblink>
http://stackoverflow.com/questions/1590085/how-do-i-run-an-xslt-file
</weblink>
<softwarepackage>
Word
</softwarepackage>
</book>
</bibliography>
这是XSLT:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="books.xml">
<xsl:template match ="\">
<html>
<body>
<h2>
Bibliography Entries
</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">
Title
</th>
<th style="text-align:left">
Author
</th>
<th style="text-align:left">
Article
</th>
<th style="text-align:left">
Book Report
</th>
<th style="text-align:left">
Presentation
</th>
<th style="text-align:left">
Web Link
</th>
<th style="text-align:left">
Software package
</th>
</tr>
<xsl:for-each select="">
<tr>
<td>
<xsl:value-of select="title"/>
</td>
<td>
<xsl:value-of select="author"/>
</td>
<td>
<xsl:value-of select="article"/>
</td>
<td>
<xsl:value-of select="bookreport"/>
</td>
<td>
<xsl:value-of select="presentation"/>
</td>
<td>
<xsl:value-of select="weblink"/>
</td>
<td>
<xsl:value-of select="softwarepackage"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
您的XSLT存在许多问题。第一个是如何声明xsl
命名空间
<xsl:stylesheet version="1.0" xmlns:xsl="books.xml">
需要使用特定的名称空间URI定义xsl
名称空间前缀,以便XSLT处理器可以识别要处理的XSLT元素
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
如果您希望XSLT转换XML,您应该将以下处理指令添加到XML
<?xml-stylesheet type='text/xsl" href="books.xsl" ?>
下一个问题是您有一个匹配\
的模板,但它应该是/
以匹配文档元素
<xsl:template match="/">
最后,你有xsl:for-each
没有选择任何东西。它应该选择bibliography/book
<xsl:for-each select="bibliography/book">
试试这个XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Bibliography Entries</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Title</th>
<th style="text-align:left">Author</th>
<th style="text-align:left">Article</th>
<th style="text-align:left">Book Report</th>
<th style="text-align:left">Presentation</th>
<th style="text-align:left">Web Link</th>
<th style="text-align:left">Software package</th>
</tr>
<xsl:for-each select="bibliography/book">
<tr>
<td>
<xsl:value-of select="title"/>
</td>
<td>
<xsl:value-of select="author"/>
</td>
<td>
<xsl:value-of select="article"/>
</td>
<td>
<xsl:value-of select="bookreport"/>
</td>
<td>
<xsl:value-of select="presentation"/>
</td>
<td>
<xsl:value-of select="weblink"/>
</td>
<td>
<xsl:value-of select="softwarepackage"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
这个XML
<?xml-stylesheet type='text/xsl" href="books.xsl" ?>
<bibliography>
<book>
<title>Hello World</title>
<author>Ross Andrews</author>
<article>Article1</article>
<bookreport>Book Report1</bookreport>
<presentation>Presentation1</presentation>
<weblink>http://stackoverflow.com/questions/1590085/how-do-i-run-an-xslt-file</weblink>
<softwarepackage>Word</softwarepackage>
</book>
</bibliography>
中查看此操作