当我在Firefox中运行xml文件时,我得到:“加载样式表时出错:解析XSLT样式表失败。”当我在Chrome中运行它时,我会得到空白页面。 这是XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="g.xsl"?>
<forma>
<unos>
<ime>Marija</ime>
<prezime>Rahman</prezime>
<ulica>Glasinacka 8</ulica>
<postBroj>11000</postBroj>
<grad>Beograd</grad>
<drzava>Srbija</drzava>
<mobilni>0621912773</mobilni>
<email>marijarahman@gmail.com</email>
<korisnickoIme>maja</korisnickoIme>
<lozinka>maja123</lozinka>
</unos>
</forma>
这是XSLT文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl ="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr>
<th>Ime</th>
<th>Grad</th>
</tr>
<xsl:for-each select="forma/unos">
<tr>
<th>
<xsl:value select="ime"/>
</th>
<th>
<xsl:value select="grad"/>
</th>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:3)
XSLT中没有xsl:value
。该指令称为xsl:value-of
。
<强>样式表强>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl ="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr>
<th>Ime</th>
<th>Grad</th>
</tr>
<xsl:for-each select="forma/unos">
<tr>
<th>
<xsl:value-of select="ime"/>
</th>
<th>
<xsl:value-of select="grad"/>
</th>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
HTML输出
<html>
<body>
<table border="1">
<tr>
<th>Ime</th>
<th>Grad</th>
</tr>
<tr>
<th>Marija</th>
<th>Beograd</th>
</tr>
</table>
</body>
</html>
更一般地说,它对浏览器中的 debug 转换并不是很有用,因为通常无法找出出错的地方(正如您所注意到的)。使用像Oxygen这样的IDE,或像Saxon 9.5这样的简单命令行处理器。
如果您使用命令行Saxon运行样式表,它会立即告诉您出错了什么。以下是您在Oxygen中看到的错误消息:
E [Saxon6.5.5] Unknown XSLT element: value
比
更有帮助Error loading stylesheet: Parsing an XSLT stylesheet failed.
来自Internet Explorer的,或Chrome中的任何内容。
也就是说,一旦你确定你的样式表是正确的,运行浏览器中的转换可能是一个好主意,因为转换是在客户端完成的。