2017-01-24 16 views
0

В файле XSD, как я могу ограничить значения элемента, содержащегося в значениях, определенных другим элементом? Другими словами, чтобы объявить определенное значение, он должен быть уже создан другим элементом.XSD - ограничивать значения элемента, содержащегося в значениях, определенных другим элементом

Например:

У меня есть список датчиков,

<SensorDefinitionList> 
    <SensorDefinition> 
    <Name>ROLK8900</Name> 
    <DisplayName>TRM1</DisplayName> 
    <Presence>YES</Presence> 
    <SensorId>40</SensorId> 
    <Coordinates>0,0</Coordinates> 
    </SensorDefinition> 
    <SensorDefinition> 
    <Name>JBLK7200</Name> 
    <DisplayName>JBLK</DisplayName> 
    <Presence>YES</Presence> 
    <SensorId>35</SensorId> 
    <Coordinates>0,0</Coordinates> 
    </SensorDefinition> 
    ... 
</SensorDefinitionList> 

и элемент, содержащий их распределение, например:

<SensorDistributionList> 
    <SensorDistribution> 
    <SensorDistributionId>0</SensorDistributionId> 
    <Name>System</Name> 
    <ListOfSensor>SDF</ListOfSensor> 
    </SensorDistribution> 
    <SensorDistribution> 
    <SensorDistributionId>3</SensorDistributionId> 
    <Name>MLAT</Name> 
    <ListOfSensor>MLAT</ListOfSensor> 
    </SensorDistribution> 
    ... 
</SensorDistributionList> 

В XSD, я хочу, чтобы обеспечить что имя SensorDistribution, которое я описываю, является именем датчика, ранее определенным в SensorDefinition. Как я могу написать свой XSD таким образом?

... 
<xs:element name="SensorDistributionList"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element maxOccurs="unbounded" name="SensorDistribution"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element name="SensorDistributionId" type="xs:integer" /> 
      <xs:element name="Name" type="xs:string" /> 
      <xs:element name="ListOfSensor" type="xs:string" /> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 
... 

ответ

0

Вы можете определить имя SensorDefinition, как xs:ID и использовать его в SensorDistribution.

 <xs:element maxOccurs="unbounded" name="SensorDefinition"> 
     <xs:complexType> 
      <xs:sequence> 
      ... 
      <xs:element name="Name" type="xs:ID" /> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 

     <xs:element maxOccurs="unbounded" name="SensorDistribution"> 
     <xs:complexType> 
      <xs:sequence> 
      ... 
      <xs:element name="Name" type="xs:IDREF" /> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 

Подробнее: Подробнее: