tohokuaikiのチラシの裏

技術的ネタとか。

XSLTの疑問とその回答(1)

XSLについて色々と習ったことを一覧で。

applly-templatesでテンプレートが競合する場合

  1. テンプレートの適用には、優先順位がある。
  2. 優先順位が最終的に決められないとエラーになる。
  3. 優先順位は、テンプレートの記述順ではない
  4. 優先順位を決めるには、より厳しい条件だった場合にはそれになる。
  5. modeを使うのもあり。
  6. xsl:templateには、priority属性もありそれが優先順位

DITA-DTDによるclass属性の指定

DITAの場合は、DTDによりその要素が何を継承しているかという情報がclass属性に追加される。
例えば、taskbodyの場合は、class属性に

  • topic/body task/taskbody

が付いている。これを利用してDITAの要素をカテゴライズすることができる。

exclude-result-prefixes付けているのにネームスペースが出てしまう

このオプションは、「使われていないネームスペース」を出力するのをOFFにするだけで、実際に使われている接頭辞があった場合にはそれのみは出力される。

宣言されたタグ内の子要素では、再度宣言する必要が無いので省略できる。したがって、ルートに全ネームスペースを宣言することでひとつのXMLにおいてネームスペースを省略できる。

importした際のXSLのバージョン違いについて

基本的にはXSLはそのファイルごとでバージョンが決まるのでimportする先・する元のバージョンが違っていても問題ない(はず)。

DITA-OTのXSLについて

DITA-OTはその中からXSLだけ1枚を抜き出して使うとかはあまりしないそうだ。
DITA-OTはDITA-OT全部として専用のコマンドラインから使うとかする。

XSLを抜き出す場合は、そのパーツ部分とかになる・・・・かも。