XSD - сделать набор элементов уникальным - PullRequest
0 голосов
/ 26 октября 2018

У меня есть набор элементов, которые в целом должны быть уникальными, и я не знаю, как чтобы проверить это в моем xsd.

<xs:element name="PLUGIN_PRIMAR_KEY">
<xs:complexType>
    <xs:sequence>
        <xs:element name="IID_INTERFACE_ID">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="DATA1"/>
                    <xs:element name="DATA2"/>
                    <xs:element name="DATA3"/>
                    <xs:element name="DATA4">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="BYTE0"/>
                                <xs:element name="BYTE1"/>
                                <xs:element name="BYTE2"/>
                                <xs:element name="BYTE3"/>
                                <xs:element name="BYTE4"/>
                                <xs:element name="BYTE5"/>
                                <xs:element name="BYTE6"/>
                                <xs:element name="BYTE7"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>   
                </xs:sequence>
            </xs:complexType>
        </xs:element>
        <xs:element name="UI64_VERSION"/>
    </xs:sequence>
</xs:complexType>

Например, все элементы в "IID_INTERFACE_ID" могут быть одинаковыми, но если элемент "UI64_VERSION" не совпадает, его следует считать действительным.

Пример ниже недействителен, потому что все внутренние элементы двух разных <PLUGIN_PRIMAR_KEY> имеют одинаковые значения:

<PLUGIN_PRIMAR_KEY>
  <IID_INTERFACE_ID>
    <DATA1>29e4223c</DATA1>
    <DATA2>2d64</DATA2>
    <DATA3>45b4</DATA3>
    <DATA4>
      <BYTE0>94</BYTE0>
      <BYTE1>d9</BYTE1>
      <BYTE2>bd</BYTE2>
      <BYTE3>fa</BYTE3>
      <BYTE4>fd</BYTE4>
      <BYTE5>e3</BYTE5>
      <BYTE6>b1</BYTE6>
      <BYTE7>07</BYTE7>
    </DATA4>
  </IID_INTERFACE_ID>
  <UI64_VERSION>0000000000000000</UI64_VERSION>
</PLUGIN_PRIMAR_KEY>
<PLUGIN_PRIMAR_KEY>
  <IID_INTERFACE_ID>
    <DATA1>29e4223c</DATA1>
    <DATA2>2d64</DATA2>
    <DATA3>45b4</DATA3>
    <DATA4>
      <BYTE0>94</BYTE0>
      <BYTE1>d9</BYTE1>
      <BYTE2>bd</BYTE2>
      <BYTE3>fa</BYTE3>
      <BYTE4>fd</BYTE4>
      <BYTE5>e3</BYTE5>
      <BYTE6>b1</BYTE6>
      <BYTE7>07</BYTE7>
    </DATA4>
  </IID_INTERFACE_ID>
  <UI64_VERSION>0000000000000000</UI64_VERSION>
</PLUGIN_PRIMAR_KEY>

Но если хотя бы один элемент имеет другое значение, оно будет действительным:

<PLUGIN_PRIMAR_KEY>
  <IID_INTERFACE_ID>
    <DATA1>29e4223c</DATA1>
    <DATA2>2d64</DATA2>
    <DATA3>45b4</DATA3>
    <DATA4>
      <BYTE0>94</BYTE0>
      <BYTE1>d9</BYTE1>
      <BYTE2>bd</BYTE2>
      <BYTE3>fa</BYTE3>
      <BYTE4>fd</BYTE4>
      <BYTE5>e3</BYTE5>
      <BYTE6>b1</BYTE6>
      <BYTE7>07</BYTE7>
    </DATA4>
  </IID_INTERFACE_ID>
  <UI64_VERSION>0000000000000000</UI64_VERSION>
</PLUGIN_PRIMAR_KEY>
<PLUGIN_PRIMAR_KEY>
  <IID_INTERFACE_ID>
    <DATA1>29e4223c</DATA1>
    <DATA2>2d64</DATA2>
    <DATA3>45b4</DATA3>
    <DATA4>
      <BYTE0>94</BYTE0>
      <BYTE1>d9</BYTE1>
      <BYTE2>bd</BYTE2>
      <BYTE3>fa</BYTE3>
      <BYTE4>fd</BYTE4>
      <BYTE5>e3</BYTE5>
      <BYTE6>b1</BYTE6>
      <BYTE7>07</BYTE7>
    </DATA4>
  </IID_INTERFACE_ID>
  <UI64_VERSION>0000000000000001</UI64_VERSION>
</PLUGIN_PRIMAR_KEY>

Элемент PLUGIN_PRIMAR_KEY встроен в некоторый элемент ohter, который содержит один набор данных.

Спасибо за помощь заранее, TinTin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...