XSD:Either/Or语法

Ian*_*oyd 2 xml xsd switch-statement

如何在XSD中进行/或验证?例如,在下面的xml片段中,如果actionA(add),则后续属性和元素是required:

<Post postID="22793" action="A" ...>
   <Transaction ...>
      <Disposition ...>
         <AccountInformation ... />
         <ThirdPartyInformation ... />
      </Disposition>
      <IndividualInformation ... />
   </Transaction>

   ...
</Post>
Run Code Online (Sandbox Code Playgroud)

但是如果动作D则禁止后续属性和属性::

<Post postID="22793" action="D" />
Run Code Online (Sandbox Code Playgroud)

即:如果操作delete(D),则其余属性将从中更改

  • 需要

  • 被禁止

并且后续元素从中切换

minOccurences="1" maxOccurrences="unbounded"
Run Code Online (Sandbox Code Playgroud)

minOccurrences="0" maxOccurrences="0"
Run Code Online (Sandbox Code Playgroud)

是否可以使用XSD来定义xml结构?

Jon*_*n W 5

XSD的一个主要批评是它没有成功

...没有提供任何设施来声明一个属性的值或存在依赖于其他属性的值或存在(所谓的共现约束).

所以它不能像你描述的那样指定约束.在大多数情况下,我看到项目使用XSLT来验证XSD失败的文档.但是,确实存在其他Schema语言,您可能会获得更多成功.我听说有些人出于各种原因改用Relax NG.