AmadMike
Новичок
Трансформация XSLT в PHP, неправильно выводит пустые тэги
Добрый день.
Привожу простой пример.
Есть xml-файл (example.xml):
xsl-файл (example.xsl):
Файл example.php:
На выходе получаем следующее:
Вопрос: как заставить php выводить нормальный, закрывающийся тэг <br /> вместо <br> (причем для тэга meta он все-таки выводит закрывающийся тэг, но отдельно). Можно ли сделать так чтобы для каждого элемента не выводился пустой xmlns=""?
-~{}~ 13.11.06 22:04:
Ну с первой частью вопроса разобрался. Надо просто $out -> saveXML(); делать (причем значение output method="html" или "xml" здесь не имеют разницы, а для transformToXML как раз этим определятся).
Но не понял как заставить php не выводить пустые xmlns.
Добрый день.
Привожу простой пример.
Есть xml-файл (example.xml):
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<mobile>
<brand value="Nokia">
<model value="8800">
<bandwidth>GSM 900/1800/1900</bandwidth>
<color>Silver</color>
</model>
</brand>
</mobile>
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl: output method="html" encoding="utf-8"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
<xsl:template match="mobile">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
</head>
<body>
<h1>Catalog of mobile phones</h1>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="model">
<div>
<h2>
<xsl:value-of select="./@value" />
</h2>
<b>BandWith:</b>
<xsl:text> </xsl:text>
<xsl:value-of select="bandwidth" />
<br />
<b>Color:</b>
<xsl:text> </xsl:text>
<xsl:value-of select="color" />
</div>
</xsl:template>
</xsl:stylesheet>
PHP:
$doc = new DOMDocument();
$xsl = new XSLTProcessor();
$doc->load('example.xsl');
$xsl->importStyleSheet($doc);
$doc->load('example.xml');
$out = $xsl->transformToDOC($doc); //$out нужен будет для дальнейших целей
echo $out -> saveHTML();
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
<title>Title</title></head>
<body><h1>Catalog of mobile phones</h1>
<div xmlns="">
<h2>8800</h2>
<b>BandWith:</b> GSM 900/1800/1900<br><b>Color:</b> Silver</div>
</body></html>
-~{}~ 13.11.06 22:04:
Ну с первой частью вопроса разобрался. Надо просто $out -> saveXML(); делать (причем значение output method="html" или "xml" здесь не имеют разницы, а для transformToXML как раз этим определятся).
Но не понял как заставить php не выводить пустые xmlns.
