php‎ > ‎

phpからxmlに出力したタグをxslでHTMLとして認識させる方法

これは、悩みました。データベースにはXHTMLが保存されていて、PHPでデータを読み込んでXMLに出力する。XMLに出力したあと、ブラウザからXSLでスタイルを適用しようとした際にタグ部分が無視されたり、エラーで表示されなかったり。。。

正しく表示させるには以下の通り。

XMLの内容
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="page.xsl"?>
<data>
    <contents>
        <h1>タグのテスト</h1>
        <p>今日の天気は快晴でした。</p>
    </contents>
</data>

XSLの内容
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="UTF-8"/>
        <xsl:template match="data">
            <xsl:value-of select="contents" disable-output-escaping="yes" />
</xsl:template>
</xsl:stylesheet>

赤字の属性を指定するのがポイントです。

Comments