我已经创建了一个XML数据文档和一个XSLT样式表,我想基于这两个输出HTML文档。我的样式表有标记,我的XML文档有处理器实现(以及各种“xsl:value-of”引用)。我的问题是,获取XSLT处理器(我理解为内置于所有Web浏览器)以读取XML和XSLT样式表文件并输出HTML文档的实际“机制”是什么,然后将其显示在浏览器吗?我一直在阅读的XML书没有指明这一点! 谢谢
答案 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类型 请参阅下面的Alejandros评论。 text/xsl
甚至不是“正确的”,但它是浏览器最常支持的类型。正确的MIME类型应为application/xslt+xml
但据我所知,在任何(?)浏览器中都不支持。
答案 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,......等。