XMLの最近のブログ記事

<%=  %> が使いたい。非推奨になっている asp_tags を On にしないと使えない。使いたいけど使えない。使ったら PHP コード込みで整形 XML として扱えなくなる。使いたくないけど使いたい。うんこがついてるのについてない AA のようなジレンマと戦う毎日です。

<%= %> と等価な Processing Instraction があれば解決しますよね。でもないなら作るしかない。とりあえず XSL Transform を利用して <?h expression?> を <?php echo htmlspecialchars(expression); ?> に変換する所まではやりました。ただ式以外の制御構文を入れようと思うと、最後に評価された式を取得する方法が必要なのですが見付からず、最悪構文解析してやるしかないのかなぁと思うと、気分はもうどうにでもな~れ。

途中まで自分がんばった!サンプル一式はこちらです。hikoten.zip(要 PHP 5.2 --with-xsl)

XML Inclusions (XInclude)を使ったテンプレートのレイアウト方法はどうでしょうかというお話。

PHP でテンプレートと言えば生の PHP でぺたっと書くか、Smarty やらといったテンプレートエンジンを利用するのが一般的だと思います。このテンプレート、デザイナさんから見ると嫌な存在ではないでしょうか?テンプレート毎に文法を覚えたり、対応したエディタを用意したり。せっかく覚えるならいろんな言語で通用する技術がいいですよね。XSLT もいいですが、ちょっとひねくれて XInclude を使っちゃいましょう。

ここでは、PHP で XInclude に触れてみたいと思います。まず、デザイナさんに一枚の XHTML を渡します。

Template.xhtml

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xi="http://www.w3.org/2001/XInclude" xml:lang="ja-JPN">
    <head>
        <!-- この部分にヘッダを書いて下さいネ。 -->
        <!-- <link rel="stylesheet" type="text/css" href="" /> -->
        <!-- <script type="text/javascript" src=""></script> -->

        <xi:include href="Page.xhtml" xpointer="xmlns(xh=http://www.w3.org/1999/xhtml) xpointer(/xh:html/xh:head/*)">
            <xi:fallback>
                <!-- この部分は実行時にページ固有のヘッダに置き換えられます。 -->
                <title>デザイン中です</title>
            </xi:fallback>
        </xi:include>
    </head>
    
    <body>
        <xi:include href="Page.xhtml" xpointer="xmlns(xh=http://www.w3.org/1999/xhtml) xpointer(/xh:html/xh:body/*)">
            <xi:fallback>
                <!-- この部分は実行時にページ固有の本本に置き換えられます。 -->
                <!-- 本本はだいたい次の XHTML となります(CSS 確認用に使って下さいネ)。 -->
                <h1>本文</h1>
                <p>どうたらこうたら</p>
                <h2>概要</h2>
                <p>どんどこどんどん</p>
                <h2>以下略</h2>
                <p>...</p>
            </xi:fallback>
        </xi:include>
    </body>
</html>

このアーカイブについて

このページには、過去に書かれたブログ記事のうちXMLカテゴリに属しているものが含まれています。

前のカテゴリはWeb サービスです。

次のカテゴリはネットワークです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

XML: 月別アーカイブ

Powered by Movable Type 4.12