|Home|仏教の部屋-Page4-|

仏教の部屋

[漢訳仏教経典]-Readme-

[漢訳仏教経典]-Readme-

作成:2007年01月23日
更新:2007年02月22日

「SAT大正新脩大藏經テキスト」から HTMLファイルを作成する手順を以下に記述します。

手順概要

1. テキストのダウンロード

「大正新脩大藏經テキストデータベース」から、ZIPファイルをダウンロードし、解凍して「****.txt」を得ます。

2.テキストを XHTML 1.1 に変換

1.で得た「****.txt」を XHTML 1.1 仕様の「****.html」に変換します。

3. 文字鏡コード書き換え

2.で作成した「****.html」中の文字鏡コードを「今昔文字鏡」GIFリンクシステムの GIF画像文字へのリンクに書き換えます(GIF画像文字をダウンロードするための準備)。

4.「今昔文字鏡 GIFリンクシステム」GIF画像文字ダウンロード

3.で作成した「****.html」をブラウザーで開き、GIF画像文字をダウンロードします。

5. GIF画像文字を分類保存

4.でダウンロードした GIF画像文字を「今昔文字鏡」GIFリンクシステムと同じ体系で参照用ディレクトリに分類保存します。

6. 文字鏡外字の画像文字ダウンロード

「大正新脩大藏經テキストデータベース」から文字鏡外字の画像文字をダウンロードします。

7. 文字鏡外字リスト作成

6.でダウンロードした HTMLファイルから文字鏡外字番号と文字鏡外字仮番号の対照リストを作成します。また、文字鏡外字仮番号がないものは、文字鏡外字番号だけのリストを作成します。

8. 文字鏡外字番号対応 PNG画像文字作成 -1-

7.で作成した文字鏡外字対照リストにもとづき、文字鏡外字仮番号.png を文字鏡外字番号.png に変換して参照用ディレクトリに保存します。

9. 文字鏡外字番号対応 PNG画像文字作成 -2-

7.で作成した文字鏡外字番号だけのリストにもとづき、外字画像(null.png) をコピーして、文字鏡外字番号.png として参照用ディレクトリに保存します。

10. 文字鏡コード、文字鏡外字コード、その他特殊コードの書き換え

2.で作成した「****.html」中の文字鏡コードと文字鏡外字コードを、参照用ディレクトリに分類保存した GIF画像文字、およびPNG画像文字へのリンクに書き換えます。

11. XMLタグを XHTML 1.1 に書き換え

「SAT進捗状況」記載の XMLタグの例にもとづき、10.で作成した「****.html」中の XMLタグを XHTML 1.1 に書き換えます。

12. XMLタグの修正

11.で変換した HTMLファイルを W3C XHTML 1.1 Validator でチェックし、不適切なタグを独自に修正しました。

戻る

1. テキストのダウンロード(詳細)

http://www.l.u-tokyo.ac.jp/~sat/japan/down.html からテキストを圧縮した ZIPファイルをダウンロードし、解凍して「****.txt」を得ます。

戻る

2. テキストを XHTML 1.1 に変換(詳細)

1.で得た「****.txt」を XHTML 1.1 仕様の「****.html」に一括変換します。

シェルスクリプト

#!/bin/sh
# script        : ~/temp/conv_html.sh
# original  file: ~/tmep/text/****.txt
# converted file: ~/temp/html/****.html
ls text |
grep -E "\.txt$" |
perl -pe "s/(.*)\.txt$/\1/" > list
echo "endend" >> list
FILE_NUM=`head -n 1 list | cat`
sed -e "1,1d" list > list_b
cat list_b > list
while [ ${FILE_NUM} != "endend" ]
  do
  nkf -e -Lu text/${FILE_NUM}.txt |
  perl -pe "s/</&lt;/g" |
  perl -pe "s/>/&gt;/g" |
  perl -pe "s/(^.)/<br \/>\1/" > middle
  cat << EOS > html/${FILE_NUM}.html
<?xml version="1.0" encoding="EUC-JP"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <meta name="Author" content="SAT" />
  <title>大正新脩大藏經 No.${FILE_NUM}</title>
  <link rel="stylesheet" href="style_dft.css" type="text/css" />
  <script type="text/javascript" src="new_win.js">
  </script>
</head>
<body class="body_plain">
<p></p>
<h1>大正新脩大藏經  No.${FILE_NUM}</h1>
<div class="green">
<strong>XHTML 1.1 Version(euc_jp) converted by Shuji Tamura  2006.xx.xx</strong>
</div>
<div>
<p></p>
EOS
  cat middle >> html/${FILE_NUM}.html
  cat << EOS >> html/${FILE_NUM}.html 
</div>
<table border="0" width="100%">
<tr><td align="center">
<a id="jp_valid"></a>
<a href="http://validator.w3.org/check?uri=referer"><img src="valid-xhtml11.gif" →
→alt="Valid XHTML 1.1" width="88px" height="31px" /></a>&nbsp;<a href="http://→
→jigsaw.w3.org/css-validator/"><img src="vcss.gif" alt="Valid CSS!" →
→width="88px" height="31px" /></a>
</td></tr>
</table>
</body>
</html>
EOS
  echo ${FILE_NUM}.html
  FILE_NUM=`head -n 1 list | cat`
  sed -e "1,1d" list > list_b
  cat list_b > list
done

[注]
「middle」がテキスト本文を XHTML 1.1 に変換した部分です。テキスト中の XMLタグはそのまま表示されるようにしています。

戻る

3. 文字鏡コード書き換え(詳細)

2.で作成した全ての「****.html」ファイルについて、文字鏡コードを「今昔文字鏡」GIFリンクシステム の GIF画像文字へのリンクに一括して書き換えます(GIF画像文字をダウンロードするため)。

文字鏡コードは「&M038655;」のように「&M」+「6桁数字」+「;」で表されています。一方、これに対応する「今昔文字鏡」GIFリンクシステムの GIF画像文字は、
「http://www.mojikyo.gr.jp/gif/038/038655.gif」です(ディレクトリ「038」は、「6桁数字」の頭 3桁に相当)。

シェルスクリプト

#!/bin/sh
# script        : ~/temp/conv_mojikyo.sh
# original  file: ~/tmep/html/****.html
# converted file: ~/temp/new_html/****.html
ls html |
grep -E "\.html$" > list
echo "endend" >> list
FILE=`head -n 1 list | cat`
sed -e "1,1d" list > list_b
cat list_b > list
while [ ${FILE} != "endend" ]
  do
  perl -pe "s/\&M([0-9]{3})([0-9]{3});/<img src=\"http:\/\/www\.mojikyo\.gr\.jp\/→
  →gif\/\1\/\1\2\.gif\" alt=\"mojikyo_font_\1\2\" width=\"24px\" height=\"24px\" →
  →\/>/g" html/${FILE} > new_html/${FILE}
  echo ${FILE}
  FILE=`head -n 1 list | cat`
  sed -e "1,1d" list > list_b
  cat list_b > list
done

戻る

4.「今昔文字鏡 GIFリンクシステム」GIF画像文字ダウンロード(詳細)

3.で作成した「****.html」をブラウザーで開き、ページを保存して GIF画像文字をダウンロードします。Mozilla 1.7.8 を使用した場合、保存先を ~/temp/ とすると ~/temp/****_files/ 配下に 「******.gif」としてダウンロードされます。

戻る

5. GIF画像文字を分類保存(詳細)

4.で保存した全ての ~/temp/****_files/ 配下の GIF画像文字を「今昔文字鏡」GIFリンクシステム と同じ体系で参照用ディレクトリに一括して分類保存します。

シェルスクリプト

#!/bin/sh
# script                 : ~/temp/group.sh
# directory of GIF image : ~/temp/****_files/
# group directory to save: ~/temp/mojikyo/***/
ls |
grep -E ".*_files$" > dir_list
echo "endend" >> dir_list
DIR=`head -n 1 dir_list | cat`
sed -e "1,1d" dir_list > dir_list_b
cat dir_list_b > dir_list
while [ ${DIR} != "endend" ]
  do
  ls ${DIR} |
  grep -E "^[0-9]{6}\.gif$" > list
  echo "endend" >> list
  head -n 1 list > gif_file
  GIF_FILE=`cat gif_file`
  sed -e "1,1d" list > list_b
  cat list_b > list
  while [ ${GIF_FILE} != "endend" ]
    do
    GROUP=`cut -c 1-3 gif_file | cat`
    GROUP_DIR=`ls mojikyo | grep -E "^"${GROUP}"$" | cat`
    if [ "${GROUP_DIR}" = "" ]
      then
      mkdir mojikyo/${GROUP}
    fi
    cp ${DIR}/${GIF_FILE} mojikyo/${GROUP}/
    head -n 1 list > gif_file
    GIF_FILE=`cat gif_file`
    sed -e "1,1d" list > list_b
    cat list_b > list
  done
  echo ${DIR}
  DIR=`head -n 1 dir_list | cat`
  sed -e "1,1d" dir_list > dir_list_b
  cat dir_list_b > dir_list
done

戻る

6. 文字鏡外字の画像文字ダウンロード(詳細)

http://www.l.u-tokyo.ac.jp/~sat/japan/tech/kari_number.html から、「kari_number.html」とリンク画像文字をダウンロードします。
(Mozilla 1.7.8 を使用した場合、保存先を ~/temp/ とすると、「kari_number.html」は ~/temp/ 配下へ、リンク画像は ~/temp/kari_number_files/ 配下へ保存されます)。

戻る

7. 文字鏡外字リスト作成(詳細)

6.でダウンロードした HTMLファイル「kari_number.html」から文字鏡外字番号と文字鏡外字仮番号の対照リスト「gaiji_list」を作成します。また、文字鏡外字仮番号がないものは、文字鏡外字番号だけのリスト「null_list」を作成します。

■「kari_number.html」の記述例
<td><img src="kari_number_files/T03n0158_p0271a14.png" →
→alt="******"><br>&amp;MT00002;</td>
<td>Now Printing...<br><br>&amp;MT00134;</td>

■「gaiji_list」の例
T00002,T03n0158_p0271a14.png
............................

■「null_list」の例
T00134
......

■「gaiji_list」を作成するシェルスクリプト

#!/bin/sh
# script   : ~/temp/gaiji_list.sh
# list file: ~/temp/gaiji_list
nkf -e -Lu kari_number.html |
grep -E ".*\.png.*" |
perl -pe "s/.*files\/(.*\.png).*\&amp;M(T[0-9]*);.*/\2,\1/" |
sort |
uniq > gaiji_list

■「null_list」を作成するシェルスクリプト

#!/bin/sh
# script    : ~/temp/null_list.sh
# maked file: ~/temp/null_list
nkf -e -Lu kari_number.html |
grep -E ".*Now Printing.*" |
perl -pe "s/.*<br><br>\&amp;M(T[0-9]*);.*/\1/" |
sort |
uniq > null_list

戻る

8. 文字鏡外字番号対応 PNG画像文字作成 -1- (詳細)

7.で作成した文字鏡外字対照リスト「gaiji_list」にもとづき、文字鏡外字仮番号.png を文字鏡外字番号.png に変換して参照用ディレクトリに保存します。

シェルスクリプト

#!/bin/sh
# script           : ~/temp/conv_gaiji.sh
# directory to save: ~/temp/gaiji/
ls kari_number_files |
grep -E "\.png$" |
sed -e "s/T[0-9]*,//" > list
echo "endend" >> list
head -n 1 list > kari_num
sed -e "1,1d" list > list_b
cat list_b > list
KARI_NUM=`cat kari_num` 
while [ ${KARI_NUM} != "endend" ]
  do
  grep -E ${KARI_NUM} gaiji_list |
  cut -f 1 -d "," > t_num
  T_NUM=`cat t_num`
  cp kari_number_files/${KARI_NUM} gaiji/${T_NUM}.png
  head -n 1 list > kari_num
  sed -e "1,1d" list > list_b
  cat list_b > list
  KARI_NUM=`cat kari_num`
done

戻る

9. 文字鏡外字番号対応 PNG画像文字作成 -2- (詳細)

7.で作成した文字鏡外字番号リスト「null_list」にもとづき、文字鏡外字仮番号.png がない(Now Printing) 文字は、外字画像(null.png) をコピーして、文字鏡外字番号.png として参照用ディレクトリに保存します(HTMLファイルが参照する文字鏡外字は ~/temp/gaiji/ 配下ですが、~/temp/null/ 配下にもコピーをとります)。

シェルスクリプト

#!/bin/sh
# script           : ~/temp/conv_null.sh
# null.png         : ~/temp/null.png
# directory to save: ~/temp/gaiji/ & ~/temp/null/
cat null_list > list
echo "endend" >> list
T_NUM=`head -n 1 list | cat`
sed -e "1,1d" list > list_b
cat list_b > list
while [ ${T_NUM} != "endend" ]
  do
  cp null.png gaiji/${T_NUM}.png
  cp null.png null/${T_NUM}.png
  T_NUM=`head -n 1 list | cat`
  sed -e "1,1d" list > list_b
  cat list_b > list
done

戻る

10. 文字鏡コード、文字鏡外字コード、その他特殊コードの書き換え(詳細)

更新:2007年02月22日

2.で作成した全ての「****.html」ファイルについて、文字鏡コード、文字鏡外字コードを、参照用ディレクトリに分類保存した GIF画像文字、およびPNG画像文字へのリンクに一括して書き換えます。

その他特殊な表記記号の変換の例を以下に示します。

例1.「&MTxxxxx;」
不明な文字鏡外字コードと解釈し、外字画像(null.png) を適用して「Txxxxx.png」 に変換 (0154.html)
例2.「&S-***;」
発音表記と解釈し「<***>」に変換 (0220_07E-4.html)

シェルスクリプト

#!/bin/sh
# script         : ~/temp/conv_img_font.sh
# original  file : ~/temp/html/****.html
# converted file : ~/temp/final_html/****.html
# group directory: ~/temp/mojikyo/***/
# gaiji directory: ~/temp/gaiji/
ls html |
grep -E "\.html$" > list
echo "endend" >> list
FILE=`head -n 1 list | cat`
sed -e "1,1d" list > list_b
cat list_b > list
while [ ${FILE} != "endend" ]
  do
  perl -pe "s/\&M([0-9]{3})([0-9]{3});/<img src=\"\.\.\/mojikyo\/\1\/\1\2\.gif\" →
  →alt=\"mojikyo_font_\1\2\" width=\"24px\" height=\"24px\" \/>/g" html/${FILE} |
  perl -pe "s/\&M(T[0-9x]{5});/<img src=\"\.\.\/gaiji\/\1\.png\" →
  →alt=\"mojikyo_font_\1\" width=\"24px\" height=\"24px\" \/>/g" |
  perl "s/\&S-(.*?);/\&lt;\1\&gt;/g" > final_html/${FILE}
  echo ${FILE}
  FILE=`head -n 1 list | cat`
  sed -e "1,1d" list > list_b
  cat list_b > list
done

戻る

11. XMLタグを XHTML 1.1 に書き換え(詳細)

SAT進捗状況」記載の XMLタグの例にもとづき、11.で作成した「****.html」中の XMLタグを XHTML 1.1 に書き換えます。

XMLタグの意味と表示方法

■ <ver>:「<ver>」「</ver>」間 は「偈」を意味する。

表示方法
字下げ、段落作成、冒頭に「青」で「【偈】」と表記する。
変換方法
「<ver>」を「<div style="margin-left: 60px"><p><span class="blue">【偈】</span>→
→<br />」 で置換する。

■ <vc/>:「偈」の続きを意味する。

表示方法
単純に改行する。
変換方法
テキスト行冒頭に存在する場合は、すでに改行されているので無視する。
テキスト行の中に存在する場合は、「<vc/>」を「<br />」で置換する。

■ </ver>:「偈」の終了を意味する。

変換方法
「</ver>」を「</p></div>」で置換する。

■ <dhr>:「<dhr>」「</dhr>」間は「陀羅尼」を意味する。

表示方法
「陀羅尼」部分を「青」の「【 陀羅尼:」「 」で括る。
変換方法
「<dhr>」を「<span class="blue">【&nbsp;陀羅尼:」で置換する。

■ </dhr>:「陀羅尼」の終了を意味する。

変換方法
「</dhr>」を「&nbsp;】</span>」で置換する。

■ <com>:「<com>」「</com>」間は「細註・夾註」を意味する。

表示方法
「細註・夾註」部分を「緑」の「 [註:」「] 」で括る。
変換方法
「<com>」を「&nbsp;<span class="green">[註:」に置換する。

■ </com>:「細註・夾註」の終了を意味する。

変換方法
「</com>」を「]</span>&nbsp;」で置換する。

■ <br/>:改行を意味する。

変換方法
「<br/>」または「<br>」を「<br />」で置換する。

■ <vbr/>:「偈」中の改行を意味する。

変換方法
「<vbr/>」または「<vbr>」を「<br />」で置換する。

■ <cbr/>(<cbr>):「細註・夾註」中の改行を意味する。

表示方法
「細註・夾註」部分を単純に改行すると表示が崩れてしまい、かえって 解りにくくなるため、単純な「半角スペース」を挿入する。
変換方法
「<cbr/>」または「<cbr>」を「&nbsp;」で置換する。

■ <sp/>:「空白」を意味する。

表示方法
テキストは、「漢字」なので、「全角空白」を挿入する。
変換方法
「<sp/>」または「<sp>」を「全角空白」で置換する。

■ <dsp/>(<dsp>):このタグは、凡例に記載されていないが、「陀羅尼」中の「空白」であると推定した。

表示方法
テキストは、「漢字」なので、「全角空白」を挿入する。
変換方法
「<dsp/>」または「<dsp>」を「全角空白」で置換する。

意味不明のXMLタグ

以下のタグについては意味不明のため、XHTML 1.1 への変換を行わず、そのまま表示しています。

例1.「<right level="2">」(0001-2.html)
例2.「<error misisng="品">」(0220_06D-1.html)
例3.「<error/>」(0222.html)
例4.「<figure/>」(0893a.html)

変換シェルスクリプト

11.で作成した全ての HTMLファイルを一括変換します。なお、ファイル中の XMLタグおよびテキスト行番号は全てコメント化(「<!-- 」と「 -->」で括る) します。これにより、元テキストのデータはブラウザー上では非表示ですが、HTMLソース中に全て保持されます。

#!/bin/sh
# script        : ~/temp/conv_xml.sh
# original file : ~/temp/final_html/****.html
# converted file: ~/temp/xml_html/****.html
ls final_html |
grep -E "\.html$" > list
echo "endend" >> list 
FILE=`head -n 1 list | cat`
sed -e "1,1d" list > list_b
cat list_b > list
while [ ${FILE} != "endend" ]
  do
  sed -e "s/\&lt;ver\&gt;/<!-- <ver> --><div style=\"margin-left: 60px\">→
  →<p><span class=\"blue\">【偈】<\/span><br \/>/g" final_html/${FILE} |
  sed -e "s/:\&lt;vc\/\&gt;/:<!-- <vc\/> -->/g" |
  sed -e "s/\&lt;vc\/\&gt;/<!-- <vc\/> --><br \/>/g" |
  sed -e "s/\&lt;\/ver\&gt;/<!-- <\/ver> --><\/p><\/div>/g" |
  perl -pe "s/\&lt;dhr(.*?)\&gt;/<!-- <dhr\1> --><span class=\"blue\">→
  →【\&nbsp;陀羅尼:/g" |
  sed -e "s/\&lt;\/dhr\&gt;/<!-- <\/dhr> -->\&nbsp;】<\/span>/g" |
  sed -e "s/\&lt;com\&gt;/<!-- <com> -->\&nbsp;<span class=\"green\">[註:/g" |
  sed -e "s/\&lt;\/com\&gt;/<!-- <\/com> -->]<\/span>\&nbsp;/g" |
  perl -pe "s/\&lt;(br|br\/)\&gt;/<!-- <\1> --><br \/>/g" |
  perl -pe "s/\&lt;(vbr|vbr\/)\&gt;/<!-- <\1> --><br \/>/g" |
  perl -pe "s/\&lt;(cbr|cbr\/)\&gt;/<!-- <\1> -->\&nbsp;/g" |
  perl -pe "s/\&lt;(sp|sp\/)\&gt;/<!-- <\1> --> /g" |
  perl -pe "s/\&lt;(dsp|dsp\/)\&gt;/<!-- <\1> --> /g" |  
  perl -pe "s/^<br \/>([0-9].*?:)/<br \/><!-- \1 -->/" > xml_html/${FILE}
  echo ${FILE}
  FILE=`head -n 1 list | cat`
  sed -e "1,1d" list > list_b
  cat list_b > list
done

戻る

12. XMLタグの修正(詳細)

更新:2007年02月22日

11.で変換した HTMLファイルを W3C XHTML 1.1 Validator でチェックすると、いくつかのエラーが出るファイル、明らかに表示が崩れるファイルが存在します。これは、テキスト中の XMLタグが不適切に使用されているのが原因であることが判ったので、独自に修正を加えました。以下、該当のファイルと行番号、修正内容をメモしました。なお、修正箇所は、ソース中で XMLタグに「追加」「削除」を添えてコメント化(「<!-- 」と「 -->」で括る) しています。

■ 0099_1.txt
Line No. 0099_,02,0061b23(01): </br> を削除し、<br /> を追加

■ 0154.txt
Line No. 0154_,03,0084c02(00): </dhr> を追加
Line No. 0154_,03,0084c03(03): <dhr/> を削除
Line No. 0154_,03,0085a05(00): </dhr> を追加
Line No. 0154_,03,0085a06(02): <dhr/> を削除

■ 0261.txt
Line No. 0261_,08,0870c02(00): <vc/> を削除
Line No. 0261_,08,0870c11(00): </ver> を追加
Line No. 0261_,08,0870c12(00): <ver> を削除

■ 0279_1.txt
Line No. 0279_,10,0024a23(00): </ver> を削除
Line No. 0279_,10,0024a28(00): </ver> を追加

■ 0310_1.txt
Line No. 0310_,11,0036c24(00): <dhr> を追加
Line No. 0310_,11,0039b20(00): <dhr> を追加

■ 0310_2.txt
Line No. 0310_,11,0175a07(00): <ver> を削除

■ 0374_2.txt
Line No. 0374_,12,0602a27(00): <dhr> を追加

戻る

counter1counter2counter3counter4counter5counter6

|Home|仏教の部屋-Page4-|
 
Valid XHTML 1.1 Valid CSS!