Tidy没有引用&符号

时间:2017-11-08 11:24:39

标签: tidy

尝试引用&符号:

echo 'a & b' | tidy -q --quote-ampersand yes --preserve-entities no --show-body-only yes

结果:

a & b

期待:

a & b

整洁版:

tidy -v
HTML Tidy for Linux version 5.2.0

1 个答案:

答案 0 :(得分:0)

我发现,当我将某些文档从XHTML移到HTML5时,HTML Tidy开始将所有&更改为裸&,而忽略了quote-ampersand选项。

作为一种解决方法,使用input-xml选项强制使用XML模式。


我自己仍然想要一个适当的解决方案。我仔细研究了代码,发现了这个可能相关的代码段(from pprint.c on Github):

if ( c == '&' && cfgBool(doc, TidyQuoteAmpersand)
     && !cfgBool(doc, TidyPreserveEntities)
     && ( mode != OtherNamespace) ) /* #130 MathML attr and entity fix! */
{
    AddString( pprint, "&" );
    return;
}

如果modeOtherNamespace,则&字符不会更改。我还不知道,但是我猜想HTML5模式可能会更改名称空间的处理方式,使其始终处于OtherNamespace模式下?