VSCodeでXMLを使う
わかりやすい説明はこちらから
事前の作業
1. VSCodeの拡張機能「XML」をインストール 2. settings.jsonの編集
VSCodeの設定で「XML」を検索し、「XML configuration」を選択
code:setting.json
{
...(前略)...
macOSの場合
"xml.java.home": "/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home",
"java.home": "/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home"
Windowsの場合
"xml.java.home": "C:\\Program Files\\Java\\jdk-13.0.1.jdk"
パスの最後の "\\bin\\***.exe" の部分は取る
}
(Windowsの場合「\」の文字を二重にする)
3. VSCodeの再起動
Oxygenっぽく使うために
TEIスキーマ読み込み
簡単にやる
code:xml
...内容...
</TEI>
カスタマイズ(日本語版、など)
Romaでスキーマを生成(上述の拡張はW3C XML Schema形式しか対応していない) ファイル一式をどこかに置く
(a) TEIタグのxsi:schemaLocation属性の内容を生成したスキーマに合わせて変更
code:txt
※スキーマへのパスは相対でも可(XMLのあるフォルダは「.」とする)
Romaから落とした場合はおそらくZIPに入っている中のdocument.xsdが本体
(b) XML Catalog(xsi:schemaLocationに直書きしないでローカルのXSDで上書きする)
→ TEIの記述をいじらずにスキーマを交換できる
以下のようなXMLを作成してTEIファイルと同じフォルダに保存
code:catalog.xml
<?xml version="1.0"?>
<!DOCTYPE catalog
PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN"
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<system
</catalog>
ただし [スキーマの場所]はRomaで生成したファイル一式を置いた場所
VSCodeのsetting.jsonに以下を追記
code:settings.json
TEI準拠のサジェスト、補完、ドキュメント参照、バリデーションが効くhttps://gyazo.com/cf0e5da60dee14c7d5fd358d0b6fbfc2
XMLを整形
ツリーアウトライン
XPath検索
「タグで囲む」機能
VSCodeではCtrl+Eは使われている、デフォルトはAlt+W
タグ名変更に終了タグも追従
XSLT変換
setting.jsonに追記
code:json
コマンドパレットから"Run Transformation"→XSLを選択→出力→適切なファイル形式で保存
ショートカット設定可(デフォルト:なし)、ただしCtrl+Shift+Tは使われている
整形
右クリック→ドキュメントをフォーマット
XML拡張かXML Tools拡張かを選べる(初回)、なお設定はsettings.jsonに記憶される
ユーザースニペット
メニューの「ファイル→基本設定→ユーザー スニペット→XML」で開くファイルに放り込む
TEI Allのひな型もどき
code:json
"TEI P5 All": {
"prefix": "teiall",
"body": [
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>",
" <teiHeader>",
" <fileDesc>",
" <titleStmt>",
" <title>${1:Title}</title>",
" </titleStmt>",
" <publicationStmt>",
" <p>${2:Publication Information}</p>",
" </publicationStmt>",
" <sourceDesc>",
" <p>${3:Information about the source}</p>",
" </sourceDesc>",
" </fileDesc>",
" </teiHeader>",
" <text>",
" <body>",
" <p>${4:Some text here.}</p>",
" </body>",
" </text>",
"</TEI>"
],
"description": "Oxygen-like TEI (P5) All Boilerplate"
}