ボルボックス


すべてをすばやくムダなく
volvox

第08話:いちばん汎用的なテンプレートって? (万能のXSL)

XSLが最強のテンプレート?
XSLは、頁/段/文/語といった、文書のあらゆるレベルでテンプレートをつくることができる。じっさいそういったテンプレートを適用するバックエンドの文書は、たとえば次のようになる:
テキスト(XML):
<head/>
<article>
  <date>...</date>
  <title>...</title>
  <comment><p>...<x>...</x>...</p></comment>
</article>
<foot/>
頁のレベル:ヘッダ(head)、フッタ(foot)、記事(article )
記事レベル:日付(date)、題名(title )、内容(comment )
文章レベル:段落(p )、強調(x )

 

え〜と、<x> タグなんてあったっけ……
これはぜんぶ独自のタグだよ。このすべてのタグに、対応するXSLのテンプレートがある(それがHTML向けのXSLテンプレートなら、たとえば<x> を <b class="..."> などに変換する)……ヘッダからワードまで、文書のすべての要素を部品化し/再利用できる。
まるで新しいマークアップの仕様だね。
そうだよ。XML/XSLを使うってことは、自分たちが使う文書のマークアップの仕様を決めていくってことだから……ウェブのコンテンツなら、サイトのすべてのデザインポリシーを独自のタグとして定義することで、そのタグを書くだけでデザインポリシーが自動的に適用される。究極の効率化だよ。
便利そうだけど大変そう……
そこまでやればね……ただ、ふつうにHTML文書に変数をうめこむような形にもできるし:
テキスト(XML):
<aisatu>...</aisatu>
スタイル(XSL):
<html>
 ...
 <body>
   ...
   <div class="aisatu">
     <xsl:value-of select="//aisatu"/>
   </div>
</html>
XMLの<aisatu>タグで囲まれた内容を、XSLの<xsl:value-of>タグを使い、HTMLに貼り付ける。
これはMTやWPでつかうテンプレートの変数と同じだね。
XSLも柔軟だから……こんなふうに1ページの1セクションだけのCMS化から、組織や業務にあった文書のカタチをつくる究極の効率化まで、すべてXSLでおこなえる……さらにXSL(XSLT)はプログラミング言語としても完全だから、入出力をのぞけば、制作者が望むあらゆることができる。