Главная » Java, Web, XML » Связь документа XML со своей схемой

0

Программе-анализатору, проверяющей соответствие документа XML его схеме, надо как-то указать файлы (один или несколько), содержащие схему документа. Это можно сделать разными способами. Во-первых, можно подать эти файлы на вход анализатора. Так делает, например, проверяющий анализатор XSV (XML Schema Validator) (ftp://ftp.cogsci.ed.ac.uk/pub/XSV/): $ xsv ntb. xml ntbbl. xsd ntb2. xsd

Во-вторых, можно задать файлы со схемой как свойство анализатора, устанавливаемое методом setProperty(), или значение переменной окружения анализатора. Так делает, например, проверяющий анализатор Xerces.

Эти способы удобны в тех случаях, когда документ в разных случаях нужно связать с разными схемами. Если же схема документа фиксирована, то ее удобнее указать прямо в документе XML. Это делается одним из двух способов.

Если элементы документа не принадлежат никакому пространству имен и записаны без префикса, то в корневом элементе документа записывается атрибут                                                                   указывающий расположение файла со схемой в форме URI: cnotebook xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ntb.xsd">

В этом случае в схеме не должно быть целевого пространства имен, то есть, не следует использовать атрибут targetNamespace.

2. Если же элементы документа относятся к некоторому пространству имен, то применяется атрибут schemaLocation, в котором через пробел перечисляются пространства имен и расположение файла со схемой, описывающей это пространство имен. Продолжая пример предыдущего раздела, можно написать: ^otebrok xmlns="http: / /some. firm.com/2003/ntbNames"

xmlns :xsi="http://www.w3 .юrg/2001/ЖLSchema-instance,, xsi:schemaLocation=

"http: //some. firm.ccm/scmeNames A.xsd

http://some.firm.com/anotherNames B.xsd" xmlns:prl="http://some.firm.com/someNames" xmlns:pr2="http://some.firm.com/anotherNames">

После этого в документе можно использовать имена, определенные в схемах A.xsd и B.xsd, снабжая их префиксами prl и рг2 соответственно.

Другие языки описания схем

Даже из приведенного выше краткого описания языка XSD видно, что он получился весьма сложным и запутанным. Есть уже несколько книг, полностью посвященных этому языку. Их объем ничуть не меньше объема этой книги.

Есть и другие, более простые языки описания схемы документа XML. Наибольшее распространение получили следующие языки:

•            Schematron —http://www.ascc.net/xml/resource/schematron/,

•          RELAX NG (Regular Language Description for XML, New Generation, регулярный язык описания XML нового поколения) — http://www.oasis- open.org/committees/relax-ng/; этот язык возник как слияние языков Relax и TREX,

•            Relax —http://www.xml.gr.jp/relax/,

? TREX (Tree Regular Expressions for XML, древовидные регулярные выражения для XML) — http://www.thaiopensource.com/trex/,

•          DDML (Document Definition Markup Language, язык разметки определения документа), известный еще как XSchema — http://purl.oclc.org/NET/ddml/.

Менее распространены языки DCD (Document Content Description, описание содержания документа), SOX (One’s Schema for Object-Oriented XML, схема для объектно-ориентированного XML), XDR (XML-Data Reduced, редуцированные XML-данные).

Все эти языки позволяют более или менее полно описывать схему документа. Возможно, они вытеснят язык XSD, возможно, будут существовать совместно.

Литература:

Хабибуллин И. Ш. Разработка Web-служб средствами Java. — СПб.: БХВ-Петербург, 2003. — 400 с: ил.

По теме:

  • Комментарии