Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XSLTProcessor и html entites, После трансформации xml исчезают энтити 
V
    Опции темы
RasierKlinge
Дата 31.1.2008, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.9.2006

Репутация: нет
Всего: нет



есть xml
Код

<?xml version="1.0" encoding="Windows-1251" ?>
<!DOCTYPE document [
<!ENTITY nbsp "& #160;">
<!ENTITY copy "& #169;">
<!ENTITY laquo "& #171;">
<!ENTITY raquo "& #187;">
<!ENTITY mdash "& #8212;"> ]>
<document id="87" parentID="0" href="/about/" >
    <name>О нас</name>
    <title>О нас</title>
    <content>
        <text>
            <h1>О&mdash;Компании</h1>
            <p>Ретроконверсия национального наследия развивает рекламоноситель, признавая определенные рыночные тенденции.
            Медиа вырождена. Стимулирование сбыта, следовательно, синхронизирует охват аудитории, размещаясь во
всех медиа. Баинг и селлинг абстрактен.</p>
        </text>
    </content>
</document>


xsl:
Код

<?xml version="1.0" encoding="utf-8" ?>

<!DOCTYPE xsl:stylesheet SYSTEM "character-entities.dtd">

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xml">
    <xsl:import href="text.xsl" />
    <xsl:import href="errors.xsl" />
    <xsl:import href="useful.xsl" />
    <xsl:import href="forms.xsl" />

    <xsl:include href="layout.xsl" />

    <xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes" omit-xml-declaration="yes" encoding="windows-1251" />

    <xsl:variable name="content" select="/document/content" />

    <xsl:template match="/">
        <xsl:apply-templates select="document" />
    </xsl:template>

    <xsl:template match="document">
        <html xmlns="http://www.w3.org/1999/xhtml">
            <xsl:call-template name="HTMLHead" />
            <xsl:apply-templates select="." mode="body" />
        </html>
    </xsl:template>

    <xsl:template match="clear" name="clear">
        <div class="clear"><xsl:call-template name="emptySpan" /></div>
    </xsl:template>

    <xsl:template name="HTMLHead">
        <head>
            <xsl:call-template name="HTMLTitle" />
            <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
            <link rel="stylesheet" href="/css/layout.css" type="text/css" />
        </head>
    </xsl:template>

    <xsl:template name="HTMLTitle">
        <title><xsl:value-of select="document/name" /></title>
    </xsl:template>

    <xsl:template match="*" mode="body">
        <body>
            <xsl:apply-templates select="$content/text" />
        </body>
    </xsl:template>

</xsl:stylesheet>


на php трансформирую xml
Код

            $xml= new DOMDocument('1.0','Windows-1251');
            $xml->loadXML($sXML);            
            
            $xsl = new DOMDocument();
            $xsl->resolveExternals = TRUE;
            $xsl->substituteEntities = TRUE;
            $xsl->load( $sXslPath);            
            
            $xslProc = new XSLTProcessor();
            $xslProc->importStylesheet($xsl);
            
            $dom = $xslProc->transformToXML( $xml );
            if ( $dom ){
                return $dom;
            }


на всякий случай фот файл с энтити
Код

<?xml version="1.0" encoding="UTF-8"?>

<!ENTITY nbsp "& #160;">
<!ENTITY copy "& #169;">
<!ENTITY laquo "& #171;">
<!ENTITY raquo "& #187;">
<!ENTITY mdash "& #8212;">

(Энтити пишу без пробелов, просто иначе тут не написать, они заменяються на сиволы)

На выходе не появляеться ни одной энтити. Прсто вместо 
О&mdash;Компании пишет
ОКомпании

файл с описаними сущностей в xsl подключается нормально (если его удалить выдвает ошибку),
В xml до трансформации они отображаються правельно,
ошибок не выводится

голову уже сломала, никак не пойму чего нехватает...

Это сообщение отредактировал(а) RasierKlinge - 31.1.2008, 21:07
PM MAIL   Вверх
RasierKlinge
Дата 1.2.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.9.2006

Репутация: нет
Всего: нет



вопрос решился
Энтити в xml нужно объявлять так же как и в xsl
Код

        <!DOCTYPE text SYSTEM "symbols.ent">


Код

        $xml = new DOMDocument('1.0','Windows-1251');
        $xml->resolveExternals = TRUE;
        $xml->substituteEntities = TRUE;


просто невнимтельность...
 smile 

Это сообщение отредактировал(а) RasierKlinge - 1.2.2008, 17:40
PM MAIL   Вверх
nolan
Дата 24.3.2008, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



Леди! Решаю аналогичную проблему,  но получаю ошибку:

Warning: DOMDocument::load() [function.DOMDocument-load]: Entity 'mdash' not defined in file:///C%3A/Inetpub/phproot/xml/index.xml, line: 44 in C:\Inetpub\phproot\index.php on line 18

Вроде все сделал по вашему мануалу, но не выходит каменный цветок. smile

Если не трудно, стукнитесь в аську  313-657-507.

Спасибо.
PM MAIL   Вверх
awers
Дата 25.3.2008, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: нет
Всего: 31



nolan, одна тема - один вопрос... создай новую - обсудим
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.