尝试引用&符号:
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
答案 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;
}
如果mode
是OtherNamespace
,则&
字符不会更改。我还不知道,但是我猜想HTML5模式可能会更改名称空间的处理方式,使其始终处于OtherNamespace
模式下?