我需要将本地化添加到XML中的多种语言中。包含文本的标签称为“ saluto”,此刻看起来像:
<saluto>buon giorno</saluto>
为了添加新的翻译,我认为最紧凑的解决方案之一是使用属性来传递不同的翻译,因此我将避免标签重复:
<saluto IT="buon giorno" EO="bonan tagon" EN="good morning" CN="早安" PL="dzień dobry" />
问题在于,考虑到将来可以添加新的语言,而我不想更改XSD,如何编写允许这样做的XSD规则。可能吗?
我能想到的最紧凑的解决方案之一是使用属性来传递不同的翻译,因此我将避免标签重复
我要谦虚地建议,紧凑性虽然很不错,但不应成为您的主要考虑因素。如果紧凑性确实是最重要的标准,那么XML可能是文件格式的错误选择。
问题是如何编写允许这样做的XSD规则,考虑到将来可以添加新的语言,而我不想更改XSD
如果您在XSD中指定有效语言名称的列表,则任何新的语言名称都将无法针对XSD的v1进行验证。通常的解决方案是在出现新要求时扩展XSD。为什么对于您的用例而言,这不是可行的方法?
一种几乎紧凑的替代方法是:
<saluto lang="EN">Good morning</saluto>
lang
然后,可以通过简单的类型限制来指定属性的允许值列表,<xs:enumeration>
每种语言都可以使用一个限制。XSD的未来版本可能会简单地添加新的枚举。
最后,我使用了格式,以避免出现您提到的问题:<saluto lingua =“ IT”> Buon giorno </ saluto> <saluto lingua =“ EO”> Bonan tagon </ saluto> ...