Пакет org.xml.sax
Стандартные флаги функций SAX2
Одной из ключевых особенностей SAX2 является добавление флагов функций, которые могут использоваться для проверки и, возможно, изменения режимов парсера, в частности, режимов валидации. Поскольку функции идентифицируются с помощью (абсолютных) URI, любой может определить такие функции. Текущие стандартные URI функций имеют префикс http://xml.org/sax/features/ перед идентификатором, например, validation. Включить или выключить функции можно с помощью setFeature. Эти стандартные идентификаторы включают:
| Идентификатор функции | Доступ | По умолчанию | Описание |
|---|---|---|---|
| external-general-entities | чтение/запись | не указано | Сообщает, обрабатывает ли этот парсер внешние общие сущности; всегда true, если валидация включена. |
| external-parameter-entities | чтение/запись | не указано | Сообщает, обрабатывает ли этот парсер внешние параметрические сущности; всегда true, если валидация включена. |
| is-standalone | (парсинг) только для чтения, (не парсинг) нет | не применимо | Может быть прочитан только во время парсинга, после завершения обратного вызова startDocument(); только для чтения. Значение равно true, если документ в его XML-декларации указал standalone="yes", и false в противном случае. |
| lexical-handler/parameter-entities | чтение/запись | не указано | Значение "true" указывает, что LexicalHandler будет сообщать о начале и конце параметрических сущностей. |
| namespaces | чтение/запись | true | Значение "true" указывает, что URI пространства имен и локальные имена без префиксов для имен элементов и атрибутов будут доступны. |
| namespace-prefixes | чтение/запись | false | Значение "true" указывает, что квалифицированные имена XML (с префиксами) и атрибуты (включая xmlns* атрибуты) будут доступны. |
| resolve-dtd-uris | чтение/запись | true | Значение "true" указывает, что идентификаторы систем в декларациях будут абсолютизированы (относительно их базовых URI) перед отчётностью. (Это поведение по умолчанию для всех XML-парсеров SAX2.) Значение "false" указывает, что эти идентификаторы не будут абсолютизированы; парсеры предоставят базовый URI из Locator.getSystemId(). Это относится к идентификаторам систем, передаваемым в
|
| string-interning | чтение/запись | не указано | Имеет значение "true", если все имена XML (для элементов, префиксов, атрибутов, сущностей, обозначений и локальных имен), а также URI пространства имен, будут интернированы с использованием java.lang.String.intern. Это поддерживает быструю проверку равенства/неравенства со строковыми константами, а не принуждает к более медленным вызовам String.equals(). |
| unicode-normalization-checking | чтение/запись | false | Управляет тем, сообщает ли парсер об ошибках нормализации Юникода, как описано в разделе 2.13 и приложении B рекомендации XML 1.1. Если true, ошибки нормализации Юникода сообщаются с помощью обратного вызова ErrorHandler.error(). Такие ошибки не являются фатальными сами по себе (хотя, очевидно, могут быть другие связанные с Юникодом ошибки кодирования). |
| use-attributes2 | только для чтения | не применимо | Возвращает "true", если объекты Attributes, переданные этим парсером в ContentHandler.startElement(), реализуют интерфейс org.xml.sax.ext.Attributes2. Этот интерфейс раскрывает дополнительную информацию, связанную с DTD, например, был ли атрибут указан в исходном тексте, а не по умолчанию. |
| use-locator2 | только для чтения | не применимо | Возвращает "true", если объекты Locator, переданные этим парсером в ContentHandler.setDocumentLocator(), реализуют интерфейс org.xml.sax.ext.Locator2. Этот интерфейс раскрывает дополнительную информацию об сущностях, такую как кодировка символов и используемая версия XML. |
| use-entity-resolver2 | чтение/запись | true | Возвращает "true", если при вызове setEntityResolver объекту, реализующему интерфейс org.xml.sax.ext.EntityResolver2, будут использоваться новые методы. Возвращает "false", чтобы указать, что эти методы не будут использоваться. |
| validation | чтение/запись | не указано | Управляет тем, сообщает ли парсер все ошибки валидации; если true, все внешние сущности будут считаны. |
| xmlns-uris | чтение/запись | false | Управляет тем, при установлении функции namespace-prefixes, обрабатывает ли парсер атрибуты объявления пространства имен как находящиеся в пространстве имен http://www.w3.org/2000/xmlns/. По умолчанию SAX2 соответствует первоначальной рекомендации "Пространства имен в XML", которая явно указывает, что такие атрибуты не находятся ни в каком пространстве имен. Установка этого необязательного флага в "true" приводит к тому, что события SAX2 соответствуют более поздней несовместимой с обратной совместимостью редакции этой рекомендации, помещая эти атрибуты в пространство имен. |
| xml-1.1 | только для чтения | не применимо | Возвращает "true", если парсер поддерживает как XML 1.1, так и XML 1.0. Возвращает "false", если парсер поддерживает только XML 1.0. |
Поддержка значений по умолчанию свойств namespaces и namespace-prefixes обязательна. Поддержка любых других флагов функций является необязательной.
Для значений по умолчанию, не указанных в SAX2, каждая реализация XMLReader указывает своё значение по умолчанию или может выбрать не предоставлять флаг функции. За исключением случаев, указанных здесь, реализации могут поддерживать изменение текущих значений этих стандартных флагов функций, но не во время парсинга.
Стандартные идентификаторы обработчиков и свойств SAX2
Для характеристик интерфейса парсера, которые описываются как объекты, определено отдельное пространство имен. Объекты в этом пространстве имен снова идентифицируются по URI, и стандартные URI свойств имеют префикс http://xml.org/sax/properties/ перед идентификатором, например, lexical-handler или dom-node. Управление этими свойствами осуществляется с помощью setProperty(). Эти идентификаторы включают:
| Идентификатор свойства | Описание |
|---|---|
| declaration-handler | Используется для просмотра большинства деклараций DTD, за исключением тех, которые обрабатываются как лексические ("имя элемента документа ...") или которые являются обязательными для всех парсеров SAX (DTDHandler). Объект должен реализовывать org.xml.sax.ext.DeclHandler. |
| document-xml-version | Может быть прочитан только во время парсинга, после завершения обратного вызова startDocument(); только для чтения. Это свойство — строка, описывающая фактическую версию XML документа, например, "1.0" или "1.1". |
| dom-node | Для парсеров типа "DOM Walker", которые игнорируют параметры parser.parse(), это используется для указания DOM (под)дерева, по которому проходит парсер. Объект должен реализовывать интерфейс org.w3c.dom.Node. |
| lexical-handler | Используется для просмотра некоторых событий синтаксиса, которые важны в некоторых приложениях: комментарии, разделители CDATA, включение выбранных общих сущностей и начало и конец DTD (и объявление имени элемента документа). Объект должен реализовывать org.xml.sax.ext.LexicalHandler. |
| xml-string | Доступно только во время обратного вызова парсера, это раскрывает фрагмент символов TBS, ответственный за текущее событие. |
Все эти стандартные свойства являются необязательными. Реализации XMLReader не обязаны их поддерживать.
- API Note:
- API SAX, первоначально разработанный в проекте SAX, определен в Java SE начиная с версии 1.4.
- С:
- 1.4
| Класс | Описание |
|---|---|
| AttributeList | Устаревший. |
| Attributes | Интерфейс для списка XML атрибутов. |
| ContentHandler | Получает уведомления о логическом содержании документа. |
| DocumentHandler | Устаревший. Этот интерфейс был заменён SAX2 интерфейсом ContentHandler, который включает поддержку Namespaces. |
| DTDHandler | Получает уведомления о базовых событиях, связанных с DTD. |
| EntityResolver | Базовый интерфейс для разрешения сущностей. |
| ErrorHandler | Базовый интерфейс для обработчиков ошибок SAX. |
| HandlerBase | Устаревший. Этот класс работает с устаревшим интерфейсом DocumentHandler. |
| InputSource | Единственный источник ввода для XML сущности. |
| Locator | Интерфейс для сопоставления события SAX с местоположением в документе. |
| Parser | Устаревший. Этот интерфейс был заменён SAX2 интерфейсом XMLReader, который включает поддержку Namespaces. |
| SAXException | Заворачивает общую ошибку или предупреждение SAX. |
| SAXNotRecognizedException | Класс исключений для нераспознанного идентификатора. |
| SAXNotSupportedException | Класс исключений для недопустимой операции. |
| SAXParseException | Заворачивает ошибку или предупреждение XML разбора. |
| XMLFilter | Интерфейс для XML фильтра. |
| XMLReader | Интерфейс для чтения XML документа с помощью обратных вызовов. |
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.xml/org/xml/sax/package-summary.html
Attributes, который включает поддержку Namespaces.