如何从XML和XSLT样式表输出HTML文件

时间:2010-10-18 12:41:19

标签: html xml xslt

我已经创建了一个XML数据文档和一个XSLT样式表,我想基于这两个输出HTML文档。我的样式表有标记,我的XML文档有处理器实现(以及各种“xsl:value-of”引用)。我的问题是,获取XSLT处理器(我理解为内置于所有Web浏览器)以读取XML和XSLT样式表文件并输出HTML文档的实际“机制”是什么,然后将其显示在浏览器吗?我一直在阅读的XML书没有指明这一点! 谢谢

4 个答案:

答案 0 :(得分:3)

以下是用于创建HTML文件的java代码。当您运行执行此代码时,将创建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);
    }
}

答案 1 :(得分:2)

您可以使用Javascript API以“正常方式”运行XSL转换,也可以使用xml-stylesheet处理指令,如下所示:

将其加载到浏览器中......

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

和样式表,将其保存为与XML文件相同的目录中的demo.xslt

<?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>

这适用于Linux上的Firefox。

答案 2 :(得分:2)

Dimitre的回答就是你所需要的。但是你有一个例子:

<强> XML:

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

在任何(不是真的,但你得到它......)浏览器中打开前面的XML文档,它将使用stylesheet.xsl转换XML文档并显示结果。

当涉及到浏览器imo,不良支持和仅XSLT 1.0的转换时,它实际上非常混乱。 MIME类型text/xsl甚至不是“正确的”,但它是浏览器最常支持的类型。正确的MIME类型应为application/xslt+xml但据我所知,在任何(?)浏览器中都不支持。 请参阅下面的Alejandros评论。

答案 3 :(得分:1)

  

我的问题是,实际是什么   获得XSLT的“机制”   处理器(据我所知,是   内置于所有Web浏览器中)阅读   XML和XSLT样式表文件和   输出HTML文件,这将   然后在浏览器上显示?

用于调用其XSLT处理器的特定HTML浏览器的任务。然后浏览器将XSLT转换的结果解释为应该显示的HTML。请注意,通常浏览器不需要支持XSLT预处理,因此可能存在没有关联XSLT处理器的浏览器,并且不支持xml-stylesheet PI为type="text/xsl"伪属性

有关详细信息,请参阅“ Associating Style Sheets with XML Documents

上的W3C规范

要以这种有点原始的方式测试XSLT转换,您可以使用浏览器打开XML文件(做好功课并学习如何从浏览器打开本地文件)并检查使用"View Source"或类似命令的结果。

我当然不推荐这种原始技术。使用众多现有XSLT IDE 之一好得多,例如XSelerator,oXygen,Visual Studio,......等。