Парсер 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().