我的要求是要验证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验证实现?

有帮助吗?

解决方案

瑞克,

我有类似的问题在我们的应用程序来解决,而我们最好的解决办法是使用模块化架构。

具有Schema1和SCHEMA2是除了这是不同的部件相互重复的

因此,相反,您有Schema1和SCHEMA2,其中只包含不同的约束,并且两个进口共同Schema3限定被共享的约束

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

它不会给你一个XSD,但确实减少重复,因此它有助于维护并有助于避免错误中匍匐的可能性,当你有Schema1和SCHEMA2之间的大量重复。

在缺点是架构变得有点难度人类遵循,因为定义不同文件之间的分裂。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top