XSL无法用Firefox解析

时间:2015-03-05 17:12:07

标签: css xml xslt xslt-1.0

当我在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>

1 个答案:

答案 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中的任何内容。

也就是说,一旦你确定你的样式表是正确的,运行浏览器中的转换可能是一个好主意,因为转换是在客户端完成的。