📚
RELAX NGとSchematron
概要
oXygen XML EditorでTEI/XMLを作成すると、以下のようなテンプレートが作成されます。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml"
schematypens="http://purl.oclc.org/dsdl/schematron"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<teiHeader>
<fileDesc>
<titleStmt>
<title>Title</title>
</titleStmt>
<publicationStmt>
<p>Publication Information</p>
</publicationStmt>
<sourceDesc>
<p>Information about the source</p>
</sourceDesc>
</fileDesc>
</teiHeader>
<text>
<body>
<p>Some text here.</p>
</body>
</text>
</TEI>
この時、以下の違いが気になりましたので、GPT4への問い合わせ結果を共有します。
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml"
schematypens="http://purl.oclc.org/dsdl/schematron"?>
回答
2行目と3行目の違いは、schematypens
属性に指定されている名前空間です。以下に詳細を説明します。
2行目
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-
href:
http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng
-
type:
application/xml
-
schematypens:
http://relaxng.org/ns/structure/1.0
この行は、TEI (Text Encoding Initiative) ドキュメントに対して RELAX NG スキーマを指定しています。RELAX NG はXML文書の構造を検証するためのスキーマ言語です。
3行目
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
-
href:
http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng
-
type:
application/xml
-
schematypens:
http://purl.oclc.org/dsdl/schematron
この行は、同じTEIドキュメントに対して Schematron スキーマを指定しています。Schematron はXML文書の内容を検証するためのスキーマ言語で、特にビジネスルールや他の複雑な条件の検証に使われます。
違いのまとめ
-
名前空間: 2行目は
http://relaxng.org/ns/structure/1.0
を使っており、RELAX NGスキーマを指します。一方、3行目はhttp://purl.oclc.org/dsdl/schematron
を使っており、Schematronスキーマを指します。 - 検証方法: 2行目のRELAX NGはXMLの構造を検証しますが、3行目のSchematronはXMLの内容やビジネスルールなどのより複雑な条件を検証します。
したがって、2行目は構造検証用、3行目は内容検証用のスキーマを指定しているという違いがあります。
参考
以下の記事も参考にしてください。
まとめ
参考になりましたら幸いです。
Discussion