Как вывести файл HTML из таблицы стилей XML и XSLT - PullRequest
8 голосов
/ 18 октября 2010

Я создал документ данных XML и таблицу стилей XSLT, и я хочу вывести документ HTML на основе этих двух. В моей таблице стилей есть тег, а в моем XML-документе - процессор (вместе с различными ссылками "xsl: value-of"). Мой вопрос заключается в том, какова действительная «механика» получения процессора XSLT (который, как я понимаю, встроен во все веб-браузеры) для чтения файлов таблиц стилей XML и XSLT и вывода документа HTML, который затем будет отображаться браузер? Книга XML, которую я читал, не определяет это! Спасибо

Ответы [ 4 ]

3 голосов
/ 12 июля 2016

Ниже приведен Java-код, который используется для создания HTML-файла. Когда вы запустите этот код, будет создан файл out.html.

package xslt;

import javax.xml.parsers.*;
import org.w3c.dom.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import java.io.*;


class XSLT {
    public static void main ( String argv[] ) throws Exception {
    File stylesheet = new File("xslt-example.xsl");
    File xmlfile  = new File("SigmodRecord.xml");
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document document = db.parse(xmlfile);
    StreamSource stylesource = new StreamSource(stylesheet);
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer transformer = tf.newTransformer(stylesource);
    DOMSource source = new DOMSource(document);
    //The Html output is in out.html
    StreamResult result = new StreamResult("out.html");
    transformer.transform(source,result);
    }
}
2 голосов
/ 18 октября 2010

Вы можете запустить XSL-преобразования «обычным способом», используя Javascript API, или использовать инструкцию обработки таблицы стилей xml, например:

Загрузить это в свой браузер ...

<?xml version="1.0"?>
<?xml-stylesheet href="demo.xslt" type="text/xsl"?>
<data>
    <first>first</first>
    <second>second</second>
</data>

и таблицу стилей, сохраните ее как demo.xslt в том же каталоге, что и файл XML

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html"/>
    <xsl:template match="/">
        <html>
            <head><title>Xslt browser demo</title></head>
            <body>
                    Here's my data:
                <xsl:for-each select="/data/*"><b><xsl:value-of select="."/></b></xsl:for-each>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

Это работает для меня в Firefox в Linux.

2 голосов
/ 18 октября 2010

Ответ Димитра - то, что тебе нужно.Но здесь у вас есть пример:

XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
<document>
  ...
</document>

Открытие предыдущего XML-документа в любом (не на самом деле, но вы поняли ...) браузере ион преобразует XML-документ с stylesheet.xsl и отображает результат.

На самом деле это довольно беспорядочно, когда дело доходит до преобразований в браузерах IMO, плохой поддержки и только XSLT 1.0. MIME-тип text/xsl даже не «правильный», но чаще всего поддерживается браузерами.Правильный тип MIME должен быть application/xslt+xml, но, насколько мне известно, он не поддерживается ни в одном (?) Браузере. См. Комментарий Alejandros ниже.

1 голос
/ 18 октября 2010

Мой вопрос: каковы «Механика» получения XSLT процессор (который, как я понимаю, является встроенный во все веб-браузеры) для чтения файлы таблиц стилей XML и XSLT и вывести документ HTML, который будет затем отобразить в браузере?

Задача конкретного HTML-браузера, используемого для вызова его XSLT-процессора. Затем браузер интерпретирует результаты преобразования XSLT как HTML, который должен отображаться. Обратите внимание, что в целом браузеры не обязаны поддерживать предварительную обработку XSLT, поэтому могут существовать браузеры, у которых нет связанного процессора XSLT и которые не учитывают xml-stylesheet PI для псевдо-атрибута type="text/xsl".

Подробнее см. В спецификации W3C " Связывание таблиц стилей с документами XML "

Чтобы проверить XSLT-преобразование таким, несколько примитивным способом , вы можете открыть файл XML в браузере (выполнить домашнее задание и узнать, как открыть локальный файл из браузера) и просмотреть результаты. с "View Source" или подобной командой.

Я, конечно, не рекомендую эту примитивную технику . гораздо лучше использовать одну из многих существующих IDE XSLT , например XSelerator, oXygen, Visual Studio, ... и т. Д.

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