XSLT

XML関連のW3C勧告規格
異なるデータフォーマット(スキーマ)を使ったデータ間で
データ交換する場合にXSLTXMLデータの構造変換して対応

XMLはデータの論理的な構造を記述するための言語
よって、XML文書には、Webブラウザや紙面に表示する体勢を示すレイアウト情報(スタイル情報)がない。

だから、XMLデータを表示するには、以下の処理が必要になる。
 ①XMLデータの構造を、(Webブラウザ等の)フォーマッタが受け付けるオブジェクトへと、構造変換する処理
 ②(文字の大小や色等)スタイル付けする処理

①のXMLデータの構造変換を指定する部分を、独立した規格として取り出したのがXSLT
XSLTには、変数や関数、繰り返しや条件付処理等のプログラミング機能が盛り込まれおり、
複雑なデータ変換処理も対応できる。

XMLデータから以下へのデータ構造変換が可能
・XMLデータ
・HTMLデータ
・非XMLデータ(テキスト、CSV)


XSLTによる変換処理の記述は、スタイルシートと呼ばれている。
XSLTスタイルシートの記述に従い、XSLTプロセッサがXMLデータの構造変換をする

※CSS(cascading style sheet) ≠ XSLT

■基本的書き方
・XSLTスタイルシート自体はXMLタグで書く。
・XSLTの名前空間に属する要素を、XSLTの命令として使用する。

□XSLTの名前空間
 ・xsl:stylesheet
 ・xsl:template
 ・xsl:value-of
 ・xsl:apply-tempates

□XML宣言
 スタイルシートの冒頭にXML宣言を書く。
 <'?xml version="1.0" encoding="shift_jis"?>

□XSLT宣言[xsl:stylesheet]
 スタイルシート全体を囲むタグ。
 この命令で、XSLTのバージョンとXSLTの名前空間の宣言をする。
 
 <'xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
  ……
 <'/xsl:stylesheet>
 version属性でバージョン指定。
 xmlns:xsl属性で名前空間指定。

□テンプレートの指定[xsl:template]
 XMLデータの構造変換の記述とは、
  ①与えられたXMLデータのノードを変換元とするのか
  ②変換先のXMLデータに、どんなノードを生成・付加するのか
 を指定すること。
 この指定を[xsl:template]要素で表現する。
 
 <'xsl:template match=変換元を指定するパターン >
  ……変換先で生成されるXML構造のテンプレート……
 <'/xsl:template>
 ①の指定は、patterと呼ばれ、match属性で指定する。(ノードの指定はXPah文法に従う)
 ②の指定は、templateと呼ばれ、xsl:templateタグで挟まれた部分にXML構造として表現する。
 
 <'xsl:template match="paragraph" >
  <'p><'/p>
 <'/xsl:template>
 変換元のXMLデータのparagraph要素に対して、HTMLのp要素を生成する、ゆう意味。

□文字列コピー[xsl:value-of]
 文字列のコピーに[xsl:value-to]要素を使う。
 
 <'xsl:template match="paragraph" >
  <'p><'xsl:value-of select="." /><'/p>
 <'/xsl:template>
 select属性の"."は、現在の要素の文字列値、ゆう意味。
 
 <'xsl:template match="title" >
  <'h1><'xsl:value-of select="." /><'/h1>
 <'/xsl:template>
 変換元XMLデータのtitle要素出現で変換先のXMLデータのh1要素を生成・付加する、ゆう意味。

□構造のコントロール[xsl:apply-tempates]
 XMLは、要素の階層でデータが表現されている。
 テンプレートルールは、変換元のXMLデータの要素毎に個別に指定するが、
 変換先となるXMLデータ(HTMLデータ等)にも構造を持たせんといけん。
 変換先の構造を管理するのが、[xsl:apply-templates]要素。
 
 <'xsl:template match="article" >
  <'html><'xsl:apply-templates /><'/html>
 <'/xsl:template>
 article要素に対してhtml要素を生成させる。
 xsl:apply-templatesは、article要素の子要素であるtitle要素、
 paragraph要素を別の場所にあるxsl:template要素で変換先へマッピングさせた結果を
 <'html><'/html>間に埋めこと、ゆう意味。
 
□ルートノード
 match属性の値に書く"/"はルートノードを意味する。
 <'xsl:template match="/" >
  <'xsl:apply-templates />
 <'/xsl:template>

□ex
―xml―
<'?xml version="1.0" encoding="Shift_JIS" ?>
<'?xml-stylesheet href="article-view.xsl" type="text/xsl" ?>
<'article>
 <'title>XSLT INTRO<'/title>
 <'paragraph>TO UNDERSTAND XSLT<'/paragraph>
<'/article>
―xslt―
<'?xml version="1.0" encoding="shift_jis" ?>
<'xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
 <'xsl:template match="/">
  <'xsl:apply-templates/>
 <'/xsl:template>
 <'xsl:template match="article">
  <'html><'xsl:apply-templates/><'/html>
 <'/xsl:template>
 <'xsl:template match="title">
  <'h1><'xsl:value-of select="."/><'/h1>
 <'/xsl:template>
 <'xsl:template match="paragraph" >
  <'p><'xsl:value-of select="."/><'/p>
 <'/xsl:template>
<'/xsl:stylesheet>


ref:
http://www.atmarkit.co.jp/fxml/tanpatsu/10xslt/xslt01.html

tag : XSLT XML

2008-08-29 01:49 : __lang__xml : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud