栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 前沿技术 > 人工智能 > NLP

使用纯HTML的通用数据管理和服务

NLP 更新时间:发布时间: 百科书网 趣学号
使用纯HTML的通用数据管理和服务。然而,为了收集数据,你需要一个数据储存库。要避免使用数据库服务器带来的很多问题,你可以在xml中收集这些数据。下面是我们的项目的基本结构:

            

我最初将数据限制为first name,last name和middle。这个页面之后的基本思想是用户信息在这个页面中获得。在用户信息需求得到满足以后,流程必须被转到下一个逻辑收集步骤。为了使事情变得简单,我将把用户功能包装到一个asp类中。

Function Coalesce(vVar, vAlt)    If vVal = "" Or VarType(vVal) = 1 Or VarType(vVal) = 0 Then        Coalesce = vAlt    Else        Coalesce = vVal    End IfEnd FunctionClass CUserPRivate m_SQL, m_DOMPublic Property Get DOM()    Set DOM = m_DOMEnd PropertyPublic Sub saveUser()    m_SQL.save "save_user", m_DOMEnd SubPublic Function validate()    m_DOM.loadXML "" & m_SQL.validateUser(m_DOM) & ""    If Not m_DOM.selectSingleNode("//error") Is Nothing Then        validate = False    Else        validate = True    End IfEnd FunctionPrivate Sub collectData(dom, oCollection)    Dim nItem, node, parent_node, n, sKey    For nItem = 1 To oCollection.Count        sKey = oCollection.Key(nItem)        Set parent_node = dom.selectSingleNode("//" & sKey & "s")        If Not parent_node Is Nothing Then            For n = 1 To oCollection(sKey).Count                Set node = parent_node.selectSingleNode(sKey & _                                                        "[string(.)='" &oCollection(sKey)(n) & "']")                If node Is Nothing Then                    Set node = dom.createNode(1, sKey, "")                    Set node = parent_node.appendChild(node)                End If                node.text = Coalesce(oCollection(sKey)(n), "")            Next        Else            Set node = dom.selectSingleNode("//" & sKey)            If Not node Is Nothing Then _                node.text = Coalesce(oCollection(sKey), "")        End If    NextEnd SubPrivate Sub Class_Initialize()    Set m_SQL = New CSQL    Set m_DOM = Server.CreateObject("MSXML2.DOMdocument")    m_DOM.async = False    If VarType(Request ("txtUserXML")) = 0 Or Request ("txtUserXML") = "" Then        m_DOM.loadXML Request("txtUserXML")    Else        m_DOM.load "" & Server.MapPath("user.xml") & ""    End If    collectData m_DOM, Request.Form    collectData m_DOM, Request.QueryStringEnd SubPrivate Sub Class_Terminate()    Set m_SQL = Nothing    Set m_DOM = NothingEnd SubEnd ClassClass CSQLPrivate m_DAL, m_StreamPublic Function save(sStoredProc, oDOM)    'adVarChar = 200    m_DAL.RunSP Array(m_DAL.mp("@xml_param", 200, 8000, oDOM.xml))End FunctionPublic Function validateUser(oDOM)    Set m_Stream = m_DAL.RunSPReturnStream("validate_user", Array(_            m_DAL.mp("@xml_param", 200, 8000, oDOM.xml)))    validateUser = m_Stream.ReadText(-1)    m_Stream.CloseEnd FunctionPrivate Sub Class_Initialize()    Set m_DAL = Server.CreateObject("MyPkg.MyDAL")    m_DAL.GetConnection "some connection string"    Set m_Stream = Server.CreateObject("ADODB.Stream")End SubPrivate Sub Class_Terminate()    Set m_DAL = Nothing    Set m_Stream = NothingEnd SubEnd Class


CSQL类是基于一个数据访问层(m_DAL)组件MyPkg.MyDAL建立起来的。而这个组件则是基于Fitch和Mather DAL组件建立起来的,这两个组件可以从MSDN找到。这样我们就在SQL Server与你的代码建立了桥梁。


当CUser对象初始化之后,它收集Request数据并使用collectData()子函数将收集到的数据放到UserDOM的一个相应的节点中。(代码我不再解释,因为它本身相当容易理解。)在收集了数据之后(或者不收集数据),我们将使用XSL将数据内容转变成布局。

        *Information in red is required
red black First Name:
red black MI:
red black Last Name:

这个样式表将把内容转成布局。错误检查是很重要的,存储过程通过确定数据是否需要处理来检查数据。对于不能为空但又没有填充数据的每个域返回一个“errors”节点。这个XML的输出大致如下:

    . . .first_name. . .

这个样式表将把内容转成布局。错误检查是很重要的,存储过程通过确定数据是否需要处理来检查数据。对于不能为空但又没有填充数据的每个域返回一个“errors”节点。这个XML的输出大致如下:

    . . .first_name. . .

注意如果有一个错误匹配了节点名,那么产生的输出将会是红色的。我们需要下面的一个ASP将前面的所有东西组合起来。

<%@ Language=VBscript %><%Option ExplicitDim oUserSet oUser = New CUserIf oUser.validate() Then    Set oUser = Nothing    Server.Transfer "NextPage.asp"End If%>
<%Response.Write xslTransform(oUser.DOM, "user.xsl")%>
<%Set oUser = NothingFunction xslTransform(vXML, XSLFileName) Dim m_xml, m_xsl If VarType(vXML) = 8 Then Set m_xml = m_dom m_xml.loadXML vXML ElseIf VarType(vXML) = 9 Then Set m_xml = vXML End If If m_xml.parseError.errorCode <> 0 Then _ Err.Raise vbObjectError, "XMLTransform(...)", m_xml.parseError.reason Set m_xsl = Server.CreateObject("MSXML2.DOMdocument") m_xsl.async = False m_xsl.load Server.MapPath(XSLFileName) If m_xsl.parseError.errorCode <> 0 Then _ Err.Raise vbObjectError, "XMLTransform(...)", m_xsl.parseError.reason xslTransform = m_xml.transformNode(m_xsl) Set m_xsl = NothingEnd Function%>

ASP代码创建CUser对象,如果有数据就填充数据。然后使用CUser的DOM通过XSL转换来创建结果HTML。转换被包装到一个叫做xslTransform的函数之中。而且,记住要将结果CUser DOM存储到一个隐藏的元素中。或者你可以将CUser DOM存储到一个session变量中并在初始化过程中将其取出。

在完成这个页面之后,你可以基于前面的骨架代码创建其它的页面。现在你已经创建了一个数据收集的拷贝-粘贴方案。这个方案最优美的部分在于所有的输出都是纯HTML,没有任何浏览器特有的性质或者样式表。而且由于功能都被包装到类中,所以你可以使用XSLT产生布局,代码运行相当快。

以上就是使用纯HTML的通用数据管理和服务的内容,更多相关内容请关注PHP中文网(www.iotsi.net)!

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/794750.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号