2014-02-11 6 views
0

Я пишу XSD для проверки этого XML:XSD: значение тега не должно быть пустым

<?xml version="1.0" encoding="utf-8"?> 
<data> 
    <index id="action">reception</index> 
    <index id="date">02102014</index> 
    <index id="heure">161144</index> 
    <index id="code">00069552 - 0076136 - 076135</index> 
    <index id="nb_pages">5</index> 
</data> 

Каждый тег индекса должен иметь идентификатор и значение. Я почти там, но я не могу добавить не пустое правило. Вот мой текущий XSD:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="data"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="index" minOccurs="5" maxOccurs="5"> 
      <xs:complexType> 
      <xs:simpleContent> 
       <xs:extension base="xs:string"> 
       <xs:attribute type="xs:string" name="id" use="required"/> 
       </xs:extension> 
      </xs:simpleContent> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

Благодаря

ответ

2

Вы можете ограничить длину элемента, через ограничение MINLENGTH:

<xs:element name="index" minOccurs="5" maxOccurs="5"> 
     <xs:complexType> 
     <xs:simpleContent> 
      <xs:extension base="xs:string"> 
      <xs:attribute type="xs:string" name="id" use="required"/> 
      <xs:minLength value="1"/> 
      </xs:extension> 
     </xs:simpleContent> 
     </xs:complexType> 
    </xs:element> 

Edit

Поспешное ответ, это правильный:

<xs:element name="data"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="index" minOccurs="5" maxOccurs="5"> 
       <xs:complexType> 
        <xs:simpleContent> 
         <xs:extension base="nonEmptyString"> 
          <xs:attribute type="xs:string" name="id" use="required"/> 
         </xs:extension> 
        </xs:simpleContent> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 
<xs:simpleType name="nonEmptyString"> 
    <xs:restriction base="xs:string"> 
     <xs:minLength value="1"/> 
    </xs:restriction> 
</xs:simpleType> 
+0

Я уже пробовал это, но я получаю ошибку, что XSD не является допустимым: aft.xsd: 11: элемент MINLENGTH: ошибка Schemas парсер: Элемент «{HTTP: // www.w3.org/2001/XMLSchema}extension ': содержимое недопустимо. Ожидается (аннотация ?, ((атрибут | attributeGroup) *, anyAttribute?)). Схема WXS aft.xsd не удалось скомпилировать – frinux

+1

@frinux да, моя ошибка, отредактировал мой ответ – parakmiakos

0

Как насчет:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:simpleType name="nonEmptyString"> 
    <xs:restriction base="xs:string"> 
     <xs:minLength value="1"/> 
    </xs:restriction> 
    </xs:simpleType> 
    <xs:element name="data"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element minOccurs="5" maxOccurs="5" name="index"> 
      <xs:complexType> 
      <xs:simpleContent> 
       <xs:extension base="nonEmptyString"> 
       <xs:attribute name="id" type="xs:string" use="required" /> 
       </xs:extension> 
      </xs:simpleContent> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 
Смежные вопросы