我听说使用单引号括住 XML 属性值是一种“糟糕的风格”。这是正确的吗?
我应该总是写:
<element attr="value">
或者可以这样写:
<element attr='value'>
或者我使用哪种风格并不重要?
两者都是合法的。选择一个并坚持下去。没关系。
来自规格:
AttValue ::= '"' ([^<&"] | Reference)* '"'
| "'" ([^<&'] | Reference)* "'"
显示两者都是有效的,就像在元素中混合两种样式一样,每个属性(尽管我建议在任何单个文档/文档集中保持一致)。
双引号更常见,对于任何特定社区来说,为了一致性而采用一种内部风格是完全可以接受的,但是笼统地声明一种方法更好是没有道理的。
提出这样的建议也是危险的,因为它会鼓励“绝望的 Perl 黑客”尝试使用正则表达式而不是使用真正的 XML 解析器来解析 XML,并且总是只能成功处理 XML 合法允许的子集。
如果我从 Java 应用程序手动生成 XML,为了方便起见,我倾向于使用单引号 - 尽管我越来越倾向于认为手动生成 XML 几乎与手动解析 XML 一样危险。
更喜欢双引号的一个原因是 Canonical XML 使用双引号而不是单引号。引用建议:
XML 文档的“规范形式”是通过本规范中描述的方法生成的文档的物理表示。以下列表总结了这些更改:[...]
属性值分隔符设置为引号(双引号)
- [...]