XSLT с запросом к базе данных - PullRequest
1 голос
/ 28 апреля 2011

Я какое-то время выполнял преобразование XML в своем Java-приложении, и я до сих пор не понимаю, какие есть варианты и как лучше всего читать записи из базы данных и вставлять их в преобразованный выходной файл.

До сих пор я делал запросы к базе данных Oracle с помощью xQuery, который в результате дал мне набор узлов.Затем я передал этот результат в качестве параметра преобразователю и запросил этот параметр во время преобразования, чтобы вставить данные в соответствующие узлы.

Хотя это лучший способ сделать это?Мой базовый язык снова - Java.Каковы другие варианты получения того же результата?

Также я думаю, что стоит упомянуть, что в большинстве случаев запрос БД основан на содержимом исходного XML-файла.

Спасибо

Ответы [ 2 ]

1 голос
/ 01 мая 2011

Вы смотрели на расширения Saxon SQL, в частности на <sql:query> элемент расширения?

1 голос
/ 28 апреля 2011

Одна из возможностей - создать экземпляр Java-объекта в вашем скрипте XSLT;

    <!-- Connection to the data provider. -->
    <xsl:variable name="provider" xmlns:java="http://xml.apache.org/xalan/java"
        select="java:my.sample.DataProvider.getInstance()" />

Использование его для последующего предоставления данных в сценарии:

    <xsl:template match="node">
        <xsl:variable name="mydata" xmlns:java="http://xml.apache.org/xalan/java"
                    select="java:getdata($provider,  string(@attr))" />

Это вызовет метод getData(String) для объекта, созданного статическим методом getInstance() в вашем классе my.sample.DataProvider.

Вы можете использовать такую ​​настройку, чтобы получать значения из кэша (например, результаты запроса, которые вы пытаетесь передать в качестве параметра в текущей настройке), или выполнять запросы во время выполнения преобразования (предотвращая запросы к данным, которые посетил преобразование.)

...