Парсер Xerces SAX игнорирует атрибут xmlxs:xsi как атрибут элемента

Используя парсер Xerces SAX, я пытаюсь получить все элементы и их атрибуты из этого XML-файла:

-------------- Начать разбор XML-файла ---------------->

<?xml version="1.0" encoding="UTF-8"?> <invoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="my.xsd"> <parties> (...)

-------------- Конец файла XML для анализа ---------------->

При получении атрибутов для элемента 'invoice' Xerces++ не вставляет атрибут 'xmlns:xsi' в список 'Attributes' для элемента 'invoice'. Однако атрибут "xsi:noNamespaceSchemaLocation" вставляется в список.

Зачем? Есть ли конкретная причина с точки зрения стандарта XML? Есть ли способ настроить синтаксический анализатор Xerces++ SAX, чтобы он также вставлял этот атрибут? (Документация по настройке свойств парсера не рассказывает как).

Спасибо за вашу помощь.

1 ответ

Решение

SAX обрабатывает объявления пространства имен иначе, чем атрибуты. Атрибуты уведомляются в событии startElement(), пространства имен уведомляются (если требуется) в событии startPrefixMapping().

Другие вопросы по тегам