2013-09-04 2 views
1

В следующем примере вы можете видеть, что блоки Name, Roll и Adress повторяются. Можно ли объявить их как тип, а затем повторно использовать, а не повторять тот же код, что и раньше.Схема XSD: как ссылаться на блок?

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
<xs:element name="NameEntry"> 
    <xs:annotation> 
     <xs:documentation>Comment describing your root element</xs:documentation> 
    </xs:annotation> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="Asked"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element name="Name"/> 
         <xs:element name="Roll"/> 
         <xs:element name="Adress"/> 
        </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
      <xs:element name="Given"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element name="Name"/> 
         <xs:element name="Roll"/> 
         <xs:element name="Address"/> 
        </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 
</xs:schema> 

ответ

0

Это, как вы бы создать тип и использовать его:

<?xml version="1.0" encoding="utf-8" ?> 
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) --> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
    <xs:element name="NameEntry"> 
     <xs:annotation> 
      <xs:documentation>Comment describing your root element</xs:documentation> 
     </xs:annotation> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="Asked" type="ToReuse"/> 
       <xs:element name="Given" type="ToReuse"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:complexType name="ToReuse"> 
     <xs:sequence> 
      <xs:element name="Name"/> 
      <xs:element name="Roll"/> 
      <xs:element name="Adress"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

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

<?xml version="1.0" encoding="utf-8" ?> 
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) --> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
    <xs:element name="NameEntry"> 
     <xs:annotation> 
      <xs:documentation>Comment describing your root element</xs:documentation> 
     </xs:annotation> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="Asked"> 
        <xs:complexType> 
         <xs:group ref="ToReuse"/> 
        </xs:complexType> 
       </xs:element> 
       <xs:element name="Given"> 
        <xs:complexType> 
         <xs:group ref="ToReuse"/> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:group name="ToReuse"> 
     <xs:sequence> 
      <xs:element name="Name"/> 
      <xs:element name="Roll"/> 
      <xs:element name="Address"/> 
     </xs:sequence> 
    </xs:group> 
</xs:schema> 
Смежные вопросы