Как сделать ограничения на сложный тип XML-схемы? - PullRequest
3 голосов
/ 03 мая 2010

Я читаю учебные пособия в w3cschools (http://www.w3schools.com/schema/schema_complex.asp), но в них, похоже, не упоминается, как можно добавить ограничения на сложные типы.

Как, например, у меня есть эта схема.

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Теперь я хочу убедиться, что имя не длиннее 10 символов. Как мне это сделать?

Я попытался ввести простой тип для имени, но там написано, что я не могу этого сделать, поскольку использую сложный тип.

Итак, как мне установить подобные ограничения на файл, чтобы люди, которым я даю схему, не пытались ввести имя в 100 символов.

Ответы [ 2 ]

5 голосов
/ 03 мая 2010

Есть некоторые ограничения, которые вы можете иметь с XSD:

Допустим, вы хотите, чтобы firstName длиной не более 10 символов.Вы будете использовать что-то вроде:

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="10"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Для более сложных ограничений, я думаю, вам придется выполнить некоторую проверку на основе кода.

3 голосов
/ 03 мая 2010
<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="10"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Это решает вашу проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...