在 XSD 中对 complexType 元素添加限制

Add a restriction to a complexType element in XSD

给定以下元素:

  <xsd:element name="abr">
    <xsd:annotation>
      <xsd:documentation>Abbreviaturen</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:choice maxOccurs="unbounded" minOccurs="0">
        <xsd:element ref="maj"/>
        <xsd:element ref="sup"/>
        <xsd:element ref="lin"/>
        <xsd:element ref="cap"/>
        <xsd:element ref="cif"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>

我想在标签 <abr> 内容中添加以下限制(拒绝空格):

  <xsd:restriction base="xsd:string">
    <xsd:pattern value="[^\r\n\t ]*"/>
  </xsd:restriction>

如何定义此限制才能有效?

该元素具有混合内容模型(允许子元素和文本)。 XSD 1.0 中没有机制来限制在具有混合内容的元素中的文本节点中可以出现的内容。您可以在 XSD 1.1 中使用断言来做到这一点。