Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 470
Ильдар Шаукатович Хабибуллин
Связь документа XML со своей схемой
Программе-анализатору, проверяющей соответствие документа XML его схеме, надо как-то указать файлы (один или несколько), содержащие схему документа. Это можно сделать разными способами. Во-первых, можно подать необходимые файлы на вход анализатора. Так делает, например, проверяющий анализатор XSV (XML Schema Validator) — ftp://ftp.cogsci.ed.ac.uk/pub/XSV/:
$ xsv ntb.xml ntb1.xsd ntb2.xsd
Во-вторых, можно задать файлы со схемой как свойство анализатора, устанавливаемое методом setProperty(), или значение переменной окружения анализатора. Так делает, например, проверяющий анализатор Xerces.
Эти способы удобны, когда документ в разных случаях нужно связать с различными схемами. Если же схема документа фиксирована, то ее удобнее указать прямо в документе XML. Это делается одним из двух способов.
□ Если элементы документа не принадлежат никакому пространству имен и записаны без префикса, то в корневом элементе документа записывается атрибут noNamespaceSchemaLocation, указывающий расположение файла со схемой в фор -ме URI:
<notebook xmlns:xsi="" xsi:noNamespaceSchemaLocation="ntb.xsd">
В этом случае в схеме не должно быть целевого пространства имен, т. е. не следует использовать атрибут targetNamespace.
□ Если же элементы документа относятся к некоторому пространству имен, то применяется атрибут schemaLocation, в котором через пробел парами перечисляются пространства имен и расположение файла со схемой, описывающей это пространство имен. Продолжая пример предыдущего раздела, можно написать:
<notebook xmlns=""
xmlns:xsi="" xsi:schemaLocation=
" A.xsd B.xsd" xmlns:pr1="" xmlns:pr2="">
После этого в документе можно использовать имена, определенные в схемах A.xsd и B.xsd, снабжая их префиксами pr1 и pr2 соответственно.
Другие языки описания схем
Даже из приведенного ранее краткого описания языка XSD видно, что он получился весьма сложным и запутанным. Есть уже несколько книг, полностью посвященных этому языку. Их объем ничуть не меньше объема этой книги.
Существуют и другие, более простые языки описания схемы документа XML. Наибольшее распространение получили следующие языки:
□ Schematron — ;
□ RELAX NG (Regular Language Description for XML, New Generation), этот язык возник как слияние языков Relax и TREX — relax-ng/;
□ Relax — ;
□ TREX (Tree Regular Expressions for XML) — ;
□ DDML (Document Definition Markup Language), известный еще как XSchema — .
Менее распространены языки DCD (Document Content Description), SOX (One's Schema for Object-Oriented XML), XDR (XML-Data Reduced).