如何在XSD中同时限制元素内容和定义属性

时间:2015-09-28 14:54:59

标签: xml xsd xml-validation

我正在尝试在XSD中向复杂类型元素添加限制。当我使用XML Notepad 2007验证XML文件时,我正在尝试使用minInclusive value =“0.00034”和maxInclusive value =“99”来添加边界。我搜索了存档并且很难时间与添加限制的位置的语法。任何帮助表示赞赏。

<xsd:element name="R-value">
    <xsd:annotation>
        <xsd:documentation>Resistance of material</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
        <xsd:simpleContent>
            <xsd:extension base="xsd:decimal">
                <xsd:attribute name="unit" type="resistanceUnitEnum" use="required"/>
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>
</xsd:element>

1 个答案:

答案 0 :(得分:0)

定义一个类型以涵盖您的限制,然后扩展该类型以添加​​到您的属性中:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:simpleType name="R-value-content-type">
    <xsd:restriction base="xsd:decimal">
      <xsd:minInclusive value="0.00034"/>
      <xsd:maxInclusive value="99"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:element name="R-value">
    <xsd:annotation>
      <xsd:documentation>Resistance of material</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="R-value-content-type">
          <xsd:attribute name="unit" use="required"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>  
</xsd:schema>