Разбор с XSL - PullRequest
       40

Разбор с XSL

2 голосов
/ 06 февраля 2012

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 ]

2 голосов
/ 06 февраля 2012
  1. xsl:when родитель должен быть xsl:choose.
  2. xsl:choose должен содержать только xsl:when (не <hr/>)
2 голосов
/ 06 февраля 2012

xsl:when должен быть дочерним по отношению к xsl:choose, а не <dd>, и xsl:choose может иметь только xsl:when и xsl:otherwise в качестве детей, но не <\hr>.

. Вы можете использоватьVisualStudio Express и пакет Eclipse XML в качестве редакторов XSLT, позволяющие находить эти вещи во время их написания.

1 голос
/ 06 февраля 2012

Используйте XML Spy или аналогичные инструменты при написании XSLT - инструмент быстро подскажет, что есть, а что нет.

1 голос
/ 06 февраля 2012

Может быть, это <hr/> между </xsl:when> и </xsl:choose>?

Это должно быть либо в <xsl:when>, либо снаружи <xsl:choose> ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...