2015-09-04 112 views
0

我有一个需要使用模式,通过一个漂亮的刚性验证去的XML。 问题在于某些元素的某些属性只有在“type”属性具有某个值时才需要。基于其他属性的属性条件存在值

例如:

<someElement type="foo" att1="bla" /> 
<someElement type="bar" att1="blu" /> 

在我的情况下,type="foo"应该验证罚款,但对于type="bar"它不应该,因为“栏中的”其他属性att2必须存在。

这种事情甚至可以使用模式,或者我需要声明一个新的complexType而不是<someElement>,它只会允许我需要的东西?

我尝试了“类似的问题”一节,但无法找到的东西,专门解决这个问题。

回答

1

你所描述什么是非常精确匹配的XSD 1.1“条件类型分配”机制(其中一个属性的值是用来决定对其验证这几种类型的)。

有没有在XSD 1.0这样的方式。

+0

有如何被实现的地方的例子?我尝试阅读XSD规范,这让我哭了起来。 –

+0

有一些介绍性的教程,例如http://www.ibm.com/developerworks/xml/library/x-xml11pt2/。对不起,我误导你的搜索引擎错误:它是“条件类型分配”。 (编辑来纠正它)。 –

+1

如果有任何安慰,我认为XSD规范是自Algol 68报告以来我读到的最困难的事情;显着差异在于Algol 68中的形式主义确实有效,而即使您掌握了XSD规范,您也会发现很多问题没有得到答案。 –