独特的XML属性组合

时间:2014-04-02 09:56:47

标签: xml xsd-validation

如果元素值的组合是唯一的,可以通过模式验证吗?

有效:

<Hardware ID="1">
  <COMPort>COM1</COMPort>
  <BaudRate>9600</BaudRate>
</Hardware>
<Hardware ID="2">
  <COMPort>COM2</COMPort>
  <BaudRate>9600</BaudRate>
</Hardware>
<Hardware ID="3">
  <COMPort>COM1</COMPort>
  <BaudRate>115200</BaudRate>
</Hardware>

无效:

<Hardware ID="1">
  <COMPort>COM1</COMPort>
  <BaudRate>9600</BaudRate>
</Hardware>
<Hardware ID="2">
  <COMPort>COM2</COMPort>
  <BaudRate>9600</BaudRate>
</Hardware>
<Hardware ID="3">
  <COMPort>COM1</COMPort>
  <BaudRate>9600</BaudRate>
</Hardware>

此代码无效,因为comport和baudrate的组合不是唯一的。

1 个答案:

答案 0 :(得分:2)

是的,可以:在Hardware元素的父元素声明上,使用类似

的内容
<xs:unique name="u">
  <xs:selector xpath="Hardware"/>
  <xs:field xpath="COMPort"/>
  <xs:field xpath="BaudRate"/>
</xs:unique>