public interface EntityResolver2 extends EntityResolver
XMLReader.setEntityResolver()
метод используется, чтобы обеспечить реализации этого интерфейса к синтаксическим анализаторам. Когда синтаксический анализатор использует методы в этом интерфейсе, EntityResolver2.resolveEntity()
метод (в этом интерфейсе) используется вместо более старого (SAX 1.0) EntityResolver.resolveEntity()
метод. Этот модуль, и исходный код и документация, находится в Общедоступном Домене, и прибывает без ГАРАНТИИ.
Если приложение SAX требует специализированной обработки, которую этот интерфейс определяет для внешних объектов, это должно гарантировать, что использует XMLReader с http://xml.org/sax/features/use-entity-resolver2 набор значения параметра к истине (который является ее значением по умолчанию, когда функция распознается). Если тот флаг является нераспознанным, или его значение является ложью, или преобразователь не реализует этот интерфейс, то только EntityResolver
метод будет использоваться.
Это поддерживает три категории приложения, которые изменяют разрешение объекта. Старые приложения Стиля не будут знать об этом интерфейсе; они предоставят EntityResolver. Транзитный Режим обеспечивает EntityResolver2 и автоматически извлекает пользу из его методов в любых системах (синтаксические анализаторы или другие инструменты) поддержка этого, из-за полиморфизма. И Старый Стиль и Транзитные приложения Режима будут работать с любым синтаксическим анализатором SAX2. Модернизированные приложения будут не в состоянии работать за исключением синтаксических анализаторов SAX2, которые поддерживают эту определенную функцию. Они настоят, чтобы у значения параметра было значение "истины", и реализация EntityResolver2, которую они обеспечивают, могла бы выдать исключение, если исходный SAX 1.0 метода разрешения объекта стиля вызывается.
XMLReader.setEntityResolver(org.xml.sax.EntityResolver)
Модификатор и Тип | Метод и Описание |
---|---|
InputSource |
getExternalSubset(String name, String baseURI)
Позволяет приложениям обеспечивать внешнее подмножество для документов, которые явно не определяют тот.
|
InputSource |
resolveEntity(String name, String publicId, String baseURI, String systemId)
Признает приложениям отображать ссылки на внешние объекты во входные источники, или говорить синтаксическому анализатору, что он должен использовать стандартное разрешение URI.
|
resolveEntity
InputSource getExternalSubset(String name, String baseURI) throws SAXException, IOException
startDTD()
метод, как будто текст документа первоначально включал внешнее подмножество; этот обратный вызов делается прежде, чем о любых внутренних данных подмножества или ошибках сообщают.
Этот метод может также использоваться с документами, у которых нет никакого объявления DOCTYPE. Когда с корневым элементом встречаются, но никакое объявление DOCTYPE не было замечено, этот метод вызывается. Если это возвращает значение для внешнего подмножества, тот корневой элемент, как объявляют, является корневым элементом, давая эффект соединения объявления DOCTYPE в конце Пролог документа, который не мог иначе быть допустимым. Последовательность обратных вызовов синтаксического анализатора в этом случае логически напоминает это:
... comments and PIs from the prolog (as usual) startDTD ("rootName", source.getPublicId (), source.getSystemId ()); startEntity ("[dtd]"); ... declarations, comments, and PIs from the external subset endEntity ("[dtd]"); endDTD (); ... then the rest of the document (as usual) startElement (..., "rootName", ...);
Отметьте, что InputSource не получает дальнейшего разрешения. Реализации этого метода могут хотеть вызвать resolveEntity()
получать преимущества, такие как использование локальных кэшей объектов DTD. Кроме того, этот метод никогда не будет использоваться (непроверка допустимости) процессор, который не включает внешние объекты параметра.
Использование для этого метода включает подтверждение правильности данных облегчения, взаимодействуя с процессорами XML, которые всегда требовали бы нежелательных сетевых доступов для внешних объектов, или которые по другим причинам не принимают "никакой DTD" политика. Побуждения непроверки допустимости включают документы принуждения, чтобы включать DTD так, чтобы атрибуты последовательно обрабатывались. Например, процессор XPath должен знать, у каких attibutes есть тип "ID" прежде, чем это сможет обработать широко используемый тип ссылки.
Предупреждение: Возврат внешнего подмножества изменяет входной документ. Обеспечивая определения для общих объектов, это может заставить уродливый документ, казаться, быть хорошо сформированным.
name
- Идентифицирует корневой элемент документа. Это название происходит от объявления DOCTYPE (где доступный) или от фактического корневого элемента.baseURI
- Основной URI документа, служа дополнительной подсказкой для того, чтобы выбрать внешнее подмножество. Это всегда - абсолютный URI, если это не нуль, потому что XMLReader дали InputSource без одного.SAXException
- Любое исключение SAX, возможно обертывая другое исключение.IOException
- Вероятно, указывая на отказ создать новый InputStream или Читателя, или недопустимый URL.InputSource resolveEntity(String name, String publicId, String baseURI, String systemId) throws SAXException, IOException
EntityResolver
интерфейс, поддерживая реализации более сложных схем каталога, такие как тот определяется Синтаксические анализаторы, сконфигурированные, чтобы использовать этот метод преобразователя, вызовут это, чтобы определить входной источник, чтобы использовать для любого внешнего объекта, включаемого из-за ссылки в текст XML. Это исключает объект документа, и любой внешний объект, возвращенный getExternalSubset()
. Когда (непроверка допустимости) процессор конфигурируется, чтобы не включать class объектов (параметр или общий) посредством использования значений параметра, этот метод не вызывается для таких объектов.
Отметьте, что схема именования объекта, используемая здесь, является тем же самым используемым в LexicalHandler
, или в ContentHandler.skippedEntity()
метод.
name
- Идентифицирует внешний разрешаемый объект. Или" [дата]" для внешнего подмножества, или имя, начинающее с "%" указать на объект параметра, или иначе имя общего объекта. Это никогда не нуль когда вызвано синтаксическим анализатором SAX2.publicId
- Общедоступный идентификатор внешнего ссылаемого объекта (нормализованный как требуется спецификацией XML), или нуль, если ни один не был предоставлен.baseURI
- URI, относительно которого интерпретируются относительные systemIDs. Это всегда - абсолютный URI, если это не нуль (вероятно, потому что XMLReader дали InputSource без одного). Этот URI определяется спецификацией XML, чтобы быть тем, связанным с" <" запуск соответствующего объявления.systemId
- Системный идентификатор внешнего ссылаемого объекта; или относительный или абсолютный URI. Это никогда не нуль когда вызвано синтаксическим анализатором SAX2; только объявленные объекты, и любое внешнее подмножество, разрешаются такими синтаксическими анализаторами.SAXException
- Любое исключение SAX, возможно обертывая другое исключение.IOException
- Вероятно, указывая на отказ создать новый InputStream или Читателя, или недопустимый URL.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92