Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > XSLT - document() в Опере


Автор: POLTER 2.8.2007, 15:57
Здравствуйте!
Нужно включить другой файл в xslt-шаблон.
Делаю это так:
Код

<xsl:value-of select="document('file.xml')" />

Во всех броузерах, кроме Opera, это работает.
В опере же выскакивает ошибка
Цитата

XSLT processing failed!

В чем может быть проблема?
Спасибо.

Автор: Shedar 3.8.2007, 20:36
Проблема в том, что как пишут на сайте оперы (http://www.opera.com/docs/specs/)
Цитата

The document() function is not supported.


Первое что приходит в голову - подключаемый файл сделать xslt-шаблоном, и подключать его челез xsl:include или xsl:import.

Автор: sergejzr 3.8.2007, 20:52
Да, Опера не поддерживает эту функцию. 
Как всегда оперисты делали только полдела. 

Автор: POLTER 3.8.2007, 21:30
Спасибо за ответы!
А как можно с помощью xml:include вставить что-нибудь в сам шаблон?
Например, вот это не работает:
Код

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="page">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>
  <xsl:import href="content.xsl" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Автор: sergejzr 3.8.2007, 21:52
Должно работать. 
Если хочешь, взгляни на мои наработки на XML/XSL. Думаю многое там можно подсмотреть.
http://sergejzr.jino-net.ru/vcms/

Автор: POLTER 3.8.2007, 22:03
Спасибо, буду разбираться smile
Кстати, в опере не работает то, что по ссылочке...

Автор: sergejzr 3.8.2007, 22:16
Возможно отключили и это. Раньше работало и в опере

Добавлено через 5 минут и 43 секунды
Ага, проверил... опера сакс. придётся ей на сервеке генерить ХТМЛ

Автор: Shedar 3.8.2007, 23:07
Цитата(POLTER @  3.8.2007,  21:30 Найти цитируемый пост)
А как можно с помощью xml:include вставить что-нибудь в сам шаблон?


include должен быть вне template. Например делаем content.xsl:
Код

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

<xsl:template name="content">
    bla-bla-bla
</xsl:template>

</xsl:stylesheet>


После чего основной шаблон выглядит так:
Код

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:import href="content.xsl" />
<xsl:template match="/">
<html>
    <xsl:call-template name="content" />
</html>
</xsl:template>

</xsl:stylesheet>

Автор: POLTER 4.8.2007, 00:10
Спасибо большое, это то, что мне надо  smile  smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)