XSL 无法用 Firefox 解析

XSL cannot parse with Firefox

当我在 Firefox 中 运行 xml 文件时,我得到: "Error loading stylesheet: Parsing an XSLT stylesheet failed." 而当我在 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,或者像 Saxon 9.5 这样的简单命令行处理器。

如果您有 运行 带有命令行 Saxon 的样式表,它会立即告诉您哪里出了问题。这是您在 Oxygen 中看到的错误消息:

E [Saxon6.5.5] Unknown XSLT element: value

更有帮助
Error loading stylesheet: Parsing an XSLT stylesheet failed.

来自 Internet Explorer,或者没有来自 Chrome。

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