Пожалуйста, учтите, что спецификации и другая информация, содержащаяся здесь, не являются заключительными и могут быть изменены. Информация доступна для вас исключительно ради ознакомления.
Инкапсулируйте логику Пространства имен для использования приложениями, используя SAX, или внутренне драйверами SAX.
Этот модуль, и исходный код и документация, находится в Общедоступном Домене, и прибывает без ГАРАНТИИ. См. http://www.saxproject.org для дополнительной информации.
Этот class инкапсулирует логику обработки Пространства имен: это отслеживает объявления в настоящий момент в силе для каждого контекста и автоматически обрабатывает квалифицированные имена XML в их части Пространства имен; это может также использоваться наоборот для того, чтобы генерировать XML qnames от Пространств имен.
Объекты поддержки пространства имен являются допускающими повторное использование, но метод сброса должен быть вызван между каждым сеансом.
Отметьте, что этот class оптимизируется для варианта использования, где большинство элементов не содержит Объявления пространства имен: если то же самое отображение префикса/URI будет повторено для каждого контекста (например), то этот class будет несколько менее эффективным.
Хотя драйверы SAX (синтаксические анализаторы) могут хотеть использовать этот class, чтобы реализовать обработку пространства имен, они не обязаны делать так. Приложения должны отследить информацию о пространстве имен самостоятельно, если они хотят использовать информацию о пространстве имен.
URI объявления пространства имен как константа. Значение http://www.w3.org/xmlns/2000/, как определено в назад несовместимой опечатке к "Пространствам имен в XML" рекомендация. Поскольку та опечатка датированный более поздним числом SAX2, значения по умолчанию SAX2 к исходной рекомендации, и обычно не использует этот URI.
Это - URI Пространства имен, которому дополнительно применяются к xmlns и атрибуты xmlns:*, которые используются, чтобы объявить пространства имен.
Создайте новый объект поддержки Пространства имен.
Деталь метода
сброс
public void reset()
Сбросьте этот объект поддержки Пространства имен для повторного использования.
Необходимо вызвать этот метод прежде, чем снова использовать объект поддержки Пространства имен для нового сеанса. Если URI объявления пространства имен должны поддерживаться, тот флаг должен также быть установлен в значение не по умолчанию.
Запустите новый контекст Пространства имен. Новый контекст автоматически наследует объявления своего родительского контекста, но он также отследит, из которых объявления были сделаны в пределах этого контекста.
Код обратного вызова события должен запустить новый контекст однажды на элемент. Это означает быть готово вызвать это в любом из двух мест. Для элементов, которые не включают объявления пространства имен, ContentHandler.startElement () обратный вызов является правильным местом. Для элементов с таким объявлением это сделало в первом ContentHandler.startPrefixMapping () обратный вызов. Булев флаг может использоваться, чтобы отследить, был ли контекст начат все же. Когда любой из тех методов вызывают, он проверяет флаг, чтобы видеть, должен ли новый контекст быть начат. Если так, это запускает контекст и устанавливает флаг. После того, как ContentHandler.startElement () делает это, он всегда очищает флаг.
Обычно, драйверы SAX продвинули бы новый контекст в начале каждого элемента XML. Затем они выполняют первое, передают по атрибутам, чтобы обработать все объявления пространства имен, делая ContentHandler.startPrefixMapping () обратные вызовы. Затем вторая передача делается, чтобы определить полностью определенные имена пространства имен для всех атрибутов и для имени элемента. Наконец вся информация для ContentHandler.startElement () обратный вызов доступен, таким образом, это может тогда быть сделано.
Объект поддержки Пространства имен всегда запускается с основного контекста уже в силе: в этом контексте только объявляется префикс "xml".
Вернитесь к предыдущему контексту Пространства имен.
Обычно, следует вытолкать контекст в конце каждого элемента XML. После выталкивания контекста все Пространство имен снабжает префиксом отображения, которые были ранее в силе, восстанавливаются.
Не следует попытаться объявить дополнительные префиксы Пространства имен после выталкивания контекста, если Вы не продвигаете другой контекст сначала.
public boolean declarePrefix(String prefix,
String uri)
Объявите префикс Пространства имен. Все префиксы должны быть объявлены прежде, чем на них сошлются. Например, драйвер SAX (синтаксический анализатор) отсканировал бы атрибуты элемента в двух передачах: сначала для объявлений пространства имен, затем второе использование передачи processName() интерпретировать префиксы против (потенциально пересмотренный) префиксы.
Этот метод объявляет префикс в текущем контексте Пространства имен; префикс останется в силе, пока этот контекст не выталкивается, если это не затенено в порожденном контексте.
Чтобы объявить Пространство имен элемента значения по умолчанию, используйте пустую строку в качестве префикса.
Отметьте, что есть асимметрия в этой библиотеке: getPrefix не будет возвращать "" префикс, даже если Вы объявили пространство имен элемента значения по умолчанию. Чтобы проверить на пространство имен по умолчанию, необходимо искать это явно использование getURI. Эта асимметрия существует, чтобы облегчить искать префиксы для названий атрибута, где префикс значения по умолчанию не позволяется.
Параметры:
prefix - Префикс, чтобы объявить, или пустая строка, чтобы указать на пространство имен элемента значения по умолчанию. У этого никогда, возможно, нет значения "xml" или "xmlns".
uri - URI Пространства имен, чтобы связаться с префиксом.
public String[] processName(String qName,
String[] parts,
boolean isAttribute)
Обработайте необработанное полностью определенное имя XML, после того, как все объявления в текущем контексте были обработаны declarePrefix().
Этот метод обрабатывает необработанное полностью определенное имя XML в текущем контексте, удаляя префикс и ища это среди префиксов, в настоящий момент объявленных. Возвращаемое значение будет массивом, предоставленным вызывающей стороной, заполненной следующим образом:
части [0]
URI Пространства имен, или пустая строка, если ни один не используется.
части [1]
Локальное имя (без префикса).
части [2]
Исходное необработанное имя.
Все строки в массиве будут усвоены. Если у необработанного имени будет префикс, который не был объявлен, то возвращаемое значение будет нулем.
Отметьте, что названия атрибута обрабатываются по-другому чем имена элементов: неснабженное префиксом имя элемента получит пространство имен по умолчанию (если любой), в то время как неснабженное префиксом название атрибута не будет.
Параметры:
qName - Полностью определенное имя XML, которое будет обработано.
parts - Массив, предоставленный вызывающей стороной, способной к содержанию по крайней мере трех элементов.
isAttribute - Флаг, указывающий, является ли это названием атрибута (истина) или имя элемента (ложь).
Возвраты:
Предоставленный массив, содержащий три усвоенных строки, представляющие URI Пространства имен (или пустую строку), локальное имя, и полностью определенное имя XML; или нуль, если есть необъявленный префикс.
Возвратите перечисление всех префиксов, объявления которых являются активными в текущем контексте. Это включает объявления от родительских контекстов, которые не были переопределены.
Отметьте: если будет префикс значения по умолчанию, то он не будет возвращен в этом перечислении; проверьте на префикс значения по умолчанию использование getURI с параметром "".
Возвратите один из префиксов, отображенных на URI Пространства имен.
Если больше чем один префикс будет в настоящий момент отображен на тот же самый URI, то этот метод сделает произвольный выбор; если Вы хотите все префиксы, используйте getPrefixes() метод вместо этого.
Отметьте: это никогда не будет возвращать пустое (значение по умолчанию) префикс; чтобы проверить на префикс значения по умолчанию, используйте getURI метод с параметром "".
Параметры:
uri - URI пространства имен
Возвраты:
один из префиксов, в настоящий момент отображенных на URI, предоставленный, или нуль, если ни один не отображается или если URI присваивается пространству имен по умолчанию
Возвратите перечисление всех префиксов для данного URI, объявления которого являются активными в текущем контексте. Это включает объявления от родительских контекстов, которые не были переопределены.
Этот метод возвращает префиксы, отображенные на определенный URI Пространства имен. xml: префикс будет включен. Если Вы хотите только один префикс, это отображается на URI Пространства имен, и Вы не заботитесь, какой Вы получаете, используйте getPrefix метод вместо этого.
Отметьте: пустое (значение по умолчанию) префикс никогда не включается в это перечисление; чтобы проверить на присутствие пространства имен по умолчанию, используйте getURI метод с параметром "".
Возвратите перечисление всех префиксов, объявленных в этом контексте.
Пустое (значение по умолчанию) префикс будет включено в это перечисление; отметьте, что это поведение отличается от того из getPrefix(java.lang.String) и getPrefixes().
Возвраты:
Перечисление всех префиксов объявляется в этом контексте.
Средства управления, помещаются ли атрибуты объявления пространства имен в NSDECL пространство имен processName(). Это может только быть изменено прежде, чем любые контексты были продвинуты.
Броски:
IllegalStateException - пытаясь установить это после того, как любой контекст был продвинут.
С тех пор:
SAX 2.1alpha
isNamespaceDeclUris
public boolean isNamespaceDeclUris()
Возвращает true, если атрибуты объявления пространства имен помещаются в пространство имен. Это поведение не является значением по умолчанию.