0

有没有办法在标签值上添加条件?例如,我的 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>

我需要一个允许/不允许在我的 xml 中使用这些条件的 XSD 方案。

谢谢。

4

1 回答 1

1

如果 DateTimeType 是一个属性,则可以使用条件类型分配方便地完成此操作。但是如果它必须是一个子元素,你可以使用断言来做到这一点,例如

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

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

于 2014-09-04T10:19:54.180 回答