Restrict complexType with attributes in XSD?

前端 未结 1 1727
日久生厌
日久生厌 2020-12-21 17:27

I\'m working with an XSD such as:




        
相关标签:
1条回答
  • 2020-12-21 17:37

    In order to have an attribute on an element with restricted content, define a new xs:simpleType and then use xs:extension to extend it with an attribute:

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
               elementFormDefault="qualified">
    
      <xs:element name="algo">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="nota" type="t_algo" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    
      <xs:complexType name="t_algo">
        <xs:simpleContent>
          <xs:extension base="t_algo_content">
            <xs:attribute name="modul" type="t_modul"/>
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
    
      <xs:simpleType name="t_modul">
        <xs:restriction base="xs:string">
          <xs:pattern value="m0[0-9]"/>
        </xs:restriction> 
      </xs:simpleType> 
    
      <xs:simpleType name="t_algo_content">
        <xs:restriction base="xs:integer">
          <xs:minInclusive value="0"/>
          <xs:maxInclusive value="10"/>
        </xs:restriction>
      </xs:simpleType>
    
    </xs:schema>
    

    Note also that I've simplified your regex pattern in the first case and used minInclusive/maxInclusive to more naturally express your integer range in the second case.

    0 讨论(0)
提交回复
热议问题