是否适合使用非ASCII(自然语言)XML标记?

时间:2010-05-20 11:31:20

标签: xml internationalization

使用以非ASCII自然语言编写的XML标记(元素名称)是否合适? XML规范允许它(请参阅NamesExceptions),但我在W3C和相关网页上找不到关于此的最佳做法。

我正在寻找的是关于哪些工具支持这一点的实用建议,XSLT和XForms等重要的XML相关技术是否可能存在问题等。

我认为安德烈和托马拉克错过了这一点。 XML不一定是程序员阅读的,它由许多不同的专业人士阅读。所以将它与源代码进行比较的论据并不一定适用。

让我澄清一下:我指的是一个保加利亚法律域名,其中许多术语是保加利亚法律程序特有的,甚至可能没有完全英文翻译。翻译它们将是费力的,不精确的和不切实际的。音译到ASCII是次优的。

回到这个问题:我将面临哪些工具限制? (Eclipse支持UTF,因此编写xpaths不会有问题。)

让人们从我想要的技术方向开始:在几个系统中,我们使用生成技术来确保XML模式,Java bean和数据库模式之间的完美对应。

7 个答案:

答案 0 :(得分:5)

如果文件的内容是保加利亚语,那么标记应该是。

如果您的工具链无法解析该语言的标签,那么您如何确定它正确处理内容?

程序员必须始终学习目标领域的语言,无论是金融,遗传,工程还是保加利亚法律体系。为方便程序员而破坏可用性几乎总是“坏事”。无论在前端节省了多少精力,都会因最终用户的生产力受阻以及产品生命周期内的支持工作量/成本而丢失。

答案 1 :(得分:3)

这是一个坏主意,因为在本地语言中给变量命名。对于大多数开发人员,您自动使程序无法读取。

答案 2 :(得分:2)

简短回答:您可以随意命名XML元素。

稍微长一点的回答:如果你想使用最便携/可维护的XML,你应该使用纯ASCII元素名称。我认为没有充分的理由在元素名称中使用其他字符,它肯定有助于在各种地方处理XML。

考虑使用某些编程语言处理XML节点,该编程语言不一定要使用UTF-8编码的源代码文件。例如,在这种语言中,编写有效的XPath表达式会很困难。或维护者/程序员,他们不会使用您的元素名称所在的语言,而是负责源代码。例如,当你的元素名称是用西里尔语脚本时,你可以自己锁定。元素名称应该带有结构和含义,并且没有明显的理由为此目的排除ASCII。

答案 3 :(得分:2)

以您喜欢的任何语言编写XML。确保编码支持您正在使用的字符集,并在XML处理指令中声明正确的编码。

这将有助于将支持XML的工具与声称这样做的工具分开,而实际上却没有。

答案 4 :(得分:1)

我很抱歉这样说,但如果您的非技术用户需要阅读原始XML,那么您的应用程序就会被破坏。并且您存储的数据通常不会与用户消息形成1-1对应关系:许多内容以冗余方式存储在XML上,而其他内容则隐含在数据中。

对我来说,我认为您应该使用UTF-8字符集将所有XML数据存储在保加利亚语中。但是在属性中,而不是在XML标记结构中。

我正在考虑这个问题:您可以设计您的程序,以便可以从用户界面(可能在特殊的“管理”面板上,但仍远离代码)自由修改任何法律结构,并且不硬编码到文件格式的方式。其原因是法律变更,法理学变革和法律条款也可能发生变化。 (好吧,有些人不这样做)

这可以让您创建一个相当通用的文件格式(考虑一下可以在美国或日本使用的文件格式 - 即使您不打算实际使用它,这样您更改设计一个灵活的文件格式会更大)

这可能更难。您需要准备好处理不一致,不完整或其他不良数据。但无论如何你应该这样做。而且您也可能获得奖励:文件格式可以更清晰,面向未来,使您的软件更加灵活。或者可能不是。请注意这里的mays,cans。这实际上取决于您的具体设计权衡。

当然,你需要在这里保持平衡。在一天结束时,设计一个可靠,灵活的系统的负担在你身上。您可以采用以保加利亚语编写标签的方法。我来自巴西,我觉得奇怪的是想到类似的东西,但它可以奏效。

关于您对工具限制的实际顾虑:我不知道。您应该首先查找您最喜欢的XML库的文档,看看它是否大胆声称支持它。即使是最常用的程序也可能不完全支持不常用的功能。

答案 5 :(得分:0)

这取决于您和您的开发规则。但是XML标签名称应该易于被所有人阅读和理解。即使是一个人在一段时间之后加入你也应该得到它。最好根据适当的命名约定命名它们。

检查以下示例。

<user name="hero">     
  <address>
     <street></street>    
  </address>    
</user>

感谢。

答案 6 :(得分:0)

  

我将面临哪些工具限制?

如果我没记错的话,XML名称中允许的字符集最初在XML 1.0和XML 1.1中是不同的,后者也允许一些以前被排除在外的东南亚脚本。 XML 1.0推荐的第五版(=最新版)发生了变化,现在允许的名称字符是相同的。因此,至少理论上一些声称与XML 1.0兼容的工具可能会遇到这些新允许字符的问题,如果它们检查名称字符有效性并且仅符合第四版XML 1.0。

但是在你的情况下,如果你只使用ASCII和保加利亚字符,这个问题仅仅是理论上的。