为了能详细地访问特定的数据库,可以参考产品的文档。最后你所做的是,调用一个具体的DataBaseHandler,然后进行XSL转换,从而将一个数据库的结果转换成一个有用的输出类型。
SQLMapper
SQLMapper类使用一个DataBaseHandler类完成数据库操作,使用一个映射方法将一个文档对象转换为需要的输出类型。这一映射方法返回一个字符串,因为早先的假设是输出包含字符数据。另外,一个StringBuffer也是合法的。
SQLMapper需要一个SQL 查询字符串,一个输出类型集,以及一个用于执行工作的DataBaseHandler。使用setter方法可以实现它们的初始化,使用getter方法可以检索这些参数:
if ((getSQL() != null)
&& (getSQL().length() > 0)
&& (getOutputType() != null)
&& (isValidOutputType(getOutputType()))
&& (getDataBaseHandler() != null)){
Document document = dataBaseHandler.getDocument(getSQL());
为了能转换成为需要的输出,必须在一个setter方法中指定一个XSL样式表。使用一个私有getTransformer方法可以建立一个转换对象,而getTransformer方法包含或者是一个缺省的样式表或者是指定的样式表。如果有必要,还可以使用Java的 TransformerFactory方法来建立一个样式表:
TransformerFactorytransformerfactory = TransformerFactory.newInstance();
transformer = transformerfactory.newTransformer(getStylesheet());
转换过程也只需要几行Java代码:
Transformer transformer = getTransformer();
StringWritersw = new StringWriter();
StreamResult result = new StreamResult(sw);
if (transformer != null) {
transformer.transform(new DOMSource(document.getDocumentElement()), result);
output = sw.toString();
System.err.println("output: " + output);
}else{
System.err.println("No Transformer");
}
剩下的是设计出他或她自己的XSL样式表。可以使用一些缺省的样式表将原始数据转换为HTML或者XML。以下是将生成的数据转换为一个XML文档的通用XSL样式表,其中使用的是恒等交换(identity transformation)技术,并使用UTF-8标准以保证输出的兼容性与可读性:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheetxmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
