前回HELPの10番目までを実際に実行して、英文を直訳で翻訳してみました。
ほとんどが、あまり使わないオプションだという事もわかったのですが、
今回もその続きをやってみたいと思います。
--load-trace
print trace of all external entities loaded
ロードされたすべての外部エンティティのトレースを印刷します
xmllint --load-trace sample.xml
Loaded URL="sample.xml" ID="(null)"
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<hoge>
<hage name="aaa" value="12345" a="1">DOG</hage>
<hage name="bbb" value="56789" b="2">CAT</hage>
</hoge>
レスポンスの1行目にある"Loaded"でURL(ファイルパス)とIDが表示されているのがポイントのようです。
IDはnullが入ったものしか見たことがないのですが、一体何が入るのでしょう?
--nonet
refuse to fetch DTDs or entities over network
ネットワーク経由でDTDまたはエンティティを取得することを拒否する
$ xmllint --nonet http://example.com/sample.xml
I/O error : Attempt to load network entity http://example.com/sample.xml
warning: failed to load external entity "http://example.com/sample.xml"
$ xmllint --nonet sample.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<hoge>
<hage name="aaa" value="12345" a="1">DOG</hage>
<hage name="bbb" value="56789" b="2">CAT</hage>
</hoge>
http経由の場合にエラーが出ますが、ローカルでは出ません。
--nocompact
do not generate compact text nodes
コンパクトテキストノードを生成しない
$ xmllint --nocompact sample.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<hoge>
<hage name="aaa" value="12345" a="1">DOG</hage>
<hage name="bbb" value="56789" b="2">CAT</hage>
</hoge>
コンパクトテキストノードはどのノードの事なんだろう???
--htmlout
output results as HTML
結果をHTMLとして出力
$ xmllint --htmlout sample.xml
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><title>xmllint output</title></head>
<body bgcolor="#ffffff"><h1 align="center">xmllint output</h1>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<hoge>
<hage name="aaa" value="12345" a="1">DOG</hage>
<hage name="bbb" value="56789" b="2">CAT</hage>
</hoge>
</body></html>
これは良い機能ですね。ブラウザシステムで使った時にタグで出力してくれて便利です。
でも、doctypeから記述されてしまうので、iframeで表示するしか、bodyをパースして使うかですね。
--nowrap
do not put HTML doc wrapper
HTMLドキュメントラッパーを入れない
$ xmllint --nowrap sample.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<hoge>
<hage name="aaa" value="12345" a="1">DOG</hage>
<hage name="bbb" value="56789" b="2">CAT</hage>
</hoge>
ドキュメントラッパーを入れていないのでテストコードでは分かりません・・・orz
--valid
validate the document in addition to std well-formed check
標準整形式チェックに加えて文書を検証する
$ xmllint --valid sample.xml
sample.xml:2: validity error : Validation failed: no DTD found !
<hoge>
^
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<hoge>
<hage name="aaa" value="12345" a="1">DOG</hage>
<hage name="bbb" value="56789" b="2">CAT</hage>
</hoge>
構文チェックしてくれます。
サンプルは"sample.xml:2: validity error : Validation failed: no DTD found !"と出てます。
ちゃんとxmlの仕様に準拠してないんですね。
--postvalid
do a posteriori validation, i.e after parsing
解析後、事後検証を行う
xmllint --postvalid sample.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<hoge>
<hage name="aaa" value="12345" a="1">DOG</hage>
<hage name="bbb" value="56789" b="2">CAT</hage>
</hoge>
validity error : no DTD found!
Document sample.xml does not validate
後検証です。
でも、"--valid"とは少し違うエラー内容なのが気になる〜。
--dtdvalid URL
do a posteriori validation against a given DTD
与えられたDTDに対して事後検証を行う
--dtdvalidfpi FPI
same but name the DTD with a Public Identifier
同じだが公開識別子でDTDを命名する
--timing
print some timings
いくつかのタイミングを印刷する
$ xmllint --timing sample.xml
Parsing took 23 ms
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<hoge>
<hage name="aaa" value="12345" a="1">DOG</hage>
<hage name="bbb" value="56789" b="2">CAT</hage>
</hoge>
Saving took 1 ms
Freeing took 0 ms
次回に続く・・・
今回も10オプションを調べてみましたが、"--dtdvalid"と"--dtdvalidfpi"はDTD検証なので、今回は検証を割愛します。
そして、まだまだたくさんあるサンプルですが、to be continued...という事で・・・
0 件のコメント:
コメントを投稿