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

이것을 추가한 후에도 여전히 ~/.tidyrcXML tidy이 아닌 기본 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 모두에서 시도했습니다.

맥 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없는지 확인했습니다 .configureplatform.h

따라서 인벤토리에서는 tidy어떤 종류의 구성 파일도 찾을 수 없는 것 같습니다.

그렇다면 당신의 선택은 무엇입니까?

tidy그런 다음 명령줄의 일부로 구성 파일을 제공할 수 있습니다 .

$ ... | tidy -config ~/.tidyrc > foo.xml

tidy또한 위에서 눈치채지 못한 또 다른 기능, 즉 환경 변수를 사용하는 기능을 활용할 수 있습니다 HTML_TIDY. 절대 경로여야 하므로 "~/.tidyrc"를 사용할 수 없지만 다음과 같이 할 수 있습니다.

$ 내보내기 HTML_TIDY="$HOME/.tidyrc" $ cat -v foo.out 깔끔한> foo.xml |

변수를 영구적으로 유지하려면 파일에 추가하면 됩니다 $HOME/.bashrc.

export HTML_TIDY="$HOME/.tidyrc"

인용하다

관련 정보