我创建了2个文件:book.xml和book.xsl。我正在尝试打开xml文件并显示xsl信息。但是,只显示背景颜色,而没有其他文本。
对于我的类分配,我需要做的就是能够证明我可以将XML传输到另一种类型的文件(如XHTML)。
我使用的是Firefox和Internet Explorer,它只显示背景颜色。 Chrome根本不显示任何内容。
我在PC上使用Windows 7。
任何帮助将不胜感激!
以下是我目前输入的代码:
XML
<!-- book.xml file -->
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="book.xsl" ?>
<bookstore>
<h1>List of Books for Sale</h1>
<li>
<book>
<title>Harry Potter and the Sorcerer's Stone</title>
<author>Author: J.K. Rowling</author>
<year>Publish Year: 1997</year>
<price>Price: $29.95 USD</price>
</book>
<book>
<title>Hunger Games</title>
<author>Author: Suzanne Collins</author>
<year>Publish Year: 2008</year>
<price>Price: $39.95 USD</price>
</book>
<book>
<title>Game of Thrones</title>
<author>Author: George R.R. Martin</author>
<year>Publish Year: 1996</year>
<price>Price: $16.95 USD</price>
</book>
</li>
</bookstore>
XSLT
<!-- book.xsl' file -->
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<!-- Transfer this HTML to XHTML for display -->
<xsl:template match="/">
<html>
<head>
<title> List of Books For Sale </title>
</head>
<body style="background-color:ivory">
<!-- This is the template logic for the book elements
when several nodes match an XPath expression. -->
<xsl:for-each select="bookstore/book">
<xsl:apply-templates select="title" />
<xsl:apply-templates select="author" />
<xsl:apply-templates select="year" />
<xsl:apply-templates select="price" />
</xsl:for-each>
</body>
</html>
</xsl:template>
<!-- templates for the name and author elements-->
<xsl:template match="title">
<div style="display:list-item; color:black; margin-left:20pt;">
<xsl:value-of select="." />
</div>
</xsl:template>
<xsl:template match="author">
<div style="display:list-item; color:black; margin-left:20pt;">
<xsl:value-of select="." />
</div>
</xsl:template>
<xsl:template match="year">
<div style="display:list-item; color:black; margin-left:20pt;">
<xsl:value-of select="." />
</div>
</xsl:template>
<xsl:template match="price">
<div style="display:list-item; color:black; margin-left:20pt;">
<xsl:value-of select="." />
</div>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:2)
在您的XML中,book
元素嵌套在li
元素中,但您没有考虑用于选择book
元素的XPath表达式中的元素。
而不是这样做......
<xsl:for-each select="bookstore/book">
你只需要这样做......
<xsl:for-each select="bookstore/li/book">
另请注意,您的输入XML在您的问题中格式不正确,因为您缺少结束</bookstore>
标记。