我不确定是什么问题,或者我的XSLT文件中缺少什么,结果没有按预期显示,其中<html></html>
以外的所有代码都没有出现!
我也尝试从xsl:output method="html"
切换到xsl:output method="xml"
,它也不起作用。结果只显示BOOKS STORE,下面没有其他内容。
请帮帮忙。谢谢!
这是XSLT文件
<?xml version="1.0" encoding="utf-8"?><!-- DWXMLSource="books1.xml" -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html>
<body bgcolor="#fff">
<h1>BOOKS STORE </h1>
</body>
</html>
</xsl:template>
<xsl:template match="ITEM">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="ITEM">
<h3><xsl:value-of select="title"/></h3>
<xsl:apply-templates/>
</xsl:template>
</xsl:template>
</xsl:stylesheet>
这是XML文件
<?xml version="1.0" encoding="utf-8"?>
<BOOKS>
<ITEM CAT="MMP">
<TITLE>Pride and Prejudice</TITLE>
<AUTHOR>Jane Austen</AUTHOR>
<PUBLISHER>Modern Library</PUBLISHER>
<PUB-DATE>2002-12-31</PUB-DATE>
<LANGUAGE>English</LANGUAGE>
<PRICE>9</PRICE>
</ITEM>
<ITEM CAT="P">
<TITLE>Wuthering Heights</TITLE>
<AUTHOR>Charlotte Brontë</AUTHOR>
<PUBLISHER>Penguin Classics</PUBLISHER>
<PUB-DATE>2002-12-31</PUB-DATE>
<LANGUAGE>English</LANGUAGE>
<PRICE>9.040000000000001</PRICE>
</ITEM>
<ITEM CAT="P">
<TITLE>Tess of the d'Urbervilles</TITLE>
<AUTHOR>Thomas Hardy</AUTHOR>
<PUBLISHER>Bantam Classics</PUBLISHER>
<PUB-DATE>1984-05-01</PUB-DATE>
<LANGUAGE>English</LANGUAGE>
<PRICE>12.5</PRICE>
</ITEM>
<ITEM CAT="P">
<TITLE>Jude the Obscure</TITLE>
<AUTHOR>Thomas Hardy</AUTHOR>
<PUBLISHER>Penguin Classics</PUBLISHER>
<PUB-DATE>1998-09-01</PUB-DATE>
<LANGUAGE>English</LANGUAGE>
<PRICE>7</PRICE>
</ITEM>
<ITEM CAT="H">
<TITLE>The Big Over Easy</TITLE>
<AUTHOR>Jasper Fforde</AUTHOR>
<PUBLISHER>Hodder & Stoughton</PUBLISHER>
<PUB-DATE>2005-07-11</PUB-DATE>
<LANGUAGE>English</LANGUAGE>
<PRICE>14.55</PRICE>
</ITEM>
<ITEM CAT="P">
<TITLE>The Eyre Affair</TITLE>
<AUTHOR>Jasper Fforde</AUTHOR>
<PUBLISHER>Penguin</PUBLISHER>
<PUB-DATE>2003-02-25</PUB-DATE>
<LANGUAGE>English</LANGUAGE>
<PRICE>15</PRICE>
</ITEM>
</BOOKS>
答案 0 :(得分:1)
您没有获得任何额外输出的原因是您在此模板中没有xsl:apply-templates
:
<xsl:template match="/">
<html>
<body bgcolor="#fff">
<h1>BOOKS STORE </h1>
</body>
</html>
</xsl:template>
添加如下:
<xsl:template match="/">
<html>
<body bgcolor="#fff">
<h1>BOOKS STORE </h1>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
您还有一个额外的</xsl:template>
。
另一件事是你有ITEM
模糊的模板匹配。你只需要使用一个。
您的样式表应如下所示:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html>
<body bgcolor="#fff">
<h1>BOOKS STORE </h1>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="ITEM">
<h3><xsl:value-of select="TITLE"/></h3>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
请注意,由于您要匹配ITEM
然后执行xsl:apply-templates
,因此您将获得重复的标题输出。由于XSLT built-in rules,您还将从ITEM
中获取所有其他元素的文本。
这至少应该让你开始。如果有任何问题,请提出更多问题。
答案 1 :(得分:0)
也许如果您可以显示所需的输出XML,那将非常有用。
我在这里做了一个非常疯狂的猜测。你想列出“BOOKS STORE”下面的所有“TITLE”吗?
在这种情况下,您可以尝试
<xsl:template match="/">
<html>
<body bgcolor="#fff">
<h1>BOOKS STORE </h1>
<xsl:for-each select="//ITEM/TITLE">
<TITLE><xsl:value-of select="."/></TITLE>
</xsl:for-each>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>