当我在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>
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>
一般来说,在浏览器中调试转换并不是很有用,因为通常情况下,无法找出问题所在(正如您所注意到的)。使用像Oxygen这样的IDE,或者像Saxon9.5这样的简单命令行处理器。
如果您使用命令行Saxon运行样式表,它会立即告诉您出了什么问题。以下是您在Oxygen:中看到的错误消息
E [Saxon6.5.5] Unknown XSLT element: value
这比更有帮助
Error loading stylesheet: Parsing an XSLT stylesheet failed.
来自Internet Explorer,或者不来自Chrome。
也就是说,一旦您确定样式表是正确的,在浏览器中运行转换可能是个好主意,因为这样转换就在客户端完成了。