代码:
<% ''=============================================== ''@Date 2007-07-10 ''@Author NetFog ''@ModifyTime 2007-07-10 ''@Desc 使用XSLT+XML+XMLDOM完成网页的模块化 ''=============================================== Class Xslt Private IsError '是否出错 Private Message '返回消息 Private XmlObj 'xml的xmlDom对象 Private XslObj 'xsl的xmlDom对象 Private OutPutObj '用输出HTML的xml对象 Private XmlData 'XML数据源如果XmlType为File类型,则值为一个路径,XmlType为Para则为变量 Private XslTemplate 'XSL模版 Private XmlType 'XML源类型,file或者para Private XmlSaveFolder '将要生成的XML文档生成目录,必须是在生成XML模式下 Private XmlSaveName '将要生成的XML文档名称,必须是在生成XML模式下 Private HtmlSaveFolder '将要生成的HTML文档生成目录,必须是在生成HTML模式下 Private HtmlSaveName '将要生成的HTML文档的名称,必须是在生成HTML模式下 Private CreateMode '0表示生成xml文档html文档两者,1表示只生成html,2表示只生成xml,3表示公返回变量
Rem 初始化两个必须对象 Private Sub Class_Initialize() Set XmlObj = Server.CreateObject("Microsoft.XMLDOM") XmlObj.async = False Set XslObj = Server.CreateObject("Microsoft.XMLDOM") XslObj.async = False IsError = False Message = "" End Sub
Rem 在须要生成HTML时,初始化用于生成HTML的XMLDOM对象 Private Sub IntSaveHtmlXmlDomObj() Set OutPutObj = Server.CreateObject("Microsoft.XMLDOM") End Sub
Rem 设置XML数据源,可接受XML文件或者有效的符合XML规范的变量 Public Property Let Data(ByVal Value) XmlData = Value End Property
Public Property Let Xsl(ByVal Value) XslTemplate = Value End Property
Rem 设置数据源类型,之所以将此属性和上面属性设置分开,是因为后面的生成操作有些不同. Public Property Let vType(ByVal Value) Value = Lcase(Cstr(Value)) If Value = "file" Then XmlType = Value Else XmlType = "para" End If End Property
Rem 设置生成的XML文件存放目录,前提是必须保证目录存在,否则出错 Public Property Let XmlFolder(ByVal Value) XmlSaveFolder = Value End Property
Rem 设置生成的XML文件名,必须指定扩展名 Public Property Let XmlName(ByVal Value) XmlSaveName = Value End Property
Rem 设置生成的HTML文件存放目录,前提是必须保证目录存在,否则出错 Public Property Let HtmlFolder(ByVal Value) HtmlSaveFolder = Value End Property
Rem 设置生成的HTML文件名,必须指定扩展名 Public Property Let HtmlName(ByVal Value) HtmlSaveName = Value End Property
Rem 设置文件生成模式,0表示生成xml文档和html文档两者,1表示只生成html,2表示只生成xml,3表示返回变量 Public Property Let CreateType(ByVal Value) CreateMode = Value If IsNumeric(CreateNode) = False Then IsError = True Message = "文档生成模式参数错误。" End If End Property
Rem 取得是否产生错误的方法,False表示无错,True表示有错 Public Property Get ErrBool() ErrBool = IsError End Property
Rem 取得报告,无论出错或者成功,均通过此报告 Public Property Get Report() Report = Message End Property
Rem 执行实际操作,ReturnFlg为0表示不将HTML字符返回(在CreateMode为3时,无论如何都会返回。),为1表示HTML字符返回 Public Function ExeCute(ByVal ReturnFlg) On Error Resume Next Dim Temp If IsNumeric(ReturnFlg) = False Then IsError = True Message = "ExeCute执行错误,参数必须是数字。本操作失败!" Exit Function Else ReturnFlg = Cint(ReturnFlg) If ReturnFlg = 0 Then ReturnFlg = 0 Else ReturnFlg = 1 End IF End If If XmlType = "file" Then XmlObj.Load(Server.MapPath(XmlData)) If Err.Number <> 0 Then IsError = True Message = "您输入的[" & XmlData & "]路径不正确或者不是有效的XML文档。本操作失败!" Exit Function End If Else XmlObj.LoadXML(XmlData) If Err.Number <> 0 Then IsError = True Message = "您输入的变量不符合有效的XML文档规范。本操作失败!" Exit Function End If End If XslObj.Load(Server.MapPath(XslTemplate)) If Err.Number <> 0 Then IsError = True Message = "您输入的[" & XslTemplate & "]模块不符合有效的Xslt文档规范。本操作失败!" Exit Function End If If CreateMode = 0 Or CreateMode = 2 Then XmlObj.Save(Server.MapPath(XmlSaveFolder & XmlSaveName)) If Err.Number <> 0 Then IsError = True Message = "您指定的生成XML文档的路径不正确。本操作失败!" Exit Function Else IsError = False Message = "成功生成XML文档!<br>" End If End If If CreateMode = 0 Or CreateMode = 1 Then Call IntSaveHtmlXmlDomObj() Call XmlObj.TransFormNodeToObject(XslObj,OutPutObj) OutPutObj.Save(Server.MapPath(HtmlSaveFolder & HtmlSaveName)) If Err.Number <> 0 Then IsError = True Message = "您指定的生成HTML文档的路径不正确。本操作失败!" Exit Function Else IsError = False Message = Message & "成功生成HTML文档!<br>" End If End If If CreateMode = 3 Or ReturnFlg = 1 Then Temp = XmlObj.TransFormNode(XslObj) If Err.Number <> 0 Then IsError = True Message = "返回HTML字符变量操作不成功!" Exit Function Else IsError = False Message = Message & "成功将HTML字符以变量形式返回!<br>" End If ExeCute = Temp End If
End Function
End Class %>
[此贴被 NetFog(q70213526) 在 07月13日15时29分 编辑过]
|