Spec-Zone .ru
спецификации, руководства, описания, API
 Платформа Java™
Стандарт Эд. 7

Пакет javax.xml.transform

Этот пакет определяет универсальные API для того, чтобы обработать инструкции преобразования, и выполнить преобразование из источника, чтобы закончиться.

См.: Описание

Пакет javax.xml.transform Описание

Этот пакет определяет универсальные API для того, чтобы обработать инструкции преобразования, и выполнить преобразование из источника, чтобы закончиться. Эти интерфейсы не имеют никаких зависимостей от SAX или стандарта ДОМА, и пытаются сделать как немного предположений насколько возможно о деталях источника и результате преобразования. Это достигает этого, определяя Source и Result интерфейсы.

Чтобы определить реальные классы для пользователя, API определяет специализации интерфейсов, найденных на корневом уровне. Эти интерфейсы находятся в javax.xml.transform.sax, javax.xml.transform.dom, и javax.xml.transform.stream.

Создание Объектов

API позволяет бетон TransformerFactory объект, который будет создан из статической функции TransformerFactory.newInstance().

Спецификация Входов и выходов

Этот API определяет два интерфейсных вызванные объекта Source и Result. Чтобы передать Источник, и Результат возражает против интерфейсов, реальные классы должны использоваться. Три конкретных представления определяются для каждого из этих объектов: StreamSource и StreamResult, SAXSource и SAXResult, и DOMSource и DOMResult. Каждый из этих объектов определяет строку ФУНКЦИИ (который является мной форма URL), в который можно передать TransformerFactory.getFeature(java.lang.String) видеть, поддерживается ли данный тип объекта Источника или Результата. Например, чтобы протестировать, если DOMSource и StreamResult поддерживаются, можно применить следующий тест.


TransformerFactory tfactory = TransformerFactory.newInstance();
if (tfactory.getFeature(DOMSource.FEATURE) && tfactory.getFeature(StreamResult.FEATURE)) {
...
}

Представление Полностью определенного имени

Пространства имен представляют что-то вроде проблемной области, имея дело с объектами XML. Полностью определенные имена появляются в разметке XML как снабженные префиксом имена. Но сами префиксы не содержат идентификационные данные. Скорее это - URI, что они контекстуально отображают на то хранение идентификационные данные. Поэтому, передавая Полностью определенное имя как "xyz:foo" среди программ Java, нужно обеспечить средство отобразить "xyz" на пространство имен.

Одно решение состояло в том, чтобы создать объект "QName", который содержит URI пространства имен, так же как префиксное и локальное имя, но это - не всегда оптимальное решение, как тогда, когда, например, Вы хотите использовать уникальные строки в качестве ключей в объекте словаря. Наличие строкового представления также мешает определять namespaced идентификационные данные вне контекста XML-документа.

Чтобы передать значения namespaced к преобразованиям, например устанавливая свойство или параметр на a Transformer объект, эта спецификация определяет это Строка "qname" объектный параметр быть переданной как строка с двумя частями, URI пространства имен, включенный в изогнутые фигурные скобки ({}), сопровождаемый локальным именем. Если у qname есть нулевой URI, то Строка возражает, только содержит локальное имя. Приложение может безопасно проверить на ненулевой URI, тестируя, чтобы видеть, ли первый символ имени' {' символ.

Например, если бы URI и локальное имя были получены из элемента, определенного с помощью <xyz:foo xmlns:xyz = "http://xyz.foo.com/yada/baz.html"/>, то Полностью определенное имя было бы" {http://xyz.foo.com/yada/baz.html} foo". Отметьте, что префикс теряется.

Сериализация Дерева результата

Сериализацией дерева результата к потоку можно управлять с Transformer.setOutputProperties(java.util.Properties) и Transformer.setOutputProperty(java.lang.String, java.lang.String) методы. Эти свойства только применяются к потоковым результатам, они не имеют никакого эффекта, когда результатом является дерево ДОМА или поток событий SAX.

На строки, которые соответствуют спецификацию XSLT для атрибутов xsl:output, можно сослаться от OutputKeys класс. Другие строки могут быть определены также. Если преобразователь не распознает выходной ключ, a IllegalArgumentException бросается, если ключевое имя не является квалифицированным пространством имен. Выходные ключевые имена, которые являются квалифицированным пространством имен, всегда позволяются, хотя они могут быть проигнорированы некоторыми реализациями.

Если все, что требуется, является простым преобразованием идентификационных данных источника к результату, то TransformerFactory обеспечивает a TransformerFactory.newTransformer() метод без параметров. Этот метод создает Преобразователь, который эффективно копирует источник в результат. Этот метод может использоваться, чтобы создать ДОМА из событий SAX или создать XML или поток HTML от событий SAX или ДОМА.

Исключения и Сообщение об ошибке

API преобразования бросает три типа специализированных исключений. A TransformerFactoryConfigurationError параллельно FactoryConfigurationError, и бросается, когда проблема конфигурации с TransformerFactory существует. Эта ошибка будет обычно бросаться когда класс фабрики преобразования, определенный с "javax.xml.transform. TransformerFactory" системное свойство не может быть найден или инстанцирован.

A TransformerConfigurationException может быть брошен, если по какой-либо причине Преобразователь не может быть создан. TransformerConfigurationException может быть брошен, если есть синтаксическая ошибка в инструкциях преобразования, например когда TransformerFactory.newTransformer(javax.xml.transform.Source) вызывается.

TransformerException общее исключение, которое происходит в течение преобразования. Исключение преобразователя может обернуть другое исключение, и если любой из TransformerException.printStackTrace() методы вызывают на этом, это произведет список дампов стека, запускающихся с нового. Исключение преобразователя также обеспечивает a SourceLocator объект, который указывает, где в исходном дереве или инструкциях преобразования ошибка произошла. TransformerException.getMessageAndLocation() может быть вызван, чтобы получить сообщение об ошибке с информацией расположения, и TransformerException.getLocationAsString() может быть вызван, чтобы получить только строку расположения.

Предупреждения преобразования и ошибки отправляются ErrorListener, в которую точку приложение может решить сообщить об ошибке или предупреждении, и может решить бросить Exception для нефатальной ошибки. ErrorListener может быть установлен через TransformerFactory.setErrorListener(javax.xml.transform.ErrorListener) для того, чтобы сообщить об ошибках, которые имеют отношение к синтаксическим ошибкам в инструкциях преобразования, или через Transformer.setErrorListener(javax.xml.transform.ErrorListener) сообщить об ошибках, которые происходят во время преобразования. ErrorListener на обоих объектах всегда будет допустимо и не -null, обеспечил ли установленный приложением или реализацией по умолчанию процессором. Реализация по умолчанию, обеспеченная процессором, сообщит обо всех предупреждениях и ошибках к System.err и не бросает никого Exceptions. Приложения строго поощряются зарегистрировать и использовать ErrorListeners, которые обеспечивают правильное поведение для предупреждений и ошибок.

Разрешение URI в пределах преобразования

API обеспечивает путь к URI, на которые ссылаются изнутри инструкций таблицы стилей или в пределах преобразования, которое будет разрешено вызывающим приложением. Это может быть сделано, создавая класс, который реализует URIResolver интерфейс, с его одним методом, URIResolver.resolve(java.lang.String, java.lang.String), и используйте этот класс, чтобы установить разрешение URI для инструкций преобразования или преобразования с TransformerFactory.setURIResolver(javax.xml.transform.URIResolver) или Transformer.setURIResolver(javax.xml.transform.URIResolver). URIResolver.resolve метод берет два Строковых параметра, URI, найденный в инструкциях таблицы стилей или созданный как часть процесса преобразования, и основной URI, против которого первый аргумент будет приведен абсолютный, если абсолютный URI будет требоваться. Возвращенный Source объект должен быть применимым преобразователем, как определено в его реализованных опциях.

 Платформа Java™
Стандарт Эд. 7

Представьте ошибку или функцию
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.