0

我的要求是使用两种不同的验证策略来验证 xml。在策略 1 中,xml 需要具有具有某些必需属性的元素的实例。在策略 2 中,xml 需要具有具有不同必需属性的相同元素的实例。因此,想法是同一元素有两组不同的集合,每个集合具有不同的所需属性集。有没有办法只使用一个 xsd 来验证这一点。到目前为止,我唯一的解决方案是使用两个不同的 xsd 文件进行验证。

示例 1:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <element firstName="something"/> <!--required -->
    <element lastName="something"/> <!-- required -->
 <element phoneNumber="something"/> <!-- not required -->
<root>

示例 2:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <element firstName="something"/> <!-- not required -->
    <element lastName="something"/> <!-- required -->
 <element phoneNumber="something"/> <!-- required -->
<root>

可以通过xsd验证吗?

4

1 回答 1

0

瑞克,

我在我们的应用程序中遇到过类似的问题需要解决,而我们最好的解决方案是使用模块化模式。

因此,除了不同的部分之外,Schema1 和 Schema2 不是彼此重复的,而是 Schema1 和 Schema2 仅包含不同的约束,并且都导入了定义共享约束的通用 Schema3。

如何做到这一点的一个例子是here

它不会为您提供单个 XSD,但它确实减少了重复,因此它有助于可维护性,并有助于避免在 Schema1 和 Schema2 之间存在大量重复时出现错误的可能性。

缺点是模式对人类来说变得有点难以理解,因为定义是在不同的文件之间分割的。

于 2010-10-30T03:20:24.343 回答