以前参与某标准工作组的工作时,XML标签使用中文还是英文是一个经常的话题和争论焦点。从实现角度来看待这个问题,会倾向于使用英文(我个人一直这样坚持)。虽然XML标准要求解析器实现必须支持Unicode,但是不能完全做到支持甚至完全不支持中文XML标签的实现到处都是。如果你的XML文档的目标用户是全球的,那么标签使用ASCII字符是最保险的方式。
强烈要求使用中文的理由一般来说有以下几个:
中文易读(针对国人来说,这是从国情出发:),具有中国特色;
与其他国家或组织交流时,能增加筹码(用中文制定,意味着自主产权的性质更甚一些);
能增强国内厂家竞争力(这点基于国内厂家应该更强于中文处理的假设,虽然该假设很难成立);
……
我认为这些林林总总的理由并不充分。考虑易读性时,标签使用中文还是英文影响并不是很大。只要XML内容(标签内容,属性内容,注释等等)为本地化语言(应该这样),就可以基本保证XML文档的可读性。以可读性的一点小折扣来换取实现上的保证,是完全可以接受的。使用中文标签,也并不意味着自主产权,因为市面上简单翻译一下国个现有成果便洋为中用的例子并不少。最后,我对国内厂家在中文处理上的竞争优势也表示怀疑(我们甚至没有能拿得出手的成熟的XML解析器;某新闻机构在内部使用XML作为稿件格式,因为该格式使用中文标签,在实施中遇到许多困难)。
从技术角度来讲,Effective XML: 50 Specific Ways to Improve Your XML一书的Item 2 Mark Up with ASCII if Possible和Item 38 Write in Unicode很好地讨论了这个问题。我深切地同意作者以下两种观点:
ASCII is still the best choice for markup (that is, element names, attribute names, and so on), especially markup that needs to be shared among many different developers with many cultures and languages. The simple fact is that English and ASCII are the lowest common denominator for technical communication around the world.
However, the situation is very different for content; that is, for PCDATA and attribute values. Here, the text must be highly localized.
当然,任何事物都不是绝对的。如果你的应用限于小范围、或是应用于完全的中文环境,且手头又有一个支持度很高的解析器(还要保证客户环境也能达到这些要求),那么使用中文标签也是可行的。一些朋友确实喜欢读完全汉化的XML文档,如果能做到,又何乐而不为呢:)