验证基于XSD 1.0日期范围的枚举?



在XSD中,我想定义一个类型Country,包括设置可以使用的国家名称列表的限制。这可以很容易地通过使用枚举作为限制来实现。

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

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

实际上我想定义类型Country与属性CountryName,StartDateEnddate集。当使用(例如)值Croatia和ReferenceDate验证XML时,我想使用XSD中定义的类型Country来验证克罗地亚在日期ReferenceDate是否是一个有效的国家。

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

XSD 1.0

你的约束不能被强制执行。

XSD 1.1

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

您的约束可能最好通过自定义应用程序代码来执行。

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

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

相关内容

  • 没有找到相关文章

最新更新