tidy
HTMLの代わりにXMLを解析するように設定するにはどうすればよいですか?
説明する:
しばらく前に、同僚が私にtidy
XMLを削除する技術を示しました。
明らかに、次のファイルを生成しますtidyrc
。
input-xml: yes
quiet: yes
indent: yes
indent-attributes: yes
indent-spaces: 4
char-encoding: utf8
wrap: 0
wrap-asp: no
wrap-jste: no
wrap-php: no
wrap-sections: no
これを追加した後も、~/.tidyrc
XMLtidy
ではなくデフォルトのHTMLに解析しようとします。
$ cat -v foo.out | tidy > foo.xml
line 3 column 1 - Error: <data> is not recognized!
line 3 column 1 - Warning: missing <!DOCTYPE> declaration
line 3 column 1 - Warning: discarding unexpected <data>
さまざまな権限を試しました。
[root@mongo-test3 tmp]# ls -ial ~
51562 -rw------- 1 root root 11550 Jul 16 02:17 .bash_history
50973 -rw-r--r-- 1 root root 18 May 1 00:40 .bash_logout
51538 -rw-r--r-- 1 root root 176 May 1 00:40 .bash_profile
51537 -rw-r--r-- 1 root root 124 May 1 00:40 .bashrc
51561 -rwxr-xr-x 1 root root 164 Jul 16 22:16 .tidyrc
ファイル名を指定して.tidyrc
からtidyrc
バージョン:
MacOSとCent 6.4の両方で試しました。
Mac OS X 10.8.4
Darwin spuders-macbook-pro 12.4.0 Darwin カーネルバージョン 12.4.0: 2013 年 5 月 1 日水曜日 17:57:12 PDT ルート: xnu-2050.24.15~1/RELEASE_X86_64 x86_64
セントOS 6.4
Linux mongo-test3 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
研究:
普通はこの技術を教えてくれた人に聞いてみますが、コミュニケーションがうまくいかなかったんですよ。
解決策:
回避策としてこの-xml
フラグを使用できますが、このフラグを使用することをお勧めしますtidyrc
。
$ cat -v foo.out | tidy -xml foo.xml
答え1
マニュアルページを見ると、次tidy
のメモを見ることができます。
デフォルト構成ファイルの名前。他のディレクトリからtidyを呼び出すことができるので、絶対パスでなければなりません。の値は、
HTML_TIDY
コンパイルされたデフォルト値(として定義)の後に解析されますが、-DTIDY_CONFIG_FILE
指定されたファイルが使用される前はです-config
。
tidy
それで、あなたがやろうとしているように、特定の設定ファイルを見つけるためにハードコーディングできるコンパイル時オプションがあるようです。
閲覧tidy
Raggettページのオンライン文書私はこの紹介を見ました:
あるいは、「HTML_TIDY」という環境変数を使用してデフォルトプロファイルの名前を指定することもできます。別のディレクトリで Tidy を実行しようとする可能性があるため、このパスは絶対パスである必要があります。 CONFIG_FILEをパス文字列として定義して、コンパイル時に設定ファイルを設定することもできます
platform.h
。を参照してください。
だから私はソースコードをダウンロードしtidy
てファイルの内部を見て、platform.h
次の行を見つけました。
/* #define TIDY_CONFIG_FILE "/etc/tidy_config.txt" */ /* original */
/* #define TIDY_CONFIG_FILE "/etc/tidyrc" */
/* #define TIDY_CONFIG_FILE "/etc/tidy.conf" */
/*
Uncomment the following #define if you are on a system
supporting the HOME environment variable.
It enables tidy to find config files named ~/.tidyrc if
the HTML_TIDY environment variable is not set.
*/
/* #define TIDY_USER_CONFIG_FILE "~/.tidyrc" */
C / C ++を知っている場合は、これらすべての行がコメントアウトされているため、tidy
実際にプロファイルを無効にするためのすべてのオプションがあります。また、Fedora 14システム用にビルドしているパッケージを再確認して、パッケージをビルドしたパッケージファイル形式()をオーバーライドするコマンドがtidy.spec
ないことを確認しました。configure
platform.h
そのため、インベントリではtidy
どのような構成ファイルも見つからないようです。
それでは、あなたの選択は何ですか?
tidy
その後、コマンドラインの一部として設定ファイルを提供できます。
$ ... | tidy -config ~/.tidyrc > foo.xml
tidy
また、上記で気付かなかったもう1つの機能、つまり環境変数を使用する機能を活用できますHTML_TIDY
。絶対パスである必要があるため、「~/.tidyrc」は使用できませんが、次のようにできます。
$エクスポートHTML_TIDY = "$ HOME / .tidyrc" $ cat -v foo.outきれい> foo.xml |
変数を永久に保持するには、ファイルに追加するだけです$HOME/.bashrc
。
export HTML_TIDY="$HOME/.tidyrc"