xmllint学習 #4 helpを日本語化-2日目

2019年7月7日

xmllint テクノロジー プログラミング 特集

前回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...という事で・・・

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。