ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
TEIビューアでの利用を想定したCustom OpenSegDragon Viewerを作成しました。

TEIビューアでの利用を想定したCustom OpenSegDragon Viewerを作成しました。

概要 TEIビューアでの利用を想定したCustom OpenSegDragon Viewerを作成しました。 背景 以下のようなTEIとIIIFを対応させたビューア開発において、次に示す機能を持ったビューアが必要でした。 https://www.hi.u-tokyo.ac.jp/collection/digitalgallery/wakozukan/tei/ IIIFのマニフェストファイルを読み込むことができる。 ビューアコンポーネント側でのコマ送りを、コンポーネント外で把握することができる。 画像の部分領域をハイライトすることができる。 上記の要件を全てを満たす既存のIIIF対応ビューアを見つけることができなかったため、独自のビューアの開発を試みました。合わせて、npmパッケージとして公開することも試みました。 開発したビューア ドキュメンテーション等がまだ不十分ですが、以下のページで公開しています。このページで、ソースコードへのリンクも掲載しています。 https://www.npmjs.com/package/@nakamura196/osd-custom-viewer vue3とviteを使ったコンポーネントの開発およびnpmでの公開にあたっては、以下のサイトを参考にしました。 https://blog.egmond.dev/vue-component-to-npm-package 使用例 以下のページで導入例をご確認いただけます。 https://nakamura196.github.io/nuxt3-iiif-viewer/custom-osd コンポーネント内外からのコマ送りが可能です。これにより、例えばIIIF画像とTEIテキストの並列表示を行った際、TEIテキスト側からのコマ送りや、画像のコマ送りによる当該テキストへのスクロールなどを行うことができます。 またハイライト機能用いることで、あるテキスト行に対応した画像の部分領域をハイライトさせる、といったことが可能です。 使用例のソースコードは以下です。 https://github.com/nakamura196/nuxt3-iiif-viewer/blob/main/pages/custom-osd/index.vue ssrでの公開にあたり、pluginsフォルダに以下を追加しています。 https://github.com/nakamura196/nuxt3-iiif-viewer/blob/main/plugins/custom-osd.client.js まとめ ドキュメンテーションの充実や、IIIF v3への対応など、多くのTODOが残っていますが、参考になりましたら幸いです。

Gatsby CETEIceanを試す

Gatsby CETEIceanを試す

概要 Raffaele Vigliantiさんが作成されたGatsby CETEIceanを試してみました。 https://github.com/raffazizzi/gatsby-ceteicean-workshop 試作サイト 以下が試作したサイトです。MUIの追加や、縦書き表示、RDFデータへのリンクなど、いくつかのカスタマイズを加えています。 https://nakamura196.github.io/gatsby-ceteicean-workshop/ データとして、以下の「校異源氏物語テキストDB」のTEI/XMLファイルを使用しています。 https://kouigenjimonogatari.github.io/ ソースコード カスタマイズ内容を含むソースコードは以下でご確認いただけます。 https://github.com/nakamura196/gatsby-ceteicean-workshop まとめ Gatsby CETEIceanを用いることで、TEI/XMLファイルの公開環境を効率的に開発することができそうです。 参考になりましたら幸いです。

TEI Boilerplateを試す

TEI Boilerplateを試す

概要 TEI Boilerplateの日本語訳例は以下です。 TEI ( Text Encoding Initiative ) P5 コンテンツを最新のブラウザーで直接公開するための軽量ソリューションです。TEI Boilerplate を使用すると、サーバー側での処理や HTML への変換を行わずに、TEI XML ファイルを Web に直接提供できます。当社のTEI Boilerplate Demoは、TEI Boilerplate によってレンダリングされる多くの TEI 機能を示しています。 TEI Boilerplate は、Web 上で TEI/XML を公開および表示するための多くの優れた XSLT ソリューションに代わるものではありません。これは、より複雑な XSLT ソリューションに代わるシンプルで軽量なソリューションとなることを目的としています。 今回は、このTEI Boilerplateの使い方の例を説明します。 リポジトリのクローンとサーバの起動 以下のリポジトリを使用します。 https://github.com/TEI-Boilerplate/teibp-teach 本リポジトリは、TEI-Boilerplate 対応の http サーバを立ち上げるプロジェクト、と説明されています。 まず、リポジトリをクローンします。 git clone https://github.com/TEI-Boilerplate/teibp-teach 次に、ライブラリのインストールを行います。 cd teibp-teach npm install そして、ローカルのサーバを起動します。 node . 画面例 http://localhost:3000 にアクセスすると、以下のような画面が表示されます。 demoのリンクをクリックすると、表示例を確認することができます。この表示例では、画面右上に表示内容を切り替えることができるToolboxが提供されます。 校異源氏物語テキストへの適用 校異源氏物語テキストDBで公開されているTEI/XMLにも適用してみました。 以下のGitHub Pagesからご確認いただけます。 https://nakamura196.github.io/teibp-teach/content/01.xml ソースコードは以下からご確認いただけます。 ...

TEIテキストの作成支援ツール「FairCopy」の紹介

TEIテキストの作成支援ツール「FairCopy」の紹介

概要 研究仲間に、「FairCopy」というTEIテキストの作成支援ツールを教えていただきました。本ツールはGUIを介してTEIテキストを作成可能なツールで、とても便利なものに感じました。 有料のツールですが、2週間は無料で試用できるため、この調査結果を共有します。 インストール 以下のSign Up画面から情報を送信することで、トライアルのコードとアプリケーションのダウンロードリンクが表示されます。 https://faircopyeditor.com/sign_up ダウンロード後にアプリケーションを起動すると、以下のようなプロジェクトの選択画面が表示されます。 プロジェクトの作成 プロジェクトを作成します。今回は、以下のような情報を入力しました。 その後、以下のような画面が表示されます。 作成するデータ 今回は、すでに公開されている校異源氏物語テキストDBで公開されている「きりつぼ」のTEIデータについて、本ツールを使って再現することを試みます。 https://kouigenjimonogatari.github.io/tei/01.xml 国立国会図書館で公開されているIIIF画像と、プロジェクトで翻刻したテキストデータを対応づけたTEI/XMLファイルです。 新規リソースの作成 「NEW RESOURCE」をクリックすると、以下のような登録フォームが表示されます。適当なNameとIDを与えます。 また「Resource Type」については、複数の選択肢が表示されますが、TEI Header付きのTEIとIIIFを組み合わせたXMLファイルを作成したい場合には、「TEI Document」を選択するのがよさそうです。 結果、以下のように、「校異源氏物語・きりつぼ」フォルダの中に、「TEI Header」というファイルが作成されます。 IIIFのインポート まず、IIIF画像のインポートを試みます。「IMPORT IIIF」ボタンを押し、以下のようなIIIFマニフェストのインポート画面において、URLを入力します。 今回は、以下のマニフェストのURLを入力しました。 https://www.dl.ndl.go.jp/api/iiif/3437686/manifest.json すると、以下のように画像が追加されます。 その行をクリックすと、以下のように、マニフェストファイル内の画像が取り込まれます。ID列で、各画像にIDが与えられていることが確認できます。テキストと画像の紐付けにおいて、後ほど使用します。 画面右上の画像アイコンをクリックすると、画像を表示することもできます。 参考までに、「校異源氏物語・きりつぼ」に戻り、以下のように、画像の行のチェックボックスを選択して、「ACTIONS」 > 「Export」を押すと、XMLファイルが出力されます。 以下のように、facsimile要素を持つXMLファイルが作成されます。 <?xml version="1.0" encoding="UTF-8"?> <TEI xmlns="http://www.tei-c.org/ns/1.0"> <facsimile sameAs="https://www.dl.ndl.go.jp/api/iiif/3437686/manifest.json"> <surface xml:id="f000" ulx="0" uly="0" lrx="6890" lry="4706" sameAs="https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/1"> <label>1</label> <graphic mimeType="application/json" url="https://www.dl.ndl.go.jp/api/iiif/3437686/R0000001"/> </surface> <surface xml:id="f001" ulx="0" uly="0" lrx="6890" lry="4706" sameAs="https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/2"> <label>2</label> <graphic mimeType="application/json" url="https://www.dl.ndl.go.jp/api/iiif/3437686/R0000002"/> </surface> ... </facsimile> </TEI> 後ほど、TEI Headerとtext - bodyを組み合わせたTEI/XMLをエクスポートしますが、上記のように、画像やテキスト、TEI Headerなど、それぞれの要素のTEI/XMLをエクスポートする機能が提供されています。 テキストのインポート 次に、テキストのインポートを行います。とりあえず、以下のようなサンプルのテキストファイルを登録します。 ...

テキストマークアップツール「CATMA」の使い方

テキストマークアップツール「CATMA」の使い方

概要 テキストマークアップツールの一つである「CATMA」の入門的な使い方を紹介します。 https://catma.de/ アノテーションの結果はTEIフォーマットでエクスポートできるため、他のシステムでも活用可能な相互運用性の高いデータを作成できると思われます。また実験的な段階とのことですが、JSON APIも提供されています。これを使うことで、アノテーションはCATMAで行い、その結果をAPIを経由して、他のシステムで利用する、という構成も考えられます。 上記は未検証の内容を含む、一部発展的な取組みになりますが、本記事では、CATMAの基本的な使い方を備忘録として残します。 使い方 以下にアクセスして、「Sign Up」を行います。Googleのアカウントでログインするとスムーズかと思います。 https://app.catma.de/catma/ ログイン後の画面は以下です。 プロジェクトの作成 「Create New Project」から新しいプロジェクトを作成します。 ドキュメントの登録 以下のように、「+」ボタンを押して、「Add Document」を行います。 今回は以下のような単純なtxtファイルを試します。 私の名前は中村覚です。 その後の選択肢は基本的にそのままでOKですが、以下のように、言語は「Japanisch」にしておくとよいかもしれません。 以下のように、exampleというドキュメントと、example Default Annotaitonsというアノテーションを保存するためのコレクションが作成されます。 タグセットの作成 次に、タグセットを作成します。左のメニューから「Tags」を選択して、画面右上の「+」ボタン、「Add Tagset」を選択します。 今回は「はじめてのタグセット」という名前をタグセットを作成しました。さらに、画面右上の「+」ボタンから、「Add Tag」を選択します。 そして、以下のように、タグの追加対象となるタグセットを選択して、今回は、「persName」というタグを追加してみます。「プロパティ」などを追加設定できますが、今回はスキップします。 アノテーション 左のメニューから、「Annotate」に移動して、以下のように、アノテーション対象のドキュメントとして「example」、タグセットとして「はじめてのタグセット」を選択します。 アノテーション付与対象の選択し、画面右から付与対象のタグを選択します。先のタグの追加画面で設定した色の下線が引かれます。 エクスポート 左のメニューから、「Project」に戻り、「example Default Annotations」を選択して、メニューアイコンから「Export Documents & Collections」を選択します。 zipファイルがダウンロードされ、元テキストであるtxtファイルと、アノテーション結果を格納したxmlファイルが展開されます。 xmlファイルは以下のようなTEIのフォーマットで出力されます。<encodingDesc>に使用したタグ、具体的にはpersNameが示されます。 また、<body>以下に、何文字目から何文字目に対して、どのタグが付与されているか、という情報が格納されます。 <TEI xmlns="http://www.tei-c.org/ns/1.0" xml:lang="en"> <teiHeader> <fileDesc> ... </fileDesc> <encodingDesc> <fsdDecl xml:id="T_876E9B9F-B41D-4DD7-B54A-A225A75A8F50" n="はじめてのタグセット b51b9866b96ff38f059b7b5b38b8383dfc53f27c"> <fsDecl xml:id="CATMA_BDA41946-07EF-403E-BDE9-D2E60C48D093" n="2022-11-10T02:05:19.000+0100" type="CATMA_BDA41946-07EF-403E-BDE9-D2E60C48D093"> <fsDescr>persName</fsDescr> ... </fsDecl> </fsdDecl> </encodingDesc> </teiHeader> <text> <body> <ab type="catma"> <ptr target="D_FB58A2B3-EC15-42B8-8DAC-E9A28B3D1FDC#char=0,5" type="inclusion"/> <seg ana="#CATMA_E1AE48BF-903B-451B-8723-FAD8FD182CFE"> <ptr target="D_FB58A2B3-EC15-42B8-8DAC-E9A28B3D1FDC#char=5,8" type="inclusion"/> </seg> <ptr target="D_FB58A2B3-EC15-42B8-8DAC-E9A28B3D1FDC#char=8,13" type="inclusion"/> </ab> </body> <fs xml:id="CATMA_E1AE48BF-903B-451B-8723-FAD8FD182CFE" type="CATMA_BDA41946-07EF-403E-BDE9-D2E60C48D093"> ... </fs> </text> </TEI> 上記の構造化データを使って、さまざまな活用ができそうです。 ...

MediaWikiのTEI拡張を試す(結果:うまくいきませんでした。)

MediaWikiのTEI拡張を試す(結果:うまくいきませんでした。)

概要 MediaWikiでTEIの編集を可能とする拡張機能が開発されています。 https://www.mediawiki.org/wiki/Extension:TEI 編集画面の例は以下です。 Omeka Sの翻刻支援モジュールであるScriptoは、Omeka SとMediaWikiを連携させることで、Omeka Sに登録された画像データ等に対する翻刻を可能にします。 https://omeka.org/s/modules/Scripto/ この環境に、上述したTEI拡張を組み合わせることで、TEIに準拠した翻刻ができないかを試しました。ただ、結果として、今回のTEI拡張をうまく動作させることができませんでした。 以下、この取り組みに関する備忘録です。 なお、オンライン上でTEIを編集できるツールとして、以下があります。こちらも参考になりましたら幸いです。 https://digital-editing.fas.harvard.edu/editor/ MediaWikiのセットアップ AWSのLightsailを用いて作成したLAMP環境に、MediaWikiをインストールしました。このインスール方法については、公式のドキュメントなど、多くの記事がすでに存在するため、そちらに説明を譲ります。 https://www.mediawiki.org/wiki/Manual:Installing_MediaWiki/ja TEI拡張のインストール 以下のページのInstallationを参考に、拡張機能を追加します。 https://www.mediawiki.org/wiki/Extension:TEI 以下、日本語訳です。 ファイルをダウンロードして、extensions/フォルダー内のディレクトリに配置します。 LocalSettings.phpの下部に次のコードを追加します。 wfLoadExtension ( 'TEI' ); 完了 – ウィキのSpecial:Versionに移動して、拡張機能が正常にインストールされたことを確認します。 上記のSpecial:Versionのページには、日本語設定の場合は、以下からアクセスできます。 /index.php?title=特別:バージョン情報 以下のような画面が表示されます。 そして、以下の記述をLocalSettings.phpにさらに追加します。 define( 'NS_TEI', 100 ); define( 'NS_TEI_TALK', 101 ); $wgExtraNamespaces[NS_TEI] = 'TEI'; $wgExtraNamespaces[NS_TEI_TALK] = 'TEI_Talk'; $wgNamespaceContentModels[NS_TEI] = 'tei'; 追加作業 上記まで行いましたが、TEIが有効になりませんでした。以下の追加作業が必要でした。 CodeMirrorの追加 以下の拡張機能が必要でした。 https://www.mediawiki.org/wiki/Extension:CodeMirror 上記をインストールの上、以下をLocalSettings.phpに追記します。 wfLoadExtension ( 'CodeMirror' ); wfLoadExtension ( 'Math' ); wfLoadExtension ( 'VisualEditor' ); 上記では、CodeMirrorに加えて、デフォルトでインストールされているMathとVisualEditorも有効化しています。 ...

[TEI x JavaScript] Nuxt3で意図しないWhitespaceを削除する

[TEI x JavaScript] Nuxt3で意図しないWhitespaceを削除する

課題 TEI/XMLファイルを読み込み、JavaScript(Vue.jsなど)で可視化を行う際、意図しないWhitespaceが入ってしまうケースがありました。 具体的には、以下のようなHTMLを書いた場合、 <template> <div> お問い合わせは <a href="#">こちらから</a> お願いします </div> </template> 以下のように表示され、「お問い合わせは こちらから お願いします」と意図しないスペースが入ってしまいました。 この課題に対して、以下のリポジトリで解決策を公開してくださっていました。 https://github.com/aokiken/vue-remove-whitespace ただ私の環境ではNuxt3ではうまく動作させることができなかったため、ソースコードを参考に、Nuxt3へ導入してみました。 以下、この備忘録です。 Nuxt3への導入 plugins/removeWhitespace.tsを作成します。 function isText(node: ChildNode) { return node.nodeType === Node.TEXT_NODE } function trimText(node: NodeListOf<ChildNode>) { Array.from(node).forEach((node) => { if (isText(node) && node.textContent) { node.textContent = node.textContent.trim() return } trimText(node.childNodes) }) } export default defineNuxtPlugin((nuxtApp) => { nuxtApp.vueApp.directive("removeWhitespace", { mounted(el: HTMLElement) { trimText(el.childNodes) }, updated(el: HTMLElement) { trimText(el.childNodes) }, }); }); そして、pages/index.vueなどで、v-remove-whitespaceディレクティブを使用します。 <template> <div v-remove-whitespace> お問い合わせは <a href="#">こちらから</a> お願いします </div> </template> その結果、以下のように、意図しないWhitespaceを削除できました。 まとめ ディレクティブの理解が不十分で誤っている点もあるかと思いますが、参考になりましたら幸いです。 以下、ソースコードとデモサイト(GitHub Pages)です。 ソースコード https://github.com/nakamura196/nuxt3-removeWhitespace デモサイト https://nakamura196.github.io/nuxt3-removeWhitespace/ なお、本題と話がそれますが、nuxt.config.tsを以下のように記述することで、baseURLを指定することができました。 export default defineNuxtConfig({ app: { baseURL: "/nuxt3-removeWhitespace", // /<reponame> }, }); Nuxt3のSSGをGitHub Pagesで公開する際の参考になりましたら幸いです。 ...

python-docxを用いた両側ルビ

python-docxを用いた両側ルビ

python-docxを用いて、Wordで両側ルビを実現する方法の備忘録です。 以下のノートブックからお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/python_docxを用いた両側ルビ.ipynb 出力例は以下です。 入力例は以下です。 <body> <p> 私は <ruby> <rb> <ruby> <rb>打</rb> <rt place="right">ダ</rt> </ruby> <ruby> <rb>球</rb> <rt place="right">キウ</rt> </ruby> 場 </rb> <rt place="left">ビリヤード</rt> </ruby> に行きました。 </p> <p> <ruby> <rb>入学試験</rb> <rt place="above">にゅうがくしけん</rt> </ruby> があります。 </p> </body> まだ不完全はプログラムではありますが、参考になりましたら幸いです。

TEI/XMLファイルを縦書きPDFに変換する方法の1例

TEI/XMLファイルを縦書きPDFに変換する方法の1例

概要 TEI/XMLファイルを縦書きPDFに変換する方法について、その1例を備忘録として残します。 以下のノートブックで、「校異源氏物語」を対象としたプログラムをお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/TEI_XMLファイルを縦書きPDFに変換する.ipynb 変換の流れ 今回は、Quartoを使用しています。 https://quarto.org/ インストールの方法は以下を参考にしてください。 https://quarto.org/docs/get-started/ TEI/XML -> qmd まずTEI/XMLファイルの内容をqmdファイルに変換します。以下は、変換スクリプトのサンプルです。 from bs4 import BeautifulSoup soup = BeautifulSoup(open(file,'r'), "xml") elements = soup.findChildren(text=True, recursive=True) import os id = os.path.splitext(os.path.basename(file))[0] title = soup.find("title").text author = soup.find("author").text elements = soup.find("body").find("p").findChildren() text = "" for e in elements: if e.name == "pb": text += "\n" if e.name == "seg": text += e.text + " \n" opath = f"data/{id}.qmd" os.makedirs(os.path.dirname(opath), exist_ok=True) text = f"""--- title: "{title}" author: "{author}" format: docx: reference-doc: /content/kouigenjimonogatari/tools/genji-doc-style.docx --- {text.strip()} """ with open(opath, "w") as f: f.write(text) 以下がqmdファイルの例です。 --- title: "校異源氏物語・きりつぼ" author: "池田亀鑑" format: docx: reference-doc: /content/kouigenjimonogatari/tools/genji-doc-style.docx --- いつれの御時にか女御更衣あまたさふらひ給けるなかにいとやむことなきゝは にはあらぬかすくれて時めき給ありけりはしめより我はと思あかり給へる御方 〱めさましきものにおとしめそねみ給おなしほとそれより下らうの更衣たち はましてやすからすあさゆふの宮つかへにつけても人の心をのみうこかしうら みをおふつもりにやありけむいとあつしくなりゆきもの心ほそけにさとかちな るをいよ〱あかすあはれなる物におもほして人のそしりをもえはゝからせ給 はす世のためしにもなりぬへき御もてなし也かんたちめうへ人なともあいなく めをそはめつゝいとまはゆき人の御おほえなりもろこしにもかゝることのおこ りにこそ世もみたれあしかりけれとやう〱あめのしたにもあちきなう人のも てなやみくさになりて楊貴妃のためしもひきいてつへくなりゆくにいとはした なきことおほかれとかたしけなき御心はへのたくひなきをたのみにてましらひ 給ちゝの大納言はなくなりてはゝ北の方なんいにしへの人のよしあるにておや うちくしさしあたりて世のおほえはなやかなる御方〱にもいたうおとらすな にことのきしきをももてなしたまひけれととりたてゝはか〱しきうしろみし なけれは事ある時はなをより所なく心ほそけ也さきの世にも御ちきりやふかか qmd -> Word(docx) 次に、qmdファイルをwordファイルに変換します。この時、事前に用意した縦書きのwordテンプレートを参照することで、マークダウン形式のテキストを縦書きのwordファイルに変換します。 ...

Pythonを用いてTEI/XMLファイルをEPUBに変換する

Pythonを用いてTEI/XMLファイルをEPUBに変換する

概要 Pythonを用いてTEI/XMLファイルをEPUBに変換する機会がありましたので、その備忘録です。 TEI/XMLファイルをEPUBに変換する方法として、Oxygen XML Editorを使用する方法もありますが、今回は、Pythonのライブラリ「EbookLib」を使用します。以下の記事を参考にしました。 https://dev.classmethod.jp/articles/try-create-epub-by-python-ebooklib/ 特に今回は、「校異源氏物語・本文テキストデータリポジトリ」で公開されているTEI/XMLファイルを対象として、縦書きのEPUBを作成することを目的とします。 変換方法 以下のノートブックにソースコードを記載しています。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/Pythonを用いてTEI_XMLファイルをEPUBに変換する.ipynb 結果 以下のように、EPUBに対応したリーダーで、校異源氏物語のテキストを閲覧することができます。 HTMLとCSSに変更を加えることで、多様な表示を実現することができると思います。 TEI/XMLの活用にあたり、参考になりましたら幸いです。

二つのテキスト間の差分を抽出するプログラムを作成しました。

二つのテキスト間の差分を抽出するプログラムを作成しました。

概要 二つのテキスト間の差分を抽出するプログラムを作成しました。以下のGoogle Colabからご利用いただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/校異情報の生成.ipynb 有名なサービスとして「difff」がありますが、今回はPythonを用いて実装しています。 https://difff.jp/ テキスト間の差分の算出には、difflib.SequenceMatcherを使用しています。 https://docs.python.org/ja/3/library/difflib.html 使い方 出力方式として、HTMLファイルとTEIファイルの2種類を選ぶことができます。 HTML HTMLファイルの出力結果例は以下です。 XML XMLファイルの出力例は以下です。 <?xml version="1.0" encoding="utf-8"?> <?xml-model href="https://raw.githubusercontent.com/ldasjp8/tei-example/main/tei_all.rng" schematypens="http://relaxng.org/ns/structure/1.0" type="application/xml"?> <TEI xmlns="http://www.tei-c.org/ns/1.0"> <teiHeader> <fileDesc> <titleStmt> <title>Title</title> </titleStmt> <publicationStmt> <p>Publication</p> </publicationStmt> <sourceDesc> <listWit> <witness xml:id="t1">中村式五十音</witness> <witness xml:id="t2">中村式五十音又様</witness> </listWit> </sourceDesc> </fileDesc> </teiHeader> <text> <body> <p>あいうえお <lb/> <app xml:id="a1"> <lem wit="#t1">か</lem> <rdg wit="#t2">こけ</rdg> </app>きく <app xml:id="a2"> <lem wit="#t1">けこ</lem> <rdg wit="#t2">か</rdg> </app> <lb/> さしすせそ <lb/> た <app xml:id="a3"> <lem wit="#t1">ちぬ</lem> <rdg wit="#t2">じづ</rdg> </app>てと <app xml:id="a4"> <lem wit="#t1"/> <rdg wit="#t2"/> </app> </p> </body> </text> </TEI> 工夫した点として、TEI(Text Encoding Initiative)で定められているappタグを用いて出力します。そのため、appタグに対応したツールで可視化を行うことができます。 例えば、以下の「TEI Critical Apparatus Toolbox」を使用してみます。 http://teicat.huma-num.fr/witnesses.php ...

「NDL OCR x IIIF」アプリにTEI/XML形式でダウンロードする機能を追加しました。

「NDL OCR x IIIF」アプリにTEI/XML形式でダウンロードする機能を追加しました。

国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリについて、OCR結果をTEI/XML形式でダウンロードする機能を追加しました。 https://static.ldas.jp/ndl-ocr-iiif/ 本アプリについては、以下の記事も参考にしてください。 本機能の追加にあたり、UIを更新しました。結果を「ビューア」と「データ」に分けています。 「ビューア」については、従来から提供していた「Mirador」と「Curation Viewer」に加えて、「Universal Viewer」、「Image Annotator」を追加しました。また、「次世代デジタルライブラリー」へのリンクと、TEI/XMLファイルの簡易ビューアとして「TEI Viewer」というページを実装して追加しています。 「データ」については、「マニフェストファイル」「キュレーションリスト」「TEI/XML」の3種類を提供します。 用途に応じてご活用いただけますと幸いです。

Node.js で XSLT を実行するサンプルリポジトリを作成しました。

Node.js で XSLT を実行するサンプルリポジトリを作成しました。

Node.js で XSLT を実行するサンプルリポジトリを作成しました。 https://github.com/ldasjp8/nodejs-xslt TEI/XMLファイルなどをNode.jsで処理する際の参考になりましたら幸いです。

Pythonを用いたTEI/XMLファイルの分析サンプルプログラムを作成しました。

Pythonを用いたTEI/XMLファイルの分析サンプルプログラムを作成しました。

Pythonを用いたTEI/XMLファイルの分析サンプルプログラムを作成しました。 以下のGoogle Colabからご利用いただけます。 https://colab.research.google.com/drive/1fji80KZW8typjJMi01fyUWjrdYrNldsK TEIデータの活用を検討されている方の参考になりましたら幸いです。

Omeka S XML Viewerモジュールの使い方

Omeka S XML Viewerモジュールの使い方

※ 本モジュールの使用にあたっては、一部発展的な手続きが必要となります。Omeka Sの基本的な使用を検討されている方は、その点ご注意ください。 概要 Omeka SでXMLファイルの表示を可能とするXML Viewerモジュールの使い方について説明します。TEIで作成したXMLファイルの表示といった用途などに利用できます。 gitlab.com インストール 本モジュールについては、2022年3月4日時点において、GitLabのみで公開されており、GitHubでは公開されていません。 また、リリース版のzipファイルが提供されていないため、ソースコードをダウンロードする必要があります。 具体的には、以下のURLから、ソースコード版のzipファイルをダウンロードします。 https://gitlab.com/Daniel-KM/Omeka-S-module-XmlViewer/-/archive/master/Omeka-S-module-XmlViewer-master.zip これを展開すると、リリース版のXmlViewerというフォルダとは異なり、Omeka-S-module-XmlViewerというフォルダが作成されます。なので、本フォルダ名をXmlViewerに変更する必要があります。 その後は、他のモジュールと同様、Omeka Sの管理画面からインストールを行います。 XMLファイルのアップロード XMLファイルのアップロードは、一般的なメディアの登録方法と同じです。アイテムを新規作成し、そのアイテムに紐づけるメディアとして、XMLファイルを登録します。登録方法は、画像などと同様、ローカルからアップロードする他、URLを参照して登録することもできます。 注意点として、Omeka Sのデフォルト設定では、xmlファイルのアップロードは許可されておらず、以下のようなエラーが発生します。 そのため、以下の設定画面の「セキュリティ」の項目において、「許可されるメディアタイプ」にtext/xml、許可されるファイル拡張子にxmlを追記して保存します。 もしくは、「ファイル検証を無効にする」を有効化します。 上記の設定により、以下のようにxmlファイルが登録されます。この時、下図のMIMEタイプを確認しておいてください。 なお、xmlファイルに <?[xml](http://d.hatena.ne.jp/keyword/xml) version="1.0" encoding="[UTF-8](http://d.hatena.ne.jp/keyword/UTF-8)"?> の記述がない場合、以下のように、MIMEタイプが text/html に設定されてしまう場合があります。この時、後述するxslによる変換がうまくいかない場合があるため、xmlファイルの修正を推奨します。 XML Viewerモジュールの設定 次に、以下のように、サイトの設定画面に移動します。 その中に「XML Viewer」という項目があります。ここに、先ほど確認したMIMEタイプがない場合、下図のように追記します。「xsl/xml-html.xslt」は、本モジュールでデフォルトで提供されているxsltファイルです。 具体的なxsltファイルは、以下からご確認いただけます。 https://gitlab.com/Daniel-KM/Omeka-S-module-XmlViewer/-/blob/master/asset/xsl/xml-html.xslt その結果、サイト内のメディアの詳細ページにおいて、以下のように変換されたHTMLの内容が表示されます。 具体的には、登録したXMLファイルに対して、以下のように、xsltファイルへのリンクが挿入されていることが確認できます。 まとめ 上述したように、本モジュールによって提供されるxsltファイルに基づき、Omeka Sに登録したXMLファイルの内容を表示できることを確認しました。 用途に応じたxsltファイルを作成することで、表示内容のカスタマイズが可能です。 例えば、以下のようなxsltファイルを用意し、/modules/XmlViewer/asset/xsl に配置します。 https://gist.github.com/nakamura196/a74202c691e9957938e89a36d4da319a そして、上述した設定画面で当該ファイルを指定することにより、以下のように表示スタイルを変更することができます。 少し発展的な内容を含むモジュールですが、Omeka SとTEI/XMLの連携をお考えの方などの参考になれば幸いです。

IIIFマニフェストファイルからTEIのfacsimile要素を作成するプログラムを作成しました。

IIIFマニフェストファイルからTEIのfacsimile要素を作成するプログラムを作成しました。

IIIFマニフェストファイルからTEIのfacsimile要素を作成するプログラムを作成しました。以下のGoogle Colaboratoryでお試しいただけます。 colab.research.google.com IIIFとTEIの連携を検討されている方の参考になりましたら幸いです。

JavaScriptのquerySelector()でxml:idに特定の値を持つ要素を取得する方法

JavaScriptのquerySelector()でxml:idに特定の値を持つ要素を取得する方法

JavaScriptのquerySelector()でxml:idに特定の値を持つ要素を取得する方法についての備忘録です。 具体的には、例えばmyDocという変数に対して、以下の方法で取得できます。この例では、xml:id属性にabcという値を持つ要素を取得します。 myDoc.querySelector("[*|id=‘abc’]") *|(パイプ)idの形で指定する点がポイントです。 JavaScriptでTEI/XMLファイルを扱う場合、xml:id属性の値を使って要素を取得するケースがあります。このxml:id属性について、typeやcorrespといった他の属性と異なり、属性名にprefix「xml:」がついています。そのため、上記のような方法を使用する必要があります。 より良い方法や他の方法もあるかもしれませんが、参考になりましたら幸いです。

Oxygenの自動整形機能においてlbタグの前で改行する方法

Oxygenの自動整形機能においてlbタグの前で改行する方法

概要 本記事では、TEI/XMLを便利に扱うことができるツール「Oxygen XML Editor」において、自動で整形・インデントするルールを変更する方法について紹介します。 特に、行の始まりを示すlbタグの前で改行されるようにすることを目指します。 背景 TEI/XMLを便利に扱うことができるツール「Oxygen XML Editor」において、自動で整形・インデントする機能があります。下図の上部に示しているアイコンです。 本機能を使うことにより、一定のルールに基づいて整形されますが、このルールを編集したくなる場合があります。 例えば、上図は『校異源氏物語』のテキストデータです。行の始まりを示すlb(line beginning)タグがありますが、(私の環境の)デフォルトの整形ルールでは、lbタグが行の途中に入る形で整形されます。 本テキストデータを機械的に処理する際には問題ありませんが、特に人手でテキストデータを作成・編集する際に、lbタグの前で改行されてほしい、というニーズがありました。 整形ルールの編集 Oxygenの「オプション」というメニューから以下の画面を開き、画面左部のナビゲーションから「エディタ」 > 「整形」 > 「XML」を選びます。 下図は、私のデフォルト設定を示します。画面右下の「デフォルト設定」ボタンから、いつでもデフォルト設定に戻すことができます。 これに対して、下図の設定変更を行います。 まず、画面中央部の「要素 間隔」という項目において、右端の「改行」を選び、右下の「追加」ボタンから、lb要素を追加します。この時、「前」という列にチェックが入っていることにより、自動整形時に、lbタグの前で改行されるようになります。 次に、「整形」という項目において、「テキストをそのまま維持」にチェックを入れます。これにチェックを入れないと、マークアップの方法によっては、自動整形するたびに、lbタグの前に空行が入ってしまうことを確認しました。 その他の設定については、必要に応じて試してみてください。 結果 上記の設定を行なった上で自動整形を行うと、下図のように、lbタグの前で改行されるようになりました。 特に人手でTEI/XMLファイルを作成・編集する際に、本記事がお役に立てば幸いです。