Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > Namespace prefix xs on element is not defined


Автор: Agentx86 24.11.2010, 18:25
Пытаюсь создать энтити в хмл схеме которая будет вставлять определенную строку или строки
XSD
Код

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd" [
    <!ENTITY listControlsWithoutTable "
      <xs:element name='activityIndicator' type='activityIndicator'></xs:element>
    ">
]>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="mvxml" type="mvxml"/>
 <xs:complexType name="screen">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      &listControlsWithoutTable;
      <xs:element name="fishboneLayout" type="fishboneLayout"/>
    </xs:choice>


  </xs:complexType>
</xs:schema>

У меня выпадает следующая ошибка namespace error : Namespace prefix xs on element is not defined. Судя по всему проблема в том что использую <xs:>  внутри entity. Помогите от этого избавиться.

Автор: Agentx86 25.11.2010, 19:09
Эту проблему поборол. Все изза валидатора. Слишком старый был. 
Но хотел бы данную задачу решить более красивым способом никак не получается. Код максимально обрезал. 
XSD
Код

  <xs:complexType name="viewControllers" abstract="true">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="switchView" type="switchView"/>
    </xs:choice>
  </xs:complexType>

 <xs:complexType name="screen">
    <xs:complexContent>
      <xs:extension  base="viewControllers">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="onWillAppear" type="command"/>
               ......................................
        </xs:choice> 
    </xs:complexContent>
  </xs:complexType>


Сама схема валидируется нормально. А вот xml файл по схеме не валидируется.
Код

 <screen title="Patient List">
    <switchView x="0%" y="0%" width="100%" height="100%">
   ...........................................


На строке с switchView выскакивает ошибка 
Description: cvc-complex-type.2.4.a: Invalid content was found starting with element 'switchView'. One of '{onWillAppear, ....}' is expected.

Я понимаю, что ошибка из-за наследования. Сначала пытается валидировать родительский тип, а там нет onWillAppear.
Как от этого можно избавиться? Или каким более правильным способом можно написать это? Мне надо создать один комплексный тип в котором будет определено около 10 элементов. И потом на базе этого типа создавать другие типы которые будут включать все предыдущие и добавлять свои.


Автор: Agentx86 30.11.2010, 14:50
Вторым способом решить невозможно. Только через Entity

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)