Ограничить значения элемента на основе атрибута - PullRequest
1 голос
/ 04 марта 2010

Я хочу ограничить тип элемента на основе значения атрибута, например:

<Тип данных = "десятичный"> 44,00

<Тип данных = "дата"> 2008-02-01

Можно ли определить схему, которая это делает?

1 Ответ

0 голосов
/ 08 марта 2010

Общеизвестно, что XML-схема не может этого сделать,

проверка элемента на основе другого элемента рассматривается как неоднозначная, поэтому невозможна.Но если вы хотите, вы можете проверить оба типа данных, игнорируя условную проверку, что-то вроде этого:

Определите новый тип данных с пользовательским именем и скопируйте и вставьте шаблон, написанный ниже.

  <xs:simpleType name="new_type">
    <xs:restriction base="xs:string">
      <xs:pattern value="(([0-9]+)[.]([0-9]+))|(([0][1-9]|[1][0-2])/([0][1-9]|[1-2][0-9]|[3][0-1])/[1-2][0-9][0-9][0-9])"/>
    </xs:restriction>
  </xs:simpleType>

Это будет принимать данные типа decimal или date, но вы не можете проверить их с помощью значений атрибута,

Альтернативное решение - использовать Schematron, но вы не станете таким удобным и удобным для пользователя.удобный инструмент для этого, как вы получаете в случае XSD и XSLT.

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