根据 XSD 1.0 中的日期范围验证枚举?

问题描述

在 XSD 中,我想定义一个类型 Country包括一个设置可以使用的国家/地区名称列表的限制。 这可以通过使用枚举作为限制来轻松完成。

然而,这个列表会随着时间的推移而变化。例如:过去我们有不存在的南斯拉夫;克罗地亚、斯洛文尼亚等取而代之。 因此,一个国家/地区将有一个开始日期和(可能)一个结束日期。 StartDateEndDate 将设置每个特定国家的存在日期范围。

在验证 XML 时,我想验证 XML 是否引用现有国家/地区。 因此,XML 还将包含变量 ReferenceDate,用于检查 StartDate 和 EndDate。

实际上我想定义类型 Country 并设置属性 CountryNameStartDateEnddate。 例如,在使用值克罗地亚和 ReferenceDate 验证 XML 时,我想使用 XSD 中定义的类型 ReferenceDate 验证克​​罗地亚是否是日期 Country 的有效国家/地区。

鉴于我使用的是 XSD 1.0,对限制有什么想法吗?

解决方法

XSD 1.0

无法强制执行您的约束。

XSD 1.1

您可以编写断言以确保 current-date() 在 XML 实例文档中的值范围内。您不能对 XSD 中的类型给定的范围进行断言。

您所说的约束可能最好通过自定义应用程序代码来实施。

,

您可以考虑一个框架,该框架允许您生成适合特定日期的架构(通常通过将 XSLT 转换应用于某种元架构)。

例如,您的元模式本质上可以是一个 XSD 文件,其中任何元素都可以具有开始日期和结束日期属性,并且您可以使用 XSLT 轻松处理此问题以仅保留适用于特定日期的元素.

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...