Xml xsd:为给定标记定义一个(非预定义)属性数组

Xml xsd:为给定标记定义一个(非预定义)属性数组,xml,xsd,Xml,Xsd,我需要将本地化添加到XML中的多种语言中。 包含文本的标记称为“Saleto”,此时它看起来像: <saluto>buon giorno</saluto> buon giorno 为了添加新的翻译,我认为最紧凑的解决方案之一是使用属性传递不同的翻译,因此我将避免标记重复: <saluto IT="buon giorno" EO="bonan tagon" EN="good morning" CN="早安" PL="dzień dobry" /> 考虑

我需要将本地化添加到XML中的多种语言中。 包含文本的标记称为“Saleto”,此时它看起来像:

<saluto>buon giorno</saluto>
buon giorno
为了添加新的翻译,我认为最紧凑的解决方案之一是使用属性传递不同的翻译,因此我将避免标记重复:

<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
的允许值列表可以在一个简单的类型限制中指定,每个语言有一个
。XSD的未来版本可以简单地添加新的枚举。

最后我使用了这种格式,以避免您提到的问题:Buon giorno Bonan tagon。。。