1

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

但是,随着时间的推移,这个列表会有所不同。例如:过去我们有南斯拉夫,现在已经不存在了;克罗地亚、斯洛文尼亚等出现了。因此,一个国家/地区将有一个开始日期和(可能)一个结束日期。StartDate并将EndDate设置每个特定国家/地区的存在日期范围。

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

其实我想Country用属性定义类型CountryNameStartDate然后Enddate设置。在验证 XML 时,例如值克罗地亚,ReferenceDate我想使用XSD 中定义的ReferenceDate类型来验证克罗地亚是否是 date 的有效国家。Country

考虑到我使用的是 XSD 1.0,有什么想法吗?

4

2 回答 2

0

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

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

于 2021-02-10T16:20:11.887 回答
0

XSD 1.0

您的约束无法强制执行。

XSD 1.1

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

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

于 2021-02-10T14:05:34.193 回答