Вы допустили две ошибки: одну в файле схемы и другую в синтаксисе значения атрибута 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
, но, вероятно, именно это вы и хотели проверить.