根据一个属性值进行XSD类型验证

时间:2011-06-15 20:02:55

标签: xml xsd

我记得,前段时间我有类似的XML:

<item type="Person" name="Pawel" Surname="Wu" />
<item type="Address" city="Sample town" address="Sample street etc." />

我想用XSD验证它。但是,上次我这样做(大约2年前我有这样的任务)根据属性值(在这个例子中类型)指定元素类型是不可能的。所以我被迫将XML结构重新设计成这样的东西:

<person name=..... />
<address city=..... />

写XSD是件小事。

今天,我有类似的问题。作为输入,我获得具有类型 attriibute的通用 item 元素的XML文档,后者根据此属性值,允许/不需要其他属性。该形状的文档仍然是在系统中手动创建的,所以我希望有一个XSD文档可以减少/消除错误(很容易忘记 type =“personalDetails”元素 item 必须设置特定的属性集合。

是否可以编写XSD架构来验证此类文档?

谢谢,帕维尔

2 个答案:

答案 0 :(得分:2)

您无法根据attributevalue进行验证。但是,您可以使用xsi:type指定XML实例中元素的类型。 Clickclick

答案 1 :(得分:1)

您可以使用XSD 1.1执行此操作,目前在Xerces和Saxon中实现(即尚未广泛使用)。

处理像这样的通用词汇表验证的一种方法是在验证之前对其进行转换,即。将<attribute name="size" value="23">转换为<size>23</size>