作者nosql (http://pyms.fly.to)
站内java
标题Re: [J2SE] 使用 XSL 转换 XML
时间Wed Aug 29 08:10:36 2007
先说推测的结论
1.4.2是不能用变形金刚...不对,是不能用XSL+XML+Transformer转HTML的
可能他们认识的科博文还没拍电影不够威...不对,是版本旧可能不支援
以下是我的小实验
代价是没得睡
[程式码(仅关键部分)]
StreamSource xsl = new StreamSource("C:/test.xsl");
Transformer trans = TransformerFactory.newInstance().newTransformer(xsl);
trans.transform(new StreamSource("C:/test.xml"),
new StreamResult("C:/test.htm"));
[test.xsl]
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
a<xsl:apply-templates/>a
</xsl:template>
</xsl:stylesheet>
[test.xml]
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<elements>
<block>p</block>
<block>h1</block>
<block>h2</block>
<block>h3</block>
<block>h4</block>
</elements>
在1.4.2_13底下
一定会有一些花花绿绿的例外跑出来例如以下几行
javax.xml.transform.TransformerConfigurationException:
javax.xml.transform.TransformerConfigurationException:
javax.xml.transform.TransformerException: org.xml.sax.SAXParseException:
文件根元件遗失。
at org.apache.xalan.processor.TransformerFactoryImpl.
newTransformer(Unknown Source)
at test0001a.Test0001a04.main(Test0001a04.java:20)
经过两小时挣扎後
终於跑去装JDK6 update 2
月蚀一换掉1.4.2_13改用1.6.0_02後
立刻正常的输出xml出来
东西做出来都天亮...Orz
另外还有发现
好像java遇到比较奇怪的目录也会有无法转档的问题
还在实验中=x=
---
以下程式码
StreamSource xsl = new StreamSource(fileXSL);
StreamSource src = new StreamSource(fileXML.getAbsolutePath());
StreamResult res = new StreamResult(fileHTM.getAbsolutePath());
Transformer trans = null;
trans = TransformerFactory.newInstance().newTransformer(xsl);
trans.transform(src, res);
上面黄色标明的地方
StreamSource可传入的除String Path外, 也可传入File Path
可是不知道为什麽
xsl的部分
只要传
String Path一定会出现
重要错误
没图没真相
以下两张有跑的时候的情形
http://photo.xuite.net/mingray/1953109/1.jpg
http://photo.xuite.net/mingray/1953109/2.jpg
由图中可以看到程式码传入一改, 程式立刻烂掉
似乎是蛮奇怪的情形
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.49.132
1F:推 PsMonkey:之前测,xml 放在中文路径会有问题 (@ JDK5.0) 08/29 13:59
※ 编辑: nosql 来自: 61.230.49.132 (08/29 14:21)
2F:推 nosql:多增一些地方了, 不晓得jdk 1.5是否也是此情形, 懒得多装了 08/29 14:21
3F:推 teman:1.4版测试时 有用apache xalan吗 jdk1.4预设可能没纳入支援 08/30 10:58
4F:→ nosql:我用eclipse3.2去看,rt.jar里面有org.apache.xalan存在 08/30 12:25
5F:→ nosql:可是用org.apache.xpath.XPath的时候跟我说无法解析 08/30 12:38
6F:→ nosql:xalan.processor.TransformerFactoryImpl.newTransformer 08/30 13:16
7F:→ nosql:(Unknown Source) 另外还有这样的错误 08/30 13:20
8F:推 teman:试试看去抓apache xalan 新版的来跑跑 sample 08/30 18:38
9F:→ teman:有时候jdk预设的api没有包含完整或是使用版本有新旧问题 08/30 18:39
11F:→ nosql:挂上Xerces-J-bin.2.9.0.zip之後的内容後似乎就可以跑@@a 08/31 02:54
12F:→ nosql:看来真的是xerces API没挂上去的问题 08/31 03:05