. Первый метод принимает строку и булево значение: второй метод принимает строку и
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
для включения режима подтверждения внешней схемы. В качестве первого аргумента
в зависимости оттого, используется или нет в схеме целевое пространство имен. Второй аргумент должен определять место расположения схемы, представленное значением типа
const XMLCh*
. Не забудьте привести тип второго аргумента к
void*
, как это сделано в рецепте 14.5.
Подтверждение соответствия документа XML схеме на основе использования
XercesDOMParser
выполняется аналогично подтверждению достоверности документа DTD, когда схема содержится внутри целевого документа или когда на нее делается ссылка в этом документе. Единственное отличие заключается в явном подключении средств поддержки схемы и пространства имен, как показано в примере 14.15.
Пример 14.15. Включение режима подтверждения схемы при использовании XercesDOMParser
Если требуется проверить документ XML на соответствие внешней схеме, имеющей целевое пространство имен, вызовите метод парсера
setExternalSchemaLocation
, передавая в качестве аргумента место расположения вашей схемы. Если требуется проверить документ XML на соответствие внешней схеме, не имеющей целевого пространства имен, вызовите метод парсера
setExternalNoNamespaceSchemaLocation
.
Аналогично для проверки документа XML на соответствие схемы с использованием
Например, пусть требуется проверить документ animals.xml из примера 14.1, используя схему из примера 14.16. Один из способов заключается в добавлении ссылки на схему в документ animals.xml, как показано в примере 14.17. После этого вы можете проверить документ, используя программный интерфейс SAX2, как показано в примере 14.13, или используя DOM, как показано в примере 14.14 с учетом модификаций, выполненных в примере 14.15.
Пример 14.16. Схема animals.xsd для файла animals.xml
<?xml version="1.0" encoding="UTF-8"?>
<!- Схема для животных цирка Feldman Family Circus -->