Webプログラミング演習

Similar documents
XMLとXSLT

スライド 1

XSLT XSLT xsd XSLT XML xsd XPath <xsl:template ]

PowerPoint プレゼンテーション

xslt #xslt

1. スキーマを作成する チュートリアル : 簡単な日記帳を作る 最初のステップとして 簡単な日記帳を作ってみましょう 件名 と 本文 があるだけの簡単なものです 1. スキーマを作成する では まず 日記帳 のスキーマを定義します スキーマは XML ファイル として作成します コラム :XML

Web2.0 REST API + XSLT Amazon hon.jp API XML Consortium XML ( ) REST(GET)API hon.jp Amazon.co.jp Google Map Exif to RDF(kanzaki.com) REST +

WEBシステムのセキュリティ技術

Microsoft PowerPoint - css-3days.ppt [互換モード]

合宿事前講座 Web 開発の基本編その 2 情報研究会モブ 薗田海樹 The. H.30 情報研究会 1

JavaScript カスタマイズ入門 kintone university アプリデザイナープラス JavaScript カスタマイズ入門編演習問題回答 演習問題 第 2 章サンプルで試そう 1 cybozu.com developer network の サンプルで試そう ( 以下 サンプル と

CSS


PostgreSQL の XML 機能解説と将来拡張への提言

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

XSLの活用と技術内容の紹介

本日のテーマ Formatter って何? Formatter や XSL-FO 関連の話 DITA Open Toolkit って何? DITA OT がやってくれることカスタマイズの話 Formatter って何? Formatter は XSL-FO のレンダリングエンジンです XSL-FO

目次 1. 概要 2. サーバーへの設置 3. 設定 4. ユーザーアクセス記録の収集 5. 利用規定 6. 更新履歴

スタイルシートでデザインを整えよう

4. WIX アタッチエンジン 4. 1 FSDR 処理 システムの Web 資源結合動作であるアタッチ処理について 述べる. アタッチ処理は以下の 4 フェーズに分けられる. この一連の 流れを FSDR 処理とする. Find 処理 Select 処理 Decide 処理 Rewrite 処理

Lotus Domino XML活用の基礎!

Microsoft PowerPoint - CSS(Cascading Style Sheets)の基本.pptx

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

untitled

Si 知識情報処理

intra-mart Accel Collaboration — ファイルライブラリ 管理者操作ガイド   第6版  

■サイトを定義する

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

Shareresearchオンラインマニュアル

ITdumpsFree Get free valid exam dumps and pass your exam test with confidence

XMLプログラミング(DOM編)

intra-mart Accel Collaboration — アンケート 管理者操作ガイド   第2版  

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

CMS Designerインストール手順

XISによる効率良いシステム開発のポイント

Web のクライアントサーバモデル

ホームページ公開方法

競技課題|ホームページ

SmartBrowser_document_build30_update.pptx

Microsoft Word - CBSNet-It連携ガイドver8.2.doc

6 2 1

山梨県ホームページ作成ガイドライン

ウェブデザイン技能検定 1 級実技 平成 28 年度 第 4 回 ウェブデザイン技能検定 1 級 実技試験概要 試験にあたっての注意事項 試験者は本試験の留意事項 注意事項に留意して作業を行うこと ペーパー実技試験は 課題 1 から 5 までの 5 課題を 60 分間で行うこと 作業実技試験は 課題

コンテンツメディアプログラミング実習2

JavaScript 演習 2 1

pdf

Another HTML-lint 導入マニュアル(JSP)版

PowerPoint Presentation

変更履歴 版数変更日変更内容 /9/1 初版設定

IBM Business Process Manager CSS による Coach レイアウト制御ガイド WebSphere 2014 IBM Corporation

フォルダ構成例 (BIB-J) は必須ファイル は任意ファイル ( 電子付録等をアップロードする際に作成する ) 資料コード巻号記事識別子 XML ファイル { 記事識別子 }.xml { 記事識別子 }_{ 連番 }.{ 拡張子 } { 記事識別子 }.txt { 記事識別子 }_{ 連番 ].{

Transcription:

Web プログラミング演習 STEP11 XSLT を使った画面生成

XML:Extensible Markup Language コンピュータが扱うデータや文書を表現する技術 SGML(Standard Generalized Markup Language) の改良 利用者が自由に拡張可能なマークアップ言語を設計 HTML=SGML を利用して作成された Web ページ記述言語 XHTML=XML を利用して作成された Web ページ記述言語 開始タグ (< タグ名 >) と終了タグ (</ タグ名 >) で要素を挟む ( マークアップする ) ことで, 要素の意味を表す 使用するタグは利用者が自由に決めることができる タグの入れ子構造で木構造 ( 全体部分 親子などの関係 ) を表現

blog のエントリーを表現する XML <?xml version="1.0" encoding="utf-8"?> <entrylist> <entry id="10"> <date>2013.12.10 10:50</date> <title>step10:ajaxを利用したrssフィードの表示 </title> <category> 授業資料 </category> <body>ajaxを利用して,rssフィードの最新エントリをhtmlに埋め込む </body> </entry>...(entryの繰り返し)... </entrylist>

XML データ ( 文書 ) を構成する要素 entrylist entry entry entry... id date title category body............

XML 文書のスタイリング ( 表現の変換 ) 目的に応じて集められた XML 情報を利用者の用途 状況にあわせて適切にスタイリングする 表現 A ( ブラウザ ) 目的 情報情報情報情報情報 XML 文書 適切な表現への変換 用途 状況 One Source Multi Use 表現 C ( 印刷 ) 表現 B ( ブラウザ )

XSL (Extensible Stylesheet Language) XML 文書のためのスタイルシート言語 三つの技術から構成 XPath : XML 文書内の特定要素を識別 XSLT : XSL Transformations. 文書要素の置き換え規則 XSL-FO : 組み版指定 ( 印刷目的の表現 ) この演習では,XSLT( とXPath) を使って,XMLを HTMLに変換する XSLT XML HTML プロセッサ

XSLT の記述 テンプレート集合 XML 文書の特定パターン (XPath で指定 ) に対して, 表現の変換規則を適用する CSS と似た考え方 =HTML の特定パターン ( セレクタで指定 ) に対して, スタイリング規則を適用する XML 整形式 開始タグ 終了タグによる完全な入れ子構造

XPath / ドキュメントルート entrylist /entrylist/entry 全 entry ノードの集合 entry entry entry... title @id カレントノードの子要素の title カレントノードの id 属性 id date title category body............ / で始まる場合はドキュメントルートからの絶対パスそうでない場合はカレントノード ( 現在着目しているノード ) からの相対パス

XSLT のサンプル <?xml version="1.0" encoding="utf-8"?> UTF-8で記述されたXML 文書であることの宣言 <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="html" encoding="utf-8"/> 出力の書式と文字コード指定 <xsl:template match="/"> <html> <body> <xsl:apply-templates select="entrylist/entry"/> </body> </html> </xsl:template> <xsl:template match="entry"> <li> <xsl:value-of select="title"/> </li> </xsl:template> title 要素の値を出力する 対象要素を選択してテンプレートを適用する 処理対象の XML 文書全体に対して適用するテンプレート entry 要素に対して適用するテンプレート スタイルシートの範囲 </xsl:transform> ( ソースコード )

演習 % cd myblog 前ページのサンプル XSLT ファイルを作成し, 実行せよ ファイル名は index.xsl XSLT ファイルの適用実行 % /usr/bin/xsltproc index.xsl mng/entries.xml... (html でタイトルリストが出力されれば OK)...

演習 ( つづき ) index.xsl をブラウザから実行するための CGI を作成 ファイル名は indexxsl.cgi #!/usr/bin/perl use CGI qw(:standard); print header(-type=>"text/html; charset=utf-8"); system("/usr/bin/xsltproc index.xsl mng/entries.xml"); 実行許可を与える % chmod +x indexxsl.cgi デプロイ後, ブラウザからアクセス http://webdesign.center.wakayama-u.ac.jp/~ ユーザ ID/myblog/indexxsl.cgi

Blog トップページ用 XSLT の作成 index.xsl を改良する 文書全体に適用されるテンプレート <xsl:template match="/"> <html> <body> この部分にエントリーごとの処理以前の XHTML <xsl:apply-templates select="entrylist/entry"/> </body> </html> この部分にエントリーごとの処理以後の XHTML </xsl:template>

Blog トップページ用 XSLT の作成 ( つづき ) エントリーごとに適用されるテンプレート <xsl:template match="entry"> <div class="entry"> <h3><xsl:value-of select="date"/></h3> date 要素の値を出力 <h4> <a href="entry.php?id={@id}"><xsl:value-of select="title"/></a></h4> <div class="body"> <xsl:value-of select="body"/> </div> </div> </xsl:template> id 属性の値に置き換わる body 要素の値を出力 title 要素の値を出力 ( ソースコード )

XSLT のライブラリ化 汎用性の高いテンプレートを ファイルに記述しておく XSLTから外部ファイルをimportし そのファイルに記述されているテンプレートを使う import XSLT ライブラリ XML XSLT プロセッサ 利用 HTML

カレンダーライブラリ ファイル名は calendar.xsl 内容は下のリンクをクリック ライブラリに含まれているテンプレート <xsl:template name="calendar"> <xsl:template name="mymonth"> <xsl:template name="myweek"> calendar 利用 mymonth 利用 myweek ( ソースコード )

カレンダーライブラリの利用 index.xsl を変更 <?xml version="1.0" encoding="utf-8"?> <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:import href="calendar.xsl"/> ライブラリの読み込み <xsl:output method="html" encoding="utf-8"/>... <div class="calendar"> <xsl:call-template name="calendar"> <xsl:with-param name="year" select="'2015'"/> ライブラリテンプレート <xsl:with-param name="month" select="'1'"/> (calendar) の呼び出し </xsl:call-template> パラメータは年月 </div>...

参考 Web ページ サンプルで覚える XSLT プログラミング http://www.atmarkit.co.jp/fxml/tanpatsu/xslt/xslt00.html XSLT1.0 仕様書 ( 日本語訳 ) http://www.infoteria.com/jp/contents/xml-data/rec-xslt-19991116-jpn.htm

おまけ 1 エントリ本文で html タグを使う方法 index.xsl に以下の変更を適用 <xsl:value-of select="body"/> <xsl:copy-of select="body/* body/text()"/> indexxsl.cgi の最終行を以下に変更 system("/usr/bin/xsltproc index.xsl mng/entries.xml sed 's/ </</g;s/ >/>/g'"); index.php, entry.phpに以下の変更を適用 $body = mb_convert_encoding($entry->body, "utf-8", "auto"); $body = mb_convert_encoding($entry->body->asxml(), "utf-8", "auto");

おまけ 2 アクセスログ, エラーログの確認 https://webdesign.center.wakayama-u.ac.jp/log/access.cgi https://webdesign.center.wakayama-u.ac.jp/log/error.cgi セキュリティの警告を無視してアクセスすると, 本人の最近 20 行分のアクセスログ / エラーログが出力される

次回の予定 トラックバック機能の実装