ошибка проверки схемы: элемент должен быть объявлен - PullRequest
0 голосов
/ 28 сентября 2018

это мой xml-файл:

<?xml version="1.0" encoding="UTF-8" ?>
<teaching-plan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="teaching-plan.xsd">
    <course id="1">
        <course-name>
            大学英语
        </course-name>
        <class-hour>
            36
        </class-hour>
        <exam-form>
            考试
        </exam-form>
    </course>
    <course id="2">
        <course-name>
            高等数学
        </course-name>
        <class-hour>
            70
        </class-hour>
        <exam-form>
            考试
        </exam-form>
    </course>
    <course id="3">
        <course-name>
            计算机应用基础
        </course-name>
        <class-hour>
            108
        </class-hour>
        <exam-form>
            上机考试
        </exam-form>
    </course>
</teaching-plan>

, а это моя схема:

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

<schema xmlns="http://www.w3.org/2001/XMLSchema">

    <element name="teaching-plan">
        <complexType>
            <sequence>
                <element name="course" minOccurs="1" maxOccurs="100">
                    <complexType>
                        <sequence>
                            <element name="course-name" type="string"></element>
                            <element name="class-hour" >
                                <simpleType>
                                    <restriction base="integer">
                                        <minInclusive value="2"></minInclusive>
                                        <maxInclusive value="5"></maxInclusive>
                                    </restriction>
                                </simpleType>
                            </element>
                            <element name="exam-form" type="string"></element>
                        </sequence>
                        <attribute name="id" type="string" use="required"></attribute>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>

редактор идей постоянно говорит мне, что план обучения элементов должен быть объявлен, но ясделал объявленный в схеме.Может ли это быть проблема редактора или я что-то пропустил?Просто начните изучать XML и схему, все еще есть много вопросов.Кто-нибудь может сказать мне, как решить эту проблему?Благодарю.

1 Ответ

0 голосов
/ 28 сентября 2018

Это то, что я запускаю проверку с использованием Saxon из командной строки:

Validation error on line 7 column 21 of test.xml:
  FORG0001: The content "\n            36\n        " of element <class-hour> does not match
  the required simple type. Value "36" contravenes the maxInclusive facet "5" of the type of
  element class-hour
  See http://www.w3.org/TR/xmlschema-2/#cvc-datatype-valid clause 1
Validation error on line 18 column 21 of test.xml:
  FORG0001: The content "\n            70\n        " of element <class-hour> does not match
  the required simple type. Value "70" contravenes the maxInclusive facet "5" of the type of
  element class-hour
  See http://www.w3.org/TR/xmlschema-2/#cvc-datatype-valid clause 1
Validation error on line 29 column 21 of test.xml:
  FORG0001: The content "\n            108\n        " of element <class-hour> does not match
  the required simple type. Value "108" contravenes the maxInclusive facet "5" of the type
  of element class-hour
  See http://www.w3.org/TR/xmlschema-2/#cvc-datatype-valid clause 1
Validation error on line 36 column 17 of test.xml:
  FORG0001: Three validation errors were reported. First error: The content "\n           
  36\n        " of element <class-hour> does not match the required simple type. Value "36"
  contravenes the maxInclusive facet "5" of the type of element class-hour
Validation complete: errors found

Это говорит нам о том, что в вашей схеме нет ничего плохого.Экземпляр недопустим в отношении схемы, но это нормально.

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

Я хотел бы сделать одно предположение о вашей схеме: есть ли там maxOccurs = "100", потому что на самом деле существует фундаментальное ограничение на количество курсовМожет быть, или это потому, что вы думали, что ограничение было хорошей идеей?Я хотел бы предположить, что, во-первых, лучше не иметь предела, если он вам действительно не нужен, а во-вторых, большие значения maxOccurs могут быть очень дорогими для оценки;средства проверки схемы, которые создают простые автоматы конечных состояний для проверки, в результате получат очень большое количество состояний.

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