XML: как ссылаться на файл .xsd в файле .xml? - PullRequest
29 голосов
/ 19 октября 2010

Я хочу видеть файл XML в браузере, как я определяю в файле .xsd.Пожалуйста, проверьте следующие два файла для меня и укажите, что мне нужно сделать.Эти два файла находятся в одной папке.

employee.xml

 <?xml version="1.0"?>

<employee xmlns="http://www.w3schools.com" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="employee.xsd">

  <firstname>John</firstname>
  <lastname>Smith</lastname>
</employee>

employee.xsd

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

1 Ответ

40 голосов
/ 19 октября 2010

Вы допустили две ошибки: одну в файле схемы и другую в синтаксисе значения атрибута xsi:schemaLocation файла XML.

Основная ошибка состоит в том, что ваш файл employee.xsd толькофрагмент схемы XML.Вы должны заполнить содержимое employee.xsd.Например,

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

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

и employee.xml:

<?xml version="1.0" encoding="utf-8"?>
<employee xmlns="http://www.w3schools.com/RedsDevils"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.w3schools.com/RedsDevils employee.xsd">

    <firstname>John</firstname>
    <lastname>Smith</lastname>
</employee>

Поскольку вы определяете пространство имен по умолчанию в файле XML, атрибут местоположения схемы xsi:schemaLocation должен состоять из пространства имен ипуть к схеме разделен пробелом.Я изменил имя пространства имен, чтобы оно стало немного более уникальным: "http://www.w3schools.com/RedsDevils" вместо "http://www.w3schools.com".

В конце я могу добавить, что файл XML employee.xml не соответствует сотруднику схемы.xsd, потому что элемент <firstname>John</firstname> имеет значение, отличное от red, но, вероятно, именно это вы и хотели проверить.

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