TEI ODDの「チェーン」機能を使ってスキーマをカスタマイズする方法を学ぶチュートリアルです。

ODD Chainとは

ODD chainには2つの方式があります:

1. 継承型(縦のチェーン)

source属性で親ODDを参照し、カスタマイズを継承します。

TEI_allODDODD...

2. 組み合わせ型(横のチェーン)

specGrpspecGrpRefを使って、複数のODDを統合します。

ODODDD

フォルダ構成

tutor00obRi12uuEa--tiAlicplDsnbdhhtmmubbddccidM/haeaeeaetaaeeoon.Eesriaxir/ssrrmmts.reindtngeeiibbehmi.v/e-.e..vviirbdccdtoerso-rheennmaeooadd-pdsntddeeesrmmnd.sedpgm..dddeibbcopcelrh..i.viiedescntrhacenn/dc.sgmnttodeeso.lgmem.dd.dxl/pc..odsiomcdllmeodeprm#####digp##.leiboedladd.es###########d.odeod..s000ddoop112ddOdedDdcHHHDGTTTrMOMOMOpOLDLDLDRDDDDeDfODDXSLT

前提条件

  • Saxon(XSLT 2.0プロセッサ)
  • TEI Stylesheets(../scripts/Stylesheetsにインストール済み)

ビルド方法

cd/btuuitlodr.isahls

生成されるファイル

ソースODDRNGHTML
01-inheritance/base.oddoutput/base.rngoutput/base.html
01-inheritance/derived.oddoutput/derived.rngoutput/derived.html
02-chain/main.odd(統合後)output/combined.rngoutput/combined.html

各ファイルの説明

01-inheritance(継承型)

base.odd

ベースとなるODD。最小限のモジュールと基本的なカスタマイズを含む。

<s/c<<<<<shmmmm!ceoooo-hmdddd-eauuuumSllllapeeeeSeRRRRpceeeeeffffci>dkkkkeeeeenyyyyt====="""""thctbeeoeaiarxs"dete/e"sS>r/tc">rh/ue>cmtau"res"t/a>rt="TEI"source="tei:4.7.0">

derived.odd

TEI標準を継承し、追加のカスタマイズを行う派生ODD。

<<!s/-c<<<<s-h!e!e/ce-l-l<ehsm-e-ea/leoammt<aemuSmemeta/tmarpononLtateScedtdtitvtLnpeceSeSsDavtite=p=ptelvvaDsSci"e"e>fLaaletp>ddcccillLf>eTeehisIIi>cEnliaidttts>Itedndeeet=tegentmm>"enentyd"t"t=piie=="eddr""r=eeinpe"nnvo"ncttetdl==dem"o""S"osiccdmenehmeoddneo=d"etmd"e>neaec=tr"=h""""ac//sdnh>>tegaalenre"gtt>e=e""">T/E>I"source="tei:4.7.0">

02-chain(組み合わせ型)

header-specs.odd

ヘッダー関連のカスタマイズをspecGrpで定義。

<s/p<see/pcl<eeGe!lcrm-eGpe-mrnepxtn>mStlpS:epicedc=i>"dheenatd=e"rt-ictulsetSotmmitz"atmioodnes="">change">

text-specs.odd

本文関連のカスタマイズをspecGrpで定義。

<s/p<see/pcl<eeGe!lcrm-eGpe-mrnepxtn>mStlpS:epicedc=i>"dteenxtt=-"cpu"stmoomdiez=a"tcihoannsg"e>">

main.odd

複数のODDをspecGrpRefで参照して統合。

<s/c<<<<<<<shmmmm!ssceoooo-pphmdddd-eeeauuuuccmSllllGGapeeeerrSeRRRROpppceeeeDRReffffDeeciff>dkkkkseeeeepttnyyyyeaat====crr=""""Ggg"thctreeceeoepttoiarx==m"det""b/e"shti>r/teen">raxe/udtd>ce-Strscu-phrseeepcm"esa/c.">so.dsodtd#adtr#ethx=et"a-TdcEeuIrs"-tcosumosiutzroacmteii=zo"anttsei"io/:n>4s."7/.>0">

処理の流れ

継承型

bidianenstrteeie.rvromemdoedoeddd.dddiooodioo2addd2addotdddotddde22de22drh(drh.bets.detxalmoxelmssalusrallex.rlix...xcv.x(cxse(exsosl=dslml".lptcieolim)ebb:pdddaa4iee.ss.lrroee7eiid...dvvdrh0).eent"oddgm)d..ldrhntgml

組み合わせ型

ODODDD

0

使用しているXSLT

XSLT場所役割
odd2odd.xslStylesheets/odds/ODDのコンパイル(モジュール展開、継承解決)
odd2relax.xslStylesheets/odds/RelaxNGスキーマ生成
odd2html.xslStylesheets/odds/HTMLドキュメント生成
merge-specs.xsl02-chain/specGrpRef展開(自作)

参考