如何在XSD中验证语言属性



我有一个带有特定语言元素的XML文档,例如:

<root lang="en fr">
    <section>
        <title lang="en">English Title</title>
        <title lang="fr">French Title</title>
        <sequence>2</sequence>
        <field>
           <type>date</type> 
           <label lang="en">English field label</label>
           <label lang="fr">French field label</label>
        </field>
    </section>
    <section>
        <title lang="en">Another English Title</title>
        <title lang="fr">Another French Title</title>
        <sequence>1</sequence>
    </section>
</root>

在顶部,根元素用于声明文档定义了英语和法语信息。

文档中的某些元素需要以英语和法语提供,例如titlelabel,因为根元素声明支持这两种语言。

有可能在XMLSchema中表达这样的约束吗?我可以用不同的方式表达root元素语言属性,例如lang-en="1" lang-fr="1"(如果有帮助的话)。

在XSD 1.0中,不能表示这样的约束。

在XSD 1.1中,您可以使用xsd:assert,但它必须处于root级别。请参阅如何访问XSD断言XPath中的父元素获取如何使用every..in..satisfies XPath 2.0表达式进行断言的示例。

另请参阅XML设计注意事项中的一般i18n:XML文档模式

中的XML:lang

最新更新