C++. Сборник рецептов - [193]
>setFeaturе()
с аргументами >fgXMLUni::fgDOMValidation
и >true
.>SAX2XMLReader
, >DOMBuilder
, >DOMWriter
и >XercesDOMParser
поддерживают ряд дополнительных функций. В >SAX2XMLReader
и >DOMBuilder
вы можете включать эти функции, используя методы >setFeature()
и >setProperty()
. Первый метод принимает строку и булево значение: второй метод принимает строку и >void*
. Запросить включенные функции можно с помощью методов >getFeature()
и >getProperty()
. Для удобства в Xerces предусмотрены константы с именами фикций и свойств. Класс >DOMWriter
поддерживает >setFeature()
, но не поддерживает >setProperty()
. Класс >XercesDOMParser
поддерживает оба метода, в нем предусмотрены отдельные методы по установке и получению каждой функции. В документации Xerces вы найдете полный список поддерживаемых дополнительных функций.Рецепт 14.6.
14.6. Проверка документа XML на соответствие схеме
Требуется подтвердить соответствие документа XML схеме, представленной в рекомендациях XML Schema 1.0.
Используйте библиотеку Xerces совместно с программным интерфейсом SAX2 или с парсером DOM.
Подтверждение соответствия документа XML схеме с использованием программного интерфейса SAX2 осуществляется точно так же, как подтверждение достоверности документа, содержащего DTD, когда схема содержится внутри целевого документа или когда на нее делается ссылка в этом документе. Если требуется проверить документ XML на соответствие внешней схеме, вы должны вызвать метод парсера >setProperty()
для включения режима подтверждения внешней схемы. В качестве первого аргумента >setProperty()
необходимо использовать >XMLUni::fgXercesSchemaExternalSchemaLocation
или >XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation
в зависимости оттого, используется или нет в схеме целевое пространство имен. Второй аргумент должен определять место расположения схемы, представленное значением типа >const XMLCh*
. Не забудьте привести тип второго аргумента к >void*
, как это сделано в рецепте 14.5.
Подтверждение соответствия документа XML схеме на основе использования >XercesDOMParser
выполняется аналогично подтверждению достоверности документа DTD, когда схема содержится внутри целевого документа или когда на нее делается ссылка в этом документе. Единственное отличие заключается в явном подключении средств поддержки схемы и пространства имен, как показано в примере 14.15.
Пример 14.15. Включение режима подтверждения схемы при использовании XercesDOMParser
>XercesDOMParser parser;
>parser.setValidationScheme(XercesDOMParser::Val_Always);
>parser.setDoSchema(true);
>parser setDoNamespaces(true);
Если требуется проверить документ XML на соответствие внешней схеме, имеющей целевое пространство имен, вызовите метод парсера >setExternalSchemaLocation()
, передавая в качестве аргумента место расположения вашей схемы. Если требуется проверить документ XML на соответствие внешней схеме, не имеющей целевого пространства имен, вызовите метод парсера >setExternalNoNamespaceSchemaLocation()
.
Аналогично для проверки документа XML на соответствие схемы с использованием >DOMBuilder
включите функцию подтверждения достоверности следующим образом.
>DOMBuilder* parser = ...;
>parser->setFeature(XMLUni::fgDOMNamespaces, true);
>parser->setFeature(XMLUni::fgDOMValidation, true);
>parser->setFeature(XMLUni::fgXercesSchema, true);
Для подтверждения соответствия документа внешней схеме с использованием >DOMBuilder
установите свойство >XMLUni::fgXercesSchemaExternalSchemaLocation
или >XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation
в значение места расположения схемы.
Например, пусть требуется проверить документ animals.xml из примера 14.1, используя схему из примера 14.16. Один из способов заключается в добавлении ссылки на схему в документ animals.xml, как показано в примере 14.17. После этого вы можете проверить документ, используя программный интерфейс SAX2, как показано в примере 14.13, или используя DOM, как показано в примере 14.14 с учетом модификаций, выполненных в примере 14.15.
Пример 14.16. Схема animals.xsd для файла animals.xml
>
>
>
> elementFormDefault="qualified">
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.