Como posso configurar o arquivo ~ / .tidyrc para XML?

2

Como você configura tidy para analisar XML em vez de HTML?

Explicação :
Um tempo atrás, um colega de trabalho me mostrou um truque para usar o tidy para limpar o XML.

Aparentemente, você cria um arquivo tidyrc da seguinte forma:

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

Mesmo depois de adicionar isso a ~/.tidyrc , tidy ainda está tentando analisar como o HTML padrão, e não XML:

$ 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>

Eu tentei várias permissões:

[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

Eu tentei nomear o arquivo .tidyrc e apenas tidyrc

Versões :
Eu tentei isso no MacOS e no Cent 6.4

Mac OSX 10.8.4

Darwin spuders-macbook-pro 12.4.0 Darwin Kernel Version 12.4.0: Wed May 1 17:57:12 PDT 2013; root:xnu-2050.24.15~1/RELEASE_X86_64 x86_64

CentOS 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

Pesquisa :
Normalmente eu perguntaria à pessoa que me ensinou esse truque, mas eles são incomunicáveis.

Solução alternativa :
Como solução, posso usar o -xml flag, mas eu preferiria obter o tidyrc working:

$ cat -v foo.out | tidy -xml foo.xml
    
por spuder 17.07.2013 / 00:28

1 resposta

1

Se você procurar na página de manual por tidy , verá um comentário que diz o seguinte:

Name of the default configuration file. This should be an absolute path, since you will probably invoke tidy from different directories. The value of HTML_TIDY will be parsed after the compiled-in default (defined with -DTIDY_CONFIG_FILE), but before any of the files specified using -config.

Portanto, parece que tidy tem uma opção de tempo de compilação, onde pode ser difícil codificar para procurar por arquivos de configuração específicos, como você está tentando fazer.

Analisando algumas das documentações on-line da Raggett do tidy , deparei-me com esta sinopse:

Alternatively, you can name the default config file via the environment variable named "HTML_TIDY". Note this should be the absolute path since you are likely to want to run Tidy in different directories. You can also set a config file at compile time by defining CONFIG_FILE as the path string, see platform.h.

Então, depois de baixar a fonte para tidy e olhar dentro do arquivo platform.h , encontrei as seguintes linhas:

/* #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" */

Se você conhece C / C ++, todas essas linhas estão comentadas, então, com efeito, o tidy que eu tenho tem todas as opções para fazer uso de um arquivo de configuração desabilitado. Eu também verifiquei duas vezes o pacote que foi criado para o meu sistema Fedora 14 para ter certeza de que o arquivo de pacote no qual o pacote foi construído ( tidy.spec ) não tinha nenhum comando configure que substituiria as configurações acima na% código%. Eu não encontrei tais substituições.

Portanto, parece que o arquivo platform.h não tem a capacidade de procurar um arquivo de configuração de qualquer tipo.

Então, quais são suas opções?

Bem, você ainda pode fornecer tidy do arquivo de configuração como parte da linha de comando:

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

Além disso, você pode usar outro recurso de tidy que pode ter passado despercebido acima, sua capacidade de usar uma variável de ambiente tidy . Ele precisa ser um caminho absoluto, então você não pode usar "~ / .tidyrc", mas você pode fazer isso:

$ export HTML_TIDY="$ HOME / .tidyrc" $ cat -v foo.out | arrumado > foo.xml

Se você quiser tornar essa variável permanente, basta adicioná-la ao seu arquivo HTML_TIDY :

export HTML_TIDY="$HOME/.tidyrc"

Referências

por 17.07.2013 / 04:47

Tags