『はじめてのXSLT 』小林 信次

  • 1,987 views
Uploaded on

『はじめてのXSLT 』小林 信次 …

『はじめてのXSLT 』小林 信次
2009/4/5開催SwapSkills

* XSLTとは?
* XMLをXSLTで変換してみよう!
* まとめ

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,987
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
6
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. はじめての XSLT SwapSKills 2009   vol.2 次に求められる  Web サイト制作の技術 株式会社まぼろし:小林 信次 2009.04.05 はじめての XSLT
  • 2. 自己紹介
    • 小林信次(こばやし・しんじ)
    • 株式会社まぼろし( maboroshi.biz )
    • WEB ディレクター/マークアップエンジニア
  • 3. 自己紹介 2 刷 4 刷
  • 4. 自己紹介 2/27 発売
  • 5. このセッションの流れ
    • XSLT とは ?
    • XML を XSLT で変換してみよう !
    • 参考
  • 6. 1.XSLT とは ?
    • XML としての XSLT
    • XSLT の歴史
    • XSLT の名前
    • XSLT の役割
  • 7. XML としての XSLT XSL XML etc XHTML XSL-FO XSLT XPath SVG MathML
  • 8. XSLT の歴史 1999-11-16 XSLT Version 1.0 2007-01-21 XSLT Version 2.0
  • 9. XSLT の名前
    • XSLT=XSL Transformations
    • XSL =Extensible Stylesheet Language
    •    = 拡張可能なスタイルシート言語
    • Transformation= 変換、変形
    • XSLT= 拡張可能なスタイルシートによる データ構造変換
  • 10. XSLT の役割
    • XML を「他の形式の XML 」「 HTML 」「テキスト」
    • などに変換することができる
    【例】 XML XSLT HTML XSL-FO PDF ブラウジング 印刷
  • 11. 2.XML を XSLT で変換してみよう !
    • XSLT のお決まり
    • XML と XSLT を関連付ける
    • 出力結果を指定する
    • XSLT はテンプレートのかたまり
    • DW と XSLT で、制作ページ一覧を作る
    • Amazon の WEB サービスを利用する
  • 12. XSLT のお決まり
    • <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
    • <xsl:stylesheet  
    • xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;>
    • ...
    • </xsl:stylesheet>
  • 13. XML と XSLT を関連付ける
    • <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
    • <?xml-stylesheet type=&quot;text/xsl&quot; href=“hoge.xsl&quot; ?>
    • ...
    • </xsl:stylesheet>
    XSLT までのパス application/xslt+xml application/xml
  • 14. 出力結果を指定する
    • <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
    • <xsl:stylesheet  
    • xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;>
    • <xsl:output method=&quot;html&quot; encoding=&quot;UTF-8&quot; />
    • ...
    • </xsl:stylesheet>
    【 xsl:output /属性参考】 http://msdn.microsoft.com/ja-jp/library/ms256187.aspx
    • xml
    • html
    • text
    • QNAME
  • 15. XSLT はテンプレートのかたまり
    • テンプレート = 一連のスタイル規則を定義したもの
    • <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
    • <xsl:stylesheet  
    • xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;>
    • <xsl:output method=&quot;html&quot; encoding=&quot;UTF-8&quot;>
    • <xsl:template match=&quot;/&quot;>
    • ...
    • </xsl:template>
    • </xsl:stylesheet>
    ルート要素に適用 されるテンプレート ※ このテンプレートから他のテンプレートを 呼び出したりが可能
  • 16. XSLT はテンプレートのかたまり
    • <xsl:template match=&quot;/&quot; >
    • ...
    • </xsl:template>
    • match 属性
      • テンプレートが XML 文書のどの要素に 適用されるのか
      • 上記の例「 match=“/” 」 = XML 文書のルート要素に適用される = XML 文書全体に適用
  • 17. XSLT はテンプレートのかたまり XSLT ルート要素の テンプレート テンプレート テンプレート
  • 18. 2-1. DW と XSLT で、制作ページ一覧を作る
    • 変換する XML
    • 要素・属性の内容を表示する
    • テンプレートから別のテンプレートを呼ぶ
    • 繰り返し処理
    • 属性を生成する
  • 19. 変換する XML
  • 20. 変換する XML
  • 21. 要素・属性の内容を表示する
    • 要素の内容を表示: <xsl:value-of select=“hoge&quot; />
    • 属性の内容を表示: <xsl:value-of select=“hoge/@hoge&quot; />
    現在のノード からのパス ※ XPath 式で記述 hoge 要素 の hoge 属性 hoge 要素 の内容
  • 22.
    • XML Path Language
    • マークアップ言語: XML に準拠した、 文書の特定の部分を指定する言語構文 = パスを示すルール
    XPath
  • 23. XPath XPath で利用できる主な構文の例 構文 概要 例 / 直下の子要素 a/b a 要素直下の b 要素 // すべての 子孫要素 a//b a 要素内のすべての b 要素 * すべての要素 a/* a 要素直下のすべての要素 @ 要素の属性 a/@b a 要素の b 属性
  • 24. テンプレートから別のテンプレートを呼ぶ
    • <xsl:apply-templates select=“hoge&quot; />
    現在のノード からのパス ※ XPath 式で記述
  • 25. テンプレートから別のテンプレートを呼ぶ
    • <xsl:stylesheet …>
      • <xsl:template match=&quot;/&quot;>
        • <xsl:apply-templates select=“hoge&quot; />
      • </xsl:template>
      • <xsl:template match=“hoge&quot;>
      • </xsl:template>
    • </xsl:stylesheet>
    select 属性と一致した match 属性の値を持つ テンプレートが呼び出される
  • 26.
    • さらに何重にもテンプレートを呼び出すことが可能
    テンプレートから別のテンプレートを呼ぶ ルート要素の テンプレート テンプレート テンプレート
  • 27. テンプレートから別のテンプレートを呼ぶ
    • テンプレートを
    • 入れ子にするのは
    • NG
    ルート要素の テンプレート テンプレート テンプレート
  • 28.
    • <xsl:for-each select=“hoge&quot;>
    • </xsl:for-each>
    繰り返し処理 現在のノード配下にある すべての hoge 要素を 繰り返し処理
  • 29.
    • <xsl:stylesheet …>
    • <xsl:template match=&quot;/&quot;>
    • <xsl:apply-templates select=“hoge&quot; />
    • </xsl:template>
    • <xsl:template match=“hoge&quot;>
    • <xsl:for-each select=“fuga&quot;>
    • </xsl:for-each>
    • </xsl:template>
    • </xsl:stylesheet>
    現在のノード ルート要素 ルート要素 内の hoge 要素 hoge 要素 内の fuga 要素
  • 30.
    • <a href=“<xsl:value-of select=“hoge/@fuga&quot; />”>
    属性を生成する 構文エラーに なってしまう
  • 31.
    • <a>
    • <xsl:attribute name=&quot;href&quot;>
    • <xsl:value-of select=“hoge&quot; />
    • </xsl:attribute>
    • <xsl:value-of select=“fuga&quot; />
    • </a>
    属性を生成する href 属性を 生成し、 href 属性の値に、 hoge 要素の 内容を指定 a 要素の内容に、 fuga 要素の 内容を指定
  • 32. 2-2. AMAZON の WEB サービスを利用する
    • 変換する XML
    • 連番を追加する
    • XSLT のソート機能
    • 条件によって表示を変える
    • 平均値を求める 85
  • 33.
    • ■ アマゾンへのリクエスト例
    • http://ecs.amazonaws.jp/onca/
    • xml?Service=AWSECommerceService
    • &AWSAccessKeyId=1JCQ41ZTFKEWXT0FZ602
    • &AssociateTag=skoba-22
    • &Operation=ItemSearch
    • &SearchIndex=Books
    • &Keywords=xhtml
    • &Sort=salesrank
    • &ResponseGroup=ItemAttributes,Images
    変換する XML
  • 34.
    • <ItemSearchResponse>
    • <Items>
    • <Request>
    • <ItemSearchRequest>
    • <Keywords>
    • <Item>
    • <DetailPageURL>
    • <MediumImage>
    • <URL>
    • <Height>
    • <Width>
    • <ItemAttributes>
    • <Author>
    • <Creator Role=“hoge&quot;>
    • <ListPrice>
    • <Amount>
    • <NumberOfPages>
    • <Publisher>
    • <Title>
    変換する XML
  • 35.
    • <xsl:number format=&quot;01&quot; />
    連番を追加する 番号の 表示形式 その他も もろもろ [ 割愛 ] format 属性指定 番号の表示形式 format=&quot;1&quot; 1 2 3 ..... 10 11 12 ..... format=&quot;A&quot; A B C ..... Z AA AB AC ..... format=&quot;a&quot; a b c ..... z aa ab ac ..... format=&quot;i&quot; i ii iii iv v vi ..... format=&quot;I&quot; I II III IV V VI ..... format=&quot; あ &quot; あ い う え お か ..... format=&quot; ア &quot; ア イ ウ エ オ カ ..... format=&quot; 一 &quot; 一 二 三 四 五 六 ..... format=&quot; 壱 &quot; 壱 弐 参 四 五 六 .....
  • 36.
    • <xsl:sort
    • select=“hoge“
    • data-type=“hoge“
    • order=“hoge&quot; />
    XSLT のソート機能 ソートする対象 の要素を指定 データ型 text/number の 2 種類 昇順 [ascending] 降順 [descending]
  • 37.
    • <xsl:if test=“ 条件式” >
    • 内容
    • </xsl:if>
    条件によって表示を変える <xsl:choose> <xsl:when test=“ 条件式 A”> 内容 A </xsl:when> <xsl:otherwise> 内容 B </xsl:otherwise> </xsl:choose> 条件式が true のときに内容を表示 条件式 A が true の ときに内容 A を表示 それ以外のときに 内容 B を表示 xsl:when は複数指定可能
  • 38.
    • 条件式の例
    • price[number(.) &lt;= 3000]
    条件によって表示を変える [] -> フィルタパターン ※ 中に比較式や論理式 を記述可能
  • 39.
    • フィルタパターンの構文
    • price[number(.) &lt;= 3000]
    条件によって表示を変える 要素 比較の対象 演算子 【比較式/論理式参考】 http://msdn.microsoft.com/ja-jp/library/ ms256081(VS.80).aspx
  • 40.
    • <xsl:value-of
    • select=“sum(hoge/fuga) div count(hoge/fuga)” />
    平均値を求める hoge 要素内の fuga 要素の合計 【さまざまな XPath 関数参考】 http://msdn.microsoft.com/ja-jp/library/ ms256138(VS.80).aspx 割り算 hoge 要素内の fuga 要素の数
  • 41. 3. 参考
    • wikipedia http://ja.wikipedia.org/wiki/XSL_Transformations
    • MSDN ライブラリ http://msdn.microsoft.com/ja-jp/library/default.aspx
    • XML 関係アーカイブ | Takazudo Clipping* http://gyauza.egoism.jp/clip/archives/xml/
  • 42. はじめての XSLT ありがとうございました [email_address]