XSL无法使用Firefox进行分析



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

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

相关内容

  • 没有找到相关文章