TransformerFactory - Использование нескольких таблиц стилей - PullRequest
0 голосов
/ 31 мая 2018

У меня есть несколько таблиц стилей XSL или таблиц стилей для проверки схемы XML (где один является корнем, а другие импортируются в корень).Приведенный ниже код предназначен для одной таблицы стилей.

public XMLSaxonTransformer(InputStream styleSheet) {
    final TransformerFactory transformerFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl", null);
    try {
        styleSheetTemplate = transformerFactory.newTemplates(new StreamSource(styleSheet), new StreamSource(styleSheet));
    } catch (TransformerConfigurationException e) {
        throw new Exception("Exception caught while parsing StyleSheet", e);
    }
}

Вышеприведенный код работает для одной таблицы стилей.но мое требование заключается в том, чтобы несколько таблиц стилей с одним корнем и другими были включены в корень.

Мой код должен выглядеть примерно так:

public XMLSaxonTransformer(List<InputStream> styleSheetList) {
final TransformerFactory transformerFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl", null);
try {

    // do something to add the XSL's list to the transformer

} catch (TransformerConfigurationException e) {
    throw new Exception("Exception caught while parsing StyleSheet", e);
}}

1 Ответ

0 голосов
/ 31 мая 2018

Вы должны указывать таблицу стилей верхнего уровня только для метода TransformerFactory.newTemplates().Таблица стилей верхнего уровня будет использовать другие модули таблиц стилей, используя xsl:include или xsl:import.Если эти модули таблиц стилей существуют только в памяти, вам нужно назначить URIResolver на TransformerFactory.Ваш URIResolver будет вызван при обнаружении объявления xsl:include или xsl:import, и он должен вернуть объект Source (например, StreamSource) для доставки содержимого модуля таблицы стилей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...