есть 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>О—Компании</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;">
|
(Энтити пишу без пробелов, просто иначе тут не написать, они заменяються на сиволы)
На выходе не появляеться ни одной энтити. Прсто вместо О—Компании пишет ОКомпании
файл с описаними сущностей в xsl подключается нормально (если его удалить выдвает ошибку), В xml до трансформации они отображаються правельно, ошибок не выводится
голову уже сломала, никак не пойму чего нехватает... |