在JAXP1.0中,使用Transformer对象,可以用setParameter函数设置XSLT的参数,Boolean,Double和String类型都测试过了,可以使用,请问NodeSet类型该使用何种类型?
在.net中,NodeSet类型对应的是System.Xml.XPath.XPathNodeIterator。Java中我测试过Node,NodeList好像都不行,该如何用?请指教。
另,由于我的XSLT想适用于.net和j2ee两个平台,所以使用标准的xslt 1.0,因此,最好不要不用传入一个字符串,再用xalan:Nodeset()函数转换,这样的XSLT就不通用了。这个不是太清楚。如果有简单代码,可以发来测试关注XSLT文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="Name"/>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/"> 数据挖掘研究院
<Toolkit>
<xsl:copy-of select="$Name"/>
</Toolkit>
</xsl:template>
</xsl:stylesheet>
JAVA代码如下:
private static void testXslt2() throws Exception {
String xml = "E:\Temp\a.xml";
String xslt = "E:\Temp\b.xslt";
String output = "e:\birds.xml";
TransformerFactory tf = TransformerFactory.newInstance();
Source xsltSource = new StreamSource(new FileInputStream(xslt));
Transformer transform = tf.newTransformer(xsltSource);
String d = "Good";
transform.setParameter("Name", d);
Source xmlSource = new StreamSource(new FileInputStream(xml)); 数据挖掘实验室
Result result = new StreamResult(new FileOutputStream(output));
transform.transform(xmlSource, result);
}
关键就是setParameter那里,我该输入什么样的类型,XSLT那里的会认为参数$Name是一个NodeSet。java不懂,只能看看.

