最強かもしれないテンプレート言語『XSLT』で XML を再発見しよう

  1. XSLT の概要 (What)
  2. XSLT の書き方 (How)
  3. XSLT の動作環境 (Where)
  4. XSLT の意義 (Why)
  5. XSLT は誰がために (Who)
  6. ToDo
© i / orzccc 2008-03-22

XSLT の概要 (What)

  1. 名称
  2. 形式
  3. 歴史
  4. 比較

名称

"XSL (Extensible Stylesheet Language) Transformation"
拡張可能スタイルシートによるデータ構造変換規則

形式

歴史

Microsoft社、Inso社、ArborText社の3社を中心に提案された

W3C 勧告
1999-11-16 XSLT Version 1.0
2007-01-21 XSLT Version 2.0

比較

XML
適切なデータ表現
  • 要素
  • 属性
  • 名前空間
XSLT
データ構造変換
  1. インプット
    • XML
  2. XSLT プロセス
  3. アウトプット
    • Text
CSS
文書の視覚/聴覚表現
  • color
  • volume
  • etc.
JavaScript
文書の動作
  • Time
  • Event
  • DOM
  • etc.

XSLT の書き方 (How)

  1. テンプレート集合
  2. XPath
  3. XML 名前空間
  4. 簡易コーディング
  5. 拡張関数

テンプレート集合

  1. ドキュメントルートのテンプレートにマッチ
    <xsl:template match="/">
  2. 内容の生成
    <xsl:variable name="example" select="..."/>
    <xsl:if test="$example = 'foo'"> ... </xsl:if>
    <foaf:interest dc:resource="{document('http://...')//foo[@bar='baz']}"/>
  3. 他のテンプレートを呼ぶ
    <xsl:apply-templates select="child::node()">
    <xsl:call-template name="local-navi">
  4. 2~3 の繰り返し

XPath

XML Path Language

XML の各ノードへのアクセス・取得

/html/body//li[substring-length(text()) = 40]
XPath + DOM
小規模ノード操作
XPath + XSLT
小~大規模ノード操作

XML 名前空間

語彙集合の区別

<xsl:stylesheet
  xmlns:foaf="http://xmlns.com/foaf/0.1/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:my="http://example.com/">
  ...

  <foaf:interest/>
  <my:interest/>
YAML
単純なデータ表現
単一アプリケーション専用
XML
複雑なデータ表現
複数アプリケーション兼用

簡易コーディング

NiceXSL

stylesheet version="1.0" {
  match (/) {
    if (...) {
      <example/>
    }

<xsl:stylesheet version="1.0">
  <xsl:template match="/">
    <xsl:if test="...">
      <example/>
    </xsl:if>

拡張関数

例: ruby-xslt

require "xml/xslt"

class XML::XSLT
  def do_this( arg )
    ...
  end
end

xsltp = XML::XSLT.new()
xsltp.xsl = "example.xsl"
xsltp.xml = "example.xml"
XML::XSLT.extFunction("do_this", "http://example.com/ns", xsltp)

print xsltp.serve

XSLT の動作環境 (Where)

  1. クライアントサイドで手早く
  2. サーバーサイドで腰を据えて

クライアントサイドで手早く

ウェブブラウザ搭載の処理系を利用

PI で
							<?xml-stylesheet href="example.xsl" type="text/xsl"?>
						
W3C DOM Level 3 XSLTProcessor を JavaScript で
var xsltp = new XSLTProcessor();
xsltp.importStylesheet("example.xsl");
...
対応ブラウザ状況
User Agent Processor XSLT
Internet Explorer 6.x MSXSL 1.0 (部分実装) エラーメッセージが他より分かりやすい
Firefox 2.x TransforMiix 1.0 (部分実装) 出力後のソースコードを見れる
Netscape 7.x
Safari 1.3 ? 1.0 (部分実装) ?
Opera 9.x ? 1.0 (部分実装) text/xsl じゃないと読まない

サーバーサイドで腰を据えて

処理系一覧
Processor XSLT Version
libxslt 1.0
Xalan 1.0
Sablotron 1.0
... 1.0
Saxon (Java) 2.0
AltovaXML (Java) 2.0

XSLT の意義 (Why)

XSLT は誰がために (Who)

ToDo

  1. 自己紹介
  2. 会社紹介
  3. 質疑応答

自己紹介

ハンドル
i
アイ
ID 名
orzccc
誕生年
1984
年齢
23
肩書き
XSLT プログラマ
ウェブデベロッパー・マーケター
キッス合同会社代表社員
See also
http://orz.cc/
http://mixiID.jp/9740
http://twitter.com/orzccc
http://xiss.g.hatena.ne.jp/orzccc/

会社紹介

社名
Xiss, LLC
キッス合同会社
沿革
Date Event
2006-01-01 創立
2007-07-23 設立
2007-07-24 夏季合宿
2007-09-15 『Mozilla 24』のプログラムコーディネート
2007-09-17 開発が頓挫
2008-03-01 開発の再開
2008-04-01 第一弾ウェブサービスリリース!
See also
http://xiss.jp/

質疑応答

ご清聴ありがとうございました

俺だけど、何か訊きたいことある?

Shibuya.xsl 発足しませんか?