このツールが検査するもの
整形式であること。仕様が「構文として XML である」ことを指して使う語です。
- 根要素がちょうど一つであること。
- 各タグが閉じられ、開いた順に閉じられていること。
- 属性値が引用符で囲まれ、同じ要素に同じ属性が重複しないこと。
- 要素名と属性名が適法に始まり、適法な文字だけからなること。
- 実体参照と数値文字参照が正しく書かれていること。
- XML が禁じる文字を含まないこと。
通れば根要素と文書の大きさを返します。通らなければ、解析器が諦めた行と桁とともにその申し立てを返します。
整形式は妥当ではない
XML 仕様ではこれは別の語で、混同すると実際に時間を失います。
| 検査する対象 | |
|---|---|
| 整形式 | 構文——このツールが見るもの |
| 妥当 | 構文とスキーマ(DTD、XSD、RELAX NG) |
文書は非の打ちどころなく整形式でありながら、肝心なところがすべて誤っていることがあります。必須要素の欠落、位置の誤り、小数と宣言された場所の <price>banana</price>。この報告はそれについて何も言いませんし、整形式の検査器であればどれも言えません。
必要なのがスキーマ検証なら、スキーマそのものと、それを読む道具が要ります。
DOCTYPE はたどらない
<!DOCTYPE> の参照は URL です。解決すれば外向きの要求が出て、この文書の存在と閲覧者を知らせることになります。ここではブラウザから何も出ません。DOCTYPE は構文として検査し、そのまま残します。
外部実体を使う攻撃がここで問題にならないのも同じ理由です。どこかを指す実体は決して取りに行きません。
前置きの処理命令は問題ない
根要素の前の <?xml-stylesheet href="style.xsl"?> はごく普通の妥当な XML です。報告は命令ではなく本当の根要素を名指しします。
強制される順序の規則は仕様のそれだけです。XML 宣言があるなら先頭に来ること。それ以外の位置ではもはや宣言ではなく xml という名前の処理命令であり、その名前は予約されています。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。