浏览器无法正确解析样式表

时间:2017-03-20 09:11:38

标签: html xml parsing xslt

我有一个XML文件:

 <?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet hred="remakes.xsl" type="text/xsl" ?>
<remakes>
<remake>
<rtitle>Pygmalion</rtitle>
<ryear>1938</ryear>
<fraction>0.5</fraction>
<stitle>Pygmalion</stitle>
<syear>1937</syear>
</remake>...

我创建了一个样式表:

 ?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/remakes">
<html>
<body>
<table border="1">
    <tr>
        <th>rtitle<</th>
        <th>fraction<</th>
        <th>stitle<</th>
        <th>syear<</th>
    </tr>
    <xsl:for-each select="remake">
        <xsl:value-of select="rtitle"/></td>
        <xsl:value-of select="fraction"/></td>
        <xsl:value-of select="stitle"/></td>
        <xsl:value-of select="syear"/></td>
    </xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

但是浏览器不会解析它而不是桌子就会出现混乱。代码中有错误吗?

1 个答案:

答案 0 :(得分:0)

你的样式表有很多问题,虽然它们可能总是与你的问题拼写错误,但是由于评论中有太多不能提及,它们如下:

  1. 尚未绑定名称空间前缀xsl。您应该输入xmlns:xsl="..."
  2. 每个表标题<中都有一个<th>rtitle<</th>符号。如果你真的想要这个,你应该把它写成<th>rtitle&lt;</th>,但更可能只是<th>rtitle</th>
  3. 每行都有一个结束<\td>,但没有开放<td>标记。
  4. 您还需要将<td>包裹在<tr>标记中,以便正确呈现。
  5. 试试这个XSLT

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/remakes">
    <html>
    <body>
    <table border="1">
        <tr>
            <th>rtitle</th>
            <th>fraction</th>
            <th>stitle</th>
            <th>syear</th>
        </tr>
        <xsl:for-each select="remake">
            <tr>
                <td><xsl:value-of select="rtitle"/></td>
                <td><xsl:value-of select="fraction"/></td>
                <td><xsl:value-of select="stitle"/></td>
                <td><xsl:value-of select="syear"/></td>
            </tr>
        </xsl:for-each>
    </table>
    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>