RELAX NG スキーマでのアノテーション(注釈)とは、RELAX NG 名前空間 ("http://relaxng.org/ns/structure/1.0") に属さない要素や、NULL 名前空間 ("") に属さない属性のことを指します。 これは、それらがスキーマ定義としては意味を持たないため、コメントとして扱えるからです。
単純化のプロセスでは、まず最初にこれらの要素・属性が除去されます。
RELAX NG 名前空間に属さない要素を除去する
- 対象ノード
- //*[namespace-uri() != "http://relaxng.org/ns/structure/1.0"]
- 操作
- 除去する。
サンプル
<element name="aaa" xmlns="http://relaxng.org/ns/structure/1.0"> <html xmlns="http://www.w3.org/1999/xhtml"> <body>abc</body> </html> <text/> </element>
<element name="aaa" xmlns="http://relaxng.org/ns/structure/1.0"> <text/> </element>
NULL 名前空間に属さない属性を除去する
- 対象ノード
- //@*[(namespace-uri() != "")]
- 操作
- 除去する。
サンプル
<attribute name="xxx" xlink:href="abc" xmlns:xlink="http://www.w3.org/1999/xlink/">
<attribute name="xxx" xmlns:xlink="http://www.w3.org/1999/xlink/"/>
注意
- RELAX NG 名前空間に属する属性があった場合、そのスキーマは XML 文書として妥当ではありません。
- 名前空間宣言は除去されません。 後に QName の名前空間を解決するために用いられる可能性があります。
事後条件
この操作が終わった後には、次の条件が満たされている必要があります: