Xml 以xsd中的值为条件

Xml 以xsd中的值为条件,xml,xsd,xsd-validation,xsd-1.1,Xml,Xsd,Xsd Validation,Xsd 1.1,有没有办法在标记值上添加条件? 例如,我的xml如下所示: <Root> <Scheduler> <DateTimeType>DAY</DateTimeType> <DayOfWeek>Sunday</DayOfWeek> <!-- TAG IS ALLOWED --> </Scheduler> <Scheduler> <DateTimeType>MONTH

有没有办法在标记值上添加条件? 例如,我的xml如下所示:

<Root>
 <Scheduler>
  <DateTimeType>DAY</DateTimeType>
  <DayOfWeek>Sunday</DayOfWeek> <!-- TAG IS ALLOWED -->
 </Scheduler>

 <Scheduler>
  <DateTimeType>MONTH</DateTimeType>
  <DayOfWeek>Sunday</DayOfWeek> <!-- TAG IS NOT ALLOWED -->
  <DayOfMonth>28</DayOfMonth> <!-- TAG IS ALLOWED -->
 </Scheduler>

 <Scheduler>
  <DateTimeType>WEEKDAY</DateTimeType>
  <DayOfWeek>Sunday</DayOfWeek> <!-- TAG IS ALLOWED -->
  <TimeOfDay>15:26</TimeOfDay> <!-- TAG IS ALLOWED -->
  <DayOfMonth>28</DayOfMonth> <!-- TAG IS NOT ALLOWED -->
 </Scheduler>

 <Scheduler>
  <DateTimeType>TIME</DateTimeType>
  <DayOfWeek>Sunday</DayOfWeek> <!-- TAG IS NOT ALLOWED -->
  <DayOfMonth>28</DayOfMonth> <!-- TAG IS NOT ALLOWED -->
  <TimeOfDay>15:26</TimeOfDay> <!-- TAG IS ALLOWED -->
 </Scheduler>
</Root>

白天
星期天
月
星期天
28
周工作日
星期天
15:26 
28
时间
星期天
28
15:26 
我需要一个XSD方案,在xml中允许/不允许这些条件


谢谢。

如果DateTimeType是一个属性,那么可以使用条件类型分配方便地完成。但如果必须是子元素,则可以使用断言(例如)来实现

<xs:assertion test="not(DateTimeType = 'MONTH' and exists(DayOfWeek)"/>

顺便说一下,它们不是标签,而是元素。一个元素通常有两个标记,一个开始标记和一个结束标记。使用正确的术语有很多好处,例如,您会发现您开始更好地理解错误消息中使用的语言