<!--

<?xml-stylesheet type="text/xsl" href="people.xsl"?>
--><people> <person born="1900"died="1099">
<name>
<first_name>Wu</first_name>
<last_name>feng</last_name>
</name>
<profession>computer scientist</profession>
<profession>mathematician</profession>
<profession>cryptographer</profession>
</person> <person born="1918" died="288">
<name>
<first_name>王</first_name>
<middle_initial>二</middle_initial>
<last_name>小</last_name>
</name>
<profession>生态学</profession>
<hobby>放羊</hobby>
</person>
<person>
<hobby>摄影</hobby>
<hobby>旅游</hobby>
</person></people>
//xslfile.xsl<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:outputmethod="xml" omit-xml-declaration="yes"indent="yes"/>
<!--
循环
[结果]
person 1900
person 1918
person
hobby 放羊
hobby 摄影
hobby 旅游
-->
<xsl:template match="/">
<xsl:for-each select="//person">
<xsl:value-of select="name()"/>
<xsl:value-of select="@born"/>
<br />
</xsl:for-each><xsl:for-each select="people/person/hobby">
<xsl:value-of select="name()"/>
<xsl:value-of select="."/>
<br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>//jsclient.htm<html><body><script language="javascript">// Load XMLvar xml = new ActiveXObject("Microsoft.XMLDOM")xml.async = falsexml.load("xmlfile.xml")// Load the XSLvar xsl = new ActiveXObject("Microsoft.XMLDOM")xsl.async = falsexsl.load("xslfile.xsl")
// Transformdocument.write(xml.transformNode(xsl))
</script>
</body></html>[服务端处理]//JavaServer.javapackage wf;import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.StringWriter;
import java.util.Enumeration;
import java.util.Properties;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;import org.dom4j.DocumentException;
public class JavaServer
{
/**
* 方法一
*这个方法将xml通过样式单转换.
*@paramxmlfile将要被转换的xml文件路径
*@paramxslfileXSL文件的文件路径
* @returnString转换后的字符串形式存放的xml/html/text
*/
publicstaticStringExecuteXSL(Stringxmlfile,Stringxslfile){
try{
ByteArrayOutputStreambyteRep=newByteArrayOutputStream();
TransformerFactorytransformerFactory =TransformerFactory.newInstance();
StreamSourcesource =newStreamSource(xmlfile);
StreamResultresult =newStreamResult(byteRep);
StreamSourcestyle=newStreamSource(xslfile);
Transformertransformer=transformerFactory.newTransformer(style);
transformer.setOutputProperty("method","xml");
transformer.setOutputPrope rty(javax.xml.transform.OutputKeys.ENCODING,
"GB2312");
transformer.transform(source,result);
returnbyteRep.toString();
}
catch(Exceptione){
e.printStackTrace();
returnnull;
}
} /*
* 方法二
* */
public static String transXML2HTML(Stringxmlfile, String xslfile,
StringsOutMethod, Properties params) {
StringWriter sw = newStringWriter();
StreamResult sr = newStreamResult(sw);try {
FileInputStreamfis = new FileInputStream(xmlfile);
File fxml =new File(xmlfile);
StreamSourcesXML = new StreamSource(fxml);
File fxsl =new File(xslfile);
StreamSourcesSTL = new StreamSource(fxsl);TransformerFactorytFactory = TransformerFactory.newInstance();
Transformertransformer = tFactory.newTransformer(sSTL);if(sOutMethod != null)
transformer.setOutputProperty("method",sOutMethod);if(params != null) {
Enumeration<Object>keys = params.keys();
String_key = "";
while(keys.hasMoreElements()) {
_key= (String) keys.nextElement();
transformer.setParameter(_key,params.getProperty(_key));
}
}
transformer.transform(sXML,sr);
} catch (Exception ex) {
ex.printStackTrace();
}
returnsw.getBuffer().toString();
}
publicstatic void main(String[] args) throws DocumentException
{
Stringxmlpath="D:\Java_test\xmlfile.xml";
Stringxslpath="D:\Java_test\xslfile.xsl";
System.out.print(JavaServer.ExecuteXSL(xmlpath,xslpath));
//System.out.print(JavaServer.transXML2HTML(xmlpath,xslpath,null,null ));
/*客户端通过js loadxml载入结果*/
}
}