用XSL解析

时间:2012-02-06 14:34:38

标签: xml parsing xslt xpath stylesheet

Firefox出现以下错误:     加载样式表时出错:解析XSLT样式表失败。

在Google Chrome中,它会显示一个空白页面。

以下是我的.xsl

的代码
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<html>
    <head>
        <title>Curriculum Vitae</title>

        <link rel="stylesheet" type="text/css" href="css/myStyle.css"/>

        <script type="text/javascript" src="js/jquery-1.6.4.min.js"></script>
        <script type="text/javascript" src="js/script.js"></script>
    </head>

<body>
    <h1>Curriculum Vitae: Matthew Stanley Klein</h1>
    <br/>

    <ul id="nav">
        <li><a href="#">General Information</a></li>
        <li><a href="#">Work Experience</a></li>
        <li><a href="#">Miscellaneous</a></li>
        <li><a href="#">References</a></li>
        <li><a href="#">Showreel</a></li>
    </ul>

    <xsl:for-each select="references/company">
        <xsl:choose>
            <xsl:when test="name != ''">
                <dl>
                    <dt><xsl:value-of select="name" /></dt>
                    <dd>
                        <dl>
                            <dt>Name of Person: <xsl:value-of select="person" /></dt>
                            <dd>
                                <xsl:when test="cellphone != ''">
                                    Cellphone:  <xsl:value-of select="cellphone" />
                                </xsl:when>

                                <xsl:when test="work != ''">
                                    <br/>
                                    work: <xsl:value-of select="work" />
                                </xsl:when>

                                <xsl:when test="email != ''">
                                    <br/>
                                    email: <xsl:value-of select="email" />
                                </xsl:when>
                            </dd>
                        </dl>
                    </dd>
                </dl>
            </xsl:when>
            <hr/>
        </xsl:choose>
    </xsl:for-each>
</body>
</html>

</xsl:template>

</xsl:stylesheet>

导致此错误的原因是什么?

4 个答案:

答案 0 :(得分:2)

  1. xsl:when家长应为xsl:choose
  2. xsl:choose应仅包含xsl:when(不是<hr/>

答案 1 :(得分:2)

xsl:when必须是xsl:choose的孩子,而不是<dd>,而xsl:choose只能有xsl:whenxsl:otherwise作为孩子,而不是<\hr> {1}}。

您可以使用VisualStudio Express和Eclipse XML包作为XSLT编辑器在编写时查找这些内容。

答案 2 :(得分:1)

也许是<hr/></xsl:when>之间的</xsl:choose>

应该在<xsl:when>之内,或在<xsl:choose>之外......

答案 3 :(得分:1)

在编写XSLT时使用XML Spy或类似工具 - 该工具将快速告诉您什么是不允许的和什么是不允许的。