XML не будет проверяться, возникли проблемы с пространствами имен - PullRequest
0 голосов
/ 10 ноября 2018

Я собираюсь вырвать свои волосы, пытаясь понять, почему это не подтвердится. Я продолжаю получать ошибку

cvc-elt.1: не удается найти объявление элемента 'ret'. [13]

Прежде чем я получил сообщение об ошибке в schemaLocation, и он говорил мне, что URI должны быть одинаковой длины или чего-то еще, но я исправил это, сделав schemaLocation, target и targetNamespace одинаковыми.

Но он все еще не может найти мое объявление элемента "ret", и я не могу понять, почему. Теперь я не очень хорош в пространствах имен, я не понимаю их так же, как и все остальное.

Любая помощь будет очень полезна, чтобы выяснить, как исправить эту ошибку.

О, также мой файл .xsd называется "ret" и мой первый элемент тоже. Я не думаю, что это вызывает проблему, но это никого не смущает. Это просто требование, которое у меня есть.

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:My.Namespace"
xmlns:target="urn:My.Namespace ret.xsd"
elementFormDefault="qualified"
>

    <xs:element name="ret">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="feed" />
                <xs:element ref="doc-copyright" />
            </xs:sequence>
            <xs:attribute fixed="1.0" name="version" type="xs:string" />
            <xs:attribute name="date" type="xs:string" use="required" />
        </xs:complexType>
    </xs:element>

Это часть моего .xsd файла

<?xml version="1.0" encoding="UTF-8"?>

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

Эта часть XML-файла не проверяется. Если мне нужно опубликовать больше, я могу. Это довольно долго, хотя. Мне интересно, если эта ошибка, потому что My.Namespace не является допустимым пространством имен? Я просто не понимаю.

1 Ответ

0 голосов
/ 10 ноября 2018

В вашей схеме вы сказали, что ваши элементы будут связаны с urn:My.Namespace, когда у вас есть @targetNamespace="urn:My.Namespace".

Но ваш экземпляр XML-документа имеет элемент ret, связанный с пространством имен http://www.w3schools.com.

Чтобы схема была действительной, она должна быть связана с пространством имен urn:Ny.Namespace.

Измените его на:

<ret 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="urn:My.Namespace"
    xsi:schemaLocation="urn:My.Namespace ret.xsd">
</ret>

, а затем устранить другие проблемы с проверкой (без фида, авторского права на документ, @version или @date)

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