#author("2023-07-31T08:51:07+09:00","default:ogiwiki","ogiwiki")
[[日本語テキスト処理基礎講座2023]]

*XMLの基礎 [#le34c8ac]

-XML形式もテキストデータの一種
--CSVで決まっていたようなお約束がはるかに詳細に仕様として決められ、いろんな表現が可能になっている。
--HTMLと同じくテキストの[[マークアップ言語>https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E8%A8%80%E8%AA%9E]]の一つだが、特定目的ではなく汎用

-[[Wikipedia Extensible Markup Language>https://ja.wikipedia.org/wiki/Extensible_Markup_Language]]
--2000年代はじめにはなんでもXMLでやるというくらいに流行った((APIやDB、ファイルシステムまで))
--アプリケーション間のやりとりではJSONが使われるようになったが、今でもコーパス等の文書のマークアップにはXMLが広く使われている
---冗長性、複雑化
-ここでは、コーパスの利用・構築に必要なXMLに関する基礎知識を説明する
--基本的に解説記述は他のページへのリンクで済ませる

-参考:https://www.javadrive.jp/xml/

**実例 [#jd4d94b1]
-BCCWJのタグセット:https://clrd.ninjal.ac.jp/bccwj/c-xml.html
-明六雑誌コーパス:https://ccd.ninjal.ac.jp/cmj/meiroku/ (XMLアノテーション+形態論情報付与)


***TEI (Text Encoding Initiative) [#u02355e5]
-https://tei-c.org/
--参考資料:[[TEI入門に最適なウェブ資料>https://www.dh.ku-orcas.kansai-u.ac.jp/?p=750]](関西大・東アジアDHポータル)
--[[chapter 8 歴史データのさまざまな応用 -Text Encoding Initiative の現在-(永崎研宣)★『歴史情報学の教科書』>https://bungaku-report.com/blog/2019/03/chapter-8-text-encoding-initiative.html]]


**XMLの基礎 [#zd1019d8]

***理解しておくべき用語 [#j807f28f]
-XML文書 XML Document
--ルートが一つの木構造(入れ子型構造)を表現するものでタグの交差は許されない
--整形式 well-formed
--妥当な valid

  <tag att1="value1" att2="value2">ほげ</tag>

-タグ Tag
--タグ名 tagの部分。日本語でも可。数字などで始まるタグ名は不可
--開始タグ <tag> 
--終了タグ </tag>
--空要素タグ <tag/> (<tag></tag>と等価)
-属性 Attribute (開始タグ((空要素タグを含む))に複数付けられる att1="value1"の部分)
--属性名 att1, att2の部分
--属性値 value1, value2の部分 ""または''で囲まれたところ
-要素 Element
--ルート要素:必ず一つだけ
--子要素 ある要素の内側に含まれる要素
--空要素 内側に要素もテキストも含まない要素
-テキストノード ほげ

**実体参照 Entitiy reference [#wfd66910]
-XML文書の記述に使われている文字((&<>は必ずこれで書く。"'は属性値の中では必ずこれで書く))
--&&amp;=amp; <=&amp;lt; >=&amp;gt; "=&amp;quot; '=&amp;apos; 普通に書くとXML文書が壊れてしまう。
-その他
--&amp;nbsp; スペース、&amp;copy;=©、&amp;yen;=¥など
-文字参照 Unicodeで指定(&amp;#x十六進数;または&amp;#十進数;)
--&amp;#x6a67; &amp;#27239; =&#x6a67;
--&amp;#x1f9ad; &amp;#129453; =&#x1f9ad; 

**文書定義と検証 [#o73b0fed]

***理解しておくべき用語 [#v07f0424]
-文書型定義 Document Type Definition
--文書型宣言
--DTD
--XML schema
-検証 validation

**XPath [#we73d7df]
-[[Wikipedia XPath>https://ja.wikipedia.org/wiki/XML_Path_Language]]
-参考:https://www.techscore.com/tech/XML/XPath/XPath1/xpath01
-参考:[[XPath>https://atmarkit.itmedia.co.jp/aig/01xml/xpath.html]]とは
--https://developer.mozilla.org/ja/docs/Web/XPath


-XPathの構文 /軸::ノードテスト[述語]/~
--例1:/A/child::B/child::*/child::C[position()=1]
--例2:/雑誌/child::記事[@著者名="上田万年"]/descendant-or-self::node()/child:注[@種類='誤字']
-省略構文 ファイルのPathに似た書き方になる。普通は省略構文で書く
--例1:/A/B/*/C[1]
--例2:/雑誌/記事[@著者名="上田万年"]//注[@種類='誤字']

-軸 axis
--基準点(コンテクストノード)からみた方向・親子関係を指定する(child, descendant, parent, descendant-or-self, preceding-sibling...)
-ノードテスト node test
--名前またはノードの種類を指定する(要素名, *, text(), node())
-述語 predicate
--[]の中に条件を記述して対象を絞り込む。条件式や簡単な関数(([[XPath2.0>http://xmlconsortium.org/wg/tech/WD-xpath20-20020816-Japan-without-Appendix.htm]]でいろんな関数や正規表現が使えるようになった))が使える


**名前空間 namespace [#v04969af]



**XMLの限界とスタンドオフアノテーション [#cb87db22]
-複雑なコーパスはタグの交差や検索性の面でXMLだけでの表現に限界がある
-言語の構造と紙面情報、パラ言語情報(イントネーションなど)は奇麗に構造化できない
-XMLファイル+文字位置を使った表形式データで扱っている

**XSLT(省略) [#kd8031f0]
-参考:[[XSLT>https://atmarkit.itmedia.co.jp/aig/01xml/xslt.html]]とは
--https://developer.mozilla.org/ja/docs/Web/XSLT

-太陽コーパスでの活用例
-[[「太陽コーパス」>https://clrd.ninjal.ac.jp/cmj/taiyou/index.html]]と[[XMLアプリケーション>https://csd.ninjal.ac.jp/lrc/?%A1%D8%A4%BF%A4%F3%A4%DD%A4%DD%A1%D9%A1%A4%A1%D8%A5%D7%A5%EA%A5%BA%A5%E0%A1%D9]](2000年代)


***Himawari [#k723a65a]
-[[全文検索システム「ひまわり」>http://www2.ninjal.ac.jp/lrc/index.php?%C1%B4%CA%B8%B8%A1%BA%F7%A5%B7%A5%B9%A5%C6%A5%E0%A1%D8%A4%D2%A4%DE%A4%EF%A4%EA%A1%D9]]
-XMLファイルにインデックスを付けて利用する検索用アプリケーション
--コーパスのXMLファイルをUTF-16LE(LF改行)で保存しておく


**XMLエディタ [#a0529736]
-[[Oxygen XML Editor>https://www.oxygenxml.com/]]が高機能で便利(有料、アカデミック版あり)
-普通の利用ならVSCodeの拡張で十分かも

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS