スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[--/--/-- --:--] | スポンサー広告 | page top
XMLマスタープロフェッショナル アプリケーション #XSLT4
XMLマスタープロフェッショナル アプリケーションのXSLTまとめ4回目。

変数とパラメータ
xsl:variable
・値に変数をバインドする
・どこに書いてもよい

xsl:param
・受け渡されるパラメータにデフォルト値を設定する
・トップレベル、xsl:templateの最初の子要素

共通
$変数名で参照する
・select属性にて、XPathで値を取得する
・トップレベルの場合、xsl:importの後であればどこに書いてもよい
・自分自身を参照できない

グローバル変数
・トップレベル要素で宣言された変数
・スタイルシート全体が有効範囲
・インポート、インクルードしたファイルのトップレベル要素の変数もグローバルになる
・変数名が同じ場合、優先順位の高いファイルが有効
・同じ優先順位でダブりがあるとエラー

ローカル変数
・テンプレート内で宣言された変数
・変数宣言された位置より後の兄弟ノード、または子ノードが有効範囲

名前の重複
・グローバル変数と同じ変数名をテンプレート内のローカル変数につけてもエラーにはならない。
・ローカル変数の有効範囲内の場合、ローカル変数が有効
・混乱するしバグの素なので、絶対に止めた方がよいでしょう

パラメータの受け渡し
xsl:with-paramでテンプレートに値を渡す

テーマ:IT資格 - ジャンル:コンピュータ

[2012/11/03 22:58] | XML | トラックバック(0) | コメント(0) | page top
XMLマスタープロフェッショナル アプリケーション #XSLT3
XSLTのまとめ3回目です。
今日は、他xslファイルとの結合についてまとめました。

1.xsl:includeによる結合
・他のxslファイルをインクルードする
(xsl:includeのあるところに別ファイルの内容がコピー&ペーストされることと同じ)
・トップレベルに書く
・テンプレートルールが競合した場合、インクルードする側とされる側で優先順位はない
・自分自身を参照した場合は、エラーになる

2.xsl:importによる結合
・xsl:stylesheetの他の子ノードより先に書かれなけいけない
・テンプレートルールが競合した場合の優先順位
 ①インポートしたファイル > インポートされたファイル
 ②後に記述されたxsl:import > 前に記述されたxsl:import
・ネストも可能
・自分自身が間接的にでも参照された場合は、エラー

3.xsl:includeとxsl:import
・先に読まれる(xsl:include)、後に読まれる(xsl:import)
・テンプレートルールが競合した場合、xsl:include > xsl:import
 (xsl:includeはコピペと同じ。xsl:importはインポートした方が優先だから?)

4.xsl:apply-imports
・テンプレートルールの競合により、使われなかったxsl:importのテンプレートルールの結果を出力する
・xsl:for-each内には記述できない

テーマ:IT資格 - ジャンル:コンピュータ

[2012/10/22 12:03] | XML | トラックバック(0) | コメント(0) | page top
XMLマスタープロフェッショナル アプリケーション #XSLT2
XSLTのまとめ2回目です。

テンプレートルール
・変換のルール
・パターン(適用するノード)とテンプレート(変換規則)

<xsl:template match="パターン(XPath)">
  テンプレート
</xsl:template>

or(xsl:call-templateで呼ばれる場合)
<xsl:template name="テンプレート名">
  テンプレート
</xsl:template>

パターンで使用する時のXPath注意点
通常のXPathと以下の点が異なる
・"child::"と"attribute::"(省略の@も可)しかaxisが使えない
・"."と".."が使えない

xsl:apply-templates
・テンプレートルールを適用する
・適用するノード(ノードリスト)は、select属性(XPath)で指定。
・select属性が省略された場合、カレントノードのすべての子ノードに適用される
・適用すべきテンプレートルールが見つからない場合は、組み込みのテンプレートルールが適用される
・テンプレートが処理されるときにカレントノードが移動する(select属性でマッチしたノードになる)

xsl:call-template
・名前付きのテンプレートルールを呼び出す
・テンプレートルールが処理されるときでも、カレントノードは変わらない(呼び出し元のまま)

組み込みテンプレートルール
・xsl:apply-templatesのselect属性のノードに対するテンプレートルールがない時に、自動適用される
・ルート/要素の場合、子ノードが再処理される
・属性/テキストの場合、valueが出力される

テーマ:IT資格 - ジャンル:コンピュータ

[2012/10/20 23:06] | XML | トラックバック(0) | コメント(0) | page top
XMLマスタープロフェッショナル アプリケーション #XSLT
XSLTのまとめです。

XSLTスタイルシート
・XSLTの変換処理を書いたファイル
・XML → XSLTスタイルシート適用 → 出力ファイル(XML、HTMLなど)

XPath基本
・ノードの位置を指定する仕様
・1命令で任意のノードへアクセスできる
・「{タグ名/タグ名}」のフォーマットで指定する
・属性を取得したい場合は、「{タグ名/@属性名}」を指定する
・XPath式に{と}を入れたい場合には、"{{"、"}}"を使う

名前空間の処理
・名前空間がある場合、名前空間を付けて指定する
・元XMLに名前空間がある場合、出力結果のXMLに元XMLの名前空間が追加される場合がある
 (XSLTプロセッサに依存)
 その場合、XSLTスタイルシートのルートにexclude-result-prefix属性
 (属性値を削除したい名前空間の接頭辞)を使用する
 例)元XML
   <ns: sample xmlns:ns="urn:nssample">
    <ns:content>テキスト</ns:content>
   </ns: sample>

   XSLTスタイルシート
   <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sa="urn:nssample">
    <xsl:template match="/">
     <output><xsl:apply-templates select="sa:sample/sa:content" /><output>
    </xsl:template>
   </xsl:stylesheet >

   出力結果のXML
   <output xmlns:sa="urn:nssample">テキスト</output>


テーマ:IT資格 - ジャンル:コンピュータ

[2012/10/14 23:21] | XML | トラックバック(0) | コメント(0) | page top
XMLマスタープロフェッショナル アプリケーション #SAX3
SAX編のまとめ3回目です。SAXは今回で終了です。

エラーイベントプログラミング
・SAXでエラーイベントを拾うことができる
・ErrorHandlerインターフェースが提供されている
・ErrorHandlerを実装したクラスを作成する
・上記のインスタンスをXMLReaderへ登録する(setErrorHandlerメソッド)

LexicalHandler
・コメント、CDATAセクション、実体参照、文書型宣言のイベントを拾うためのインターフェース
・XMLReaderへ登録する(setPropertyメソッドを使う)
・CDATA、実体参照、のテキストを取得することはできない(ContentHandlerのcharactersイベントを使う)
・コメント以外は、開始と終了のイベントを受け取るだけ?(存在する意味は?)

DefaultHandlerクラス
・DefaultHandlerクラスにあらかじめよく使うインターフェースが実装されている
 ContentHandler
 DTDHandler
 ErrorHandler
 EntityResolver
・DefaultHandlerクラスを継承したクラスを開発する(必要なメソッドだけを実装)

テーマ:IT資格 - ジャンル:コンピュータ

[2012/10/13 22:11] | XML | トラックバック(0) | コメント(0) | page top
<<前のページ | ホーム | 次のページ>>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。