XML用の~/.tidyrcファイルをどのように設定しますか?

XML用の~/.tidyrcファイルをどのように設定しますか?

tidyHTMLの代わりにXMLを解析するように設定するにはどうすればよいですか?

説明する
しばらく前に、同僚が私にtidyXMLを削除する技術を示しました。

明らかに、次のファイルを生成します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

これを追加した後も、~/.tidyrcXMLtidyではなくデフォルトの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それで、あなたがやろうとしているように、特定の設定ファイルを見つけるためにハードコーディングできるコンパイル時オプションがあるようです。

閲覧tidyRaggettページのオンライン文書私はこの紹介を見ました:

あるいは、「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ないことを確認しました。configureplatform.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"

引用する

関連情報