2013-12-09 3 views
1

У меня есть следующие XSD:Как использовать xml: lang в xsd/xml?

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns="http://www.vibrogym.com/schema" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     targetNamespace="http://www.vibrogym.com/schema" 
     elementFormDefault="qualified" > 

    <xs:import schemaLocation="http://www.w3.org/2001/xml.xsd" 
       namespace="http://www.w3.org/XML/1998/namespace"/> 

    <xs:complexType name="localizedNameType"> 
     <xs:simpleContent> 
      <xs:extension base="xs:string"> 
       <xs:attribute ref="xml:lang" use="required"/> 
      </xs:extension> 
     </xs:simpleContent> 
    </xs:complexType> 

    <xs:element name="exercise"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="name" 
          type="localizedNameType" 
          minOccurs="1" 
          maxOccurs="unbounded"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

</xs:schema> 

И следующий XML:

<?xml version="1.0" encoding="UTF-8"?> 
<exercise xmlns="http://www.vibrogym.com/schema"> 
    <name xml:lang="en">test</name> 
</exercise> 

PhpStorm дает следующее сообщение об ошибке проверки: Element name doesn't have the required attribute lang.

Правильно ли PHPStorm в предоставлении мне ошибки проверки? Если да, то что я делаю неправильно?

UPDATE

Видимо атрибут localizedNameType типа use="required" вызывает ошибку проверки; Почему это неправильно?

+1

Помимо жалобы PHPStorm, ваш пример выглядит нормально. Возможно, PHPStorm будет удовлетворен, если вы добавите объявление пространства имен ('xmlns: xml =" http://www.w3.org/XML/1998/namespace ") в элемент' name' в экземпляре XML? Например: '<имя xml: lang =" en "xmlns: xml =" http://www.w3.org/XML/1998/namespace "> test' – kjhughes

ответ

2

Нет, PHPStorm неверен; документ действителен в отношении схемы, которую вы даете. Как предположил kjhughes, проблема может быть связана с ошибками в обработке пространства имен xml. Если вы добавляете декларацию пространства имен, он предлагает, чтобы PHPStorm принимал документ, тогда у вас есть две ошибки для отчета: ошибка проверки правильности этого примера и отказ сообщить об ошибке корректности формы пространства имен в версии с объявлением пространства имен для пространства имен xml , (Префикс xml зарезервирован, поэтому вам запрещено объявлять пространство имен с префиксом xml.)

Смежные вопросы