亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 使用純HTML的通用數據管理和服務

使用純HTML的通用數據管理和服務

熱門標簽:東營電銷 r語言數據可視化地圖標注 南寧網絡外呼系統運營商 400電話辦理包年 高德地圖地圖標注服務中心 隨州外呼調研系統 如何修改多個百度地圖標注 本地電話機器人 微信地圖標注合并了

使用純HTML的通用數據管理和服務。然而,為了收集數據,你需要一個數據儲存庫。要避免使用數據庫服務器帶來的很多問題,你可以在XML中收集這些數據。下面是我們的項目的基本結構:

user>
    first_name/>
    last_name/>
    mi/>
/user>

我最初將數據限制為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 If
End Function

Class CUser
Private m_SQL, m_DOM

Public Property Get DOM()
    Set DOM = m_DOM
End Property

Public Sub saveUser()
    m_SQL.save "save_user", m_DOM
End Sub

Public Function validate()
    m_DOM.loadXML "root>" m_SQL.validateUser(m_DOM) "/root>"
    If Not m_DOM.selectSingleNode("http://error") Is Nothing Then
        validate = False
    Else
        validate = True
    End If
End Function

Private 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("http://" 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("http://" sKey)
            If Not node Is Nothing Then _
                node.text = Coalesce(oCollection(sKey), "")
        End If
    Next
End Sub

Private 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 "root>" Server.MapPath("user.xml") "/root>"
    End If
    collectData m_DOM, Request.Form
    collectData m_DOM, Request.QueryString
End Sub

Private Sub Class_Terminate()
    Set m_SQL = Nothing
    Set m_DOM = Nothing
End Sub

End Class

Class CSQL
Private m_DAL, m_Stream

Public Function save(sStoredProc, oDOM)
    'adVarChar = 200
    m_DAL.RunSP Array(m_DAL.mp("@xml_param", 200, 8000, oDOM.xml))
End Function

Public 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.Close
End Function

Private Sub Class_Initialize()
    Set m_DAL = Server.CreateObject("MyPkg.MyDAL")
    m_DAL.GetConnection "some connection string"
    Set m_Stream = Server.CreateObject("ADODB.Stream")
End Sub

Private Sub Class_Terminate()
    Set m_DAL = Nothing
    Set m_Stream = Nothing
End Sub

End Class
CSQL類是基于一個數據訪問層(m_DAL)組件MyPkg.MyDAL建立起來的。而這個組件則是基于Fitch和Mather DAL組件建立起來的,這兩個組件可以從MSDN找到。這樣我們就在SQL Server與你的代碼建立了橋梁。

 
當CUser對象初始化之后,它收集Request數據并使用collectData()子函數將收集到的數據放到UserDOM的一個相應的節點中。(代碼我不再解釋,因為它本身相當容易理解。)在收集了數據之后(或者不收集數據),我們將使用XSL將數據內容轉變成布局。

?xml version="1.0"?>
xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform
    version="1.0">
xsl:output method="html"/>

xsl:template match="/">
    xsl:if test="http://error">
    font color="red">*Information in red is requiredbr/>/font>
    /xsl:if>
    xsl:apply-templates select="http://user"/>
/xsl:template>

xsl:template match="user">
    font>
        xsl:attribute name="color">
            xsl:choose>
                xsl:when test="http://error[.='first name']">red/xsl:when>
                xsl:otherwise>black/xsl:otherwise>
            /xsl:choose>
        /xsl:attribute>
    First Name:
    /font>
    input type="text" name="first_name">
        xsl:attribute name="value">xsl:value-of
select="first_name"/>/xsl:attribute>
    /input>br/>
    font>
        xsl:attribute name="color">
            xsl:choose>
                xsl:when test="http://error[.='mi']">red/xsl:when>
                xsl:otherwise>black/xsl:otherwise>
            /xsl:choose>
        /xsl:attribute>
    MI:
    /font>
    input type="text" name="mi">
        xsl:attribute name="value">xsl:value-of select="mi"/>/xsl:attribute>
    /input>br/>
    font>
        xsl:attribute name="color">
            xsl:choose>
                xsl:when test="http://error[.='last_name']">red/xsl:when>
                xsl:otherwise>black/xsl:otherwise>
            /xsl:choose>
        /xsl:attribute>
    Last Name:
    /font>
    input type="text" name="last_name">
        xsl:attribute name="value">xsl:value-of
 select="last_name"/>/xsl:attribute>
    /input>br/>
/xsl:template>

/xsl:stylesheet>

這個樣式表將把內容轉成布局。錯誤檢查是很重要的,存儲過程通過確定數據是否需要處理來檢查數據。對于不能為空但又沒有填充數據的每個域返回一個“errors”節點。這個XML的輸出大致如下:

    user>. . ./user>errors>error>first_name/error>. . ./errors>
這個樣式表將把內容轉成布局。錯誤檢查是很重要的,存儲過程通過確定數據是否需要處理來檢查數據。對于不能為空但又沒有填充數據的每個域返回一個“errors”節點。這個XML的輸出大致如下:

    user>. . ./user>errors>error>first_name/error>. . ./errors>

注意如果有一個錯誤匹配了節點名,那么產生的輸出將會是紅色的。我們需要下面的一個ASP將前面的所有東西組合起來。

%@ Language=VBScript %>
%
Option Explicit
Dim oUser
Set oUser = New CUser
If oUser.validate() Then
    Set oUser = Nothing
    Server.Transfer "NextPage.asp"
End If
%>
html>
body>
form method="POST" action="GetUser.asp" name="thisForm" id="thisForm">
%
Response.Write xslTransform(oUser.DOM, "user.xsl")
%>
input type="hidden" name="txtUserXML" id="txtUserXML"
 value="%=oUser.DOM.xml%>">
input type="submit" value="Submit">
/form>
/body>
/html>
%
Set oUser = Nothing

Function 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 = Nothing
End Function
%>
!--#include file="CUser.asp"-->

ASP代碼創建CUser對象,如果有數據就填充數據。然后使用CUser的DOM通過XSL轉換來創建結果HTML。轉換被包裝到一個叫做xslTransform的函數之中。而且,記住要將結果CUser DOM存儲到一個隱藏的INPUT>元素中。或者你可以將CUser DOM存儲到一個Session變量中并在初始化過程中將其取出。

在完成這個頁面之后,你可以基于前面的骨架代碼創建其它的頁面。現在你已經創建了一個數據收集的拷貝-粘貼方案。這個方案最優美的部分在于所有的輸出都是純HTML,沒有任何瀏覽器特有的性質或者樣式表。而且由于功能都被包裝到類中,所以你可以使用XSLT產生布局,代碼運行相當快。


--------------------------------------------------------------------------------
本文作者:Phillip Perkins是Ajilon Consulting的簽約人。他的經驗很豐富,從機器控制和客戶/服務器到企業內部網應用。

標簽:西雙版納 德州 益陽 寧夏 拉薩 黃石 宿遷 果洛

巨人網絡通訊聲明:本文標題《使用純HTML的通用數據管理和服務》,本文關鍵詞  使用,純,HTML,的,通用,數據管理,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用純HTML的通用數據管理和服務》相關的同類信息!
  • 本頁收集關于使用純HTML的通用數據管理和服務的相關信息資訊供網民參考!
  • 推薦文章
    99色精品| 美女免费精品视频在线观看| 日本伦理黄色大片在线观看网站| 国产一区二区精品久久| 久久国产影院| 精品国产一区二区三区国产馆| 成人免费观看视频| 国产一区二区精品在线观看| 国产综合成人观看在线| 一级毛片视频免费| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 欧美激情中文字幕一区二区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久99这里只有精品国产| 成人免费观看网欧美片| 日本免费看视频| 成人免费网站久久久| 精品国产一区二区三区久| 成人在免费观看视频国产| 韩国三级香港三级日本三级la| 麻豆网站在线免费观看| 久久久久久久男人的天堂| 天天做人人爱夜夜爽2020毛片| 亚欧成人毛片一区二区三区四区| 国产精品自拍一区| 久久精品免视看国产成人2021| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | a级毛片免费全部播放| 午夜久久网| 欧美激情一区二区三区视频| 国产网站在线| 日韩在线观看网站| 成人免费观看的视频黄页| 国产伦久视频免费观看 视频| 亚欧成人毛片一区二区三区四区| 午夜精品国产自在现线拍| 日韩中文字幕在线播放| 精品视频在线看 | 午夜激情视频在线观看| 99久久精品国产国产毛片 | 一a一级片| 日韩中文字幕在线亚洲一区| 黄色免费三级| 九九九在线视频| 精品国产亚洲人成在线| 欧美a级v片不卡在线观看| 国产成人欧美一区二区三区的| 日本免费乱人伦在线观看 | 黄色福利片| 色综合久久天天综合观看| 国产一区二区精品久| 可以在线看黄的网站| 韩国毛片| 国产91精品一区二区| 久久99青青久久99久久| 日本伦理黄色大片在线观看网站| 国产亚洲精品成人a在线| 亚洲精品久久久中文字| 精品毛片视频| 夜夜操网| 欧美一区二区三区性| 九九精品久久| 日韩免费片| 国产高清视频免费观看| 精品久久久久久中文| 国产一区二区精品久久91| 青青久热| 国产不卡精品一区二区三区| 国产精品自拍亚洲| 美女免费精品视频在线观看| 99久久网站| 黄视频网站在线观看| 黄视频网站免费| 99久久精品国产免费| 台湾毛片| 国产精品12| 亚洲 男人 天堂| 亚洲不卡一区二区三区在线| 国产国语对白一级毛片| 欧美a级成人淫片免费看| 精品视频免费在线| 中文字幕一区二区三区 精品| 九九热国产视频| 精品国产一区二区三区精东影业| 九九久久国产精品大片| 久草免费在线观看| 99色精品| 精品国产一区二区三区精东影业| 国产一级生活片| 四虎影视久久久免费| 日韩在线观看视频免费| 日本在线不卡视频| 欧美另类videosbestsex久久| 欧美1卡一卡二卡三新区| 999久久狠狠免费精品| 麻豆系列 在线视频| 成人a大片在线观看| 欧美电影免费看大全| 久久久久久久网| 亚飞与亚基在线观看| 在线观看成人网 | 亚洲爆爽| 国产麻豆精品高清在线播放| a级毛片免费观看网站| 久久精品免视看国产明星| 久久99爰这里有精品国产| 日韩中文字幕在线观看视频| 欧美a级片视频| 欧美电影免费看大全| 日韩专区在线播放| 国产伦精品一区二区三区无广告| 精品国产亚一区二区三区| 国产欧美精品| 午夜激情视频在线观看| 国产一级强片在线观看| 国产欧美精品| 国产网站免费视频| 99色视频在线| 国产91精品一区| 亚洲精品久久久中文字| 欧美一区二区三区在线观看| 精品在线免费播放| 九九干| 日韩avdvd| 成人a大片在线观看| 台湾美女古装一级毛片| 可以免费看污视频的网站| 国产伦精品一区二区三区在线观看| 国产伦精品一区三区视频| 日本在线不卡免费视频一区| 日韩在线观看视频免费| 日韩字幕在线| 国产a网| 久久国产精品只做精品| 日韩专区亚洲综合久久| 国产不卡在线观看| 在线观看导航| 亚洲精品久久久中文字| 你懂的日韩| 日韩在线观看视频免费| 精品国产一级毛片| 一级片片| 亚洲 激情| 日韩免费在线视频| 日韩专区亚洲综合久久| 欧美大片一区| 美女免费精品视频在线观看| 国产麻豆精品| 一级毛片视频在线观看| 精品视频在线看 | 91麻豆精品国产片在线观看| 毛片高清| 中文字幕一区二区三区精彩视频| 国产a免费观看| 黄视频网站在线看| 在线观看成人网 | 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久草免费在线观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产一区精品| 99久久精品国产高清一区二区 | 在线观看成人网 | 久久精品免视看国产明星| 在线观看成人网 | 九九免费高清在线观看视频| 日韩中文字幕一区| 久久国产精品只做精品| 精品国产三级a| 一级片免费在线观看视频| 色综合久久手机在线| 国产一区二区精品久| 91麻豆精品国产片在线观看| 亚洲精品影院一区二区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 成人免费福利片在线观看| 成人a大片在线观看| 一本伊大人香蕉高清在线观看| 欧美日本国产| 久久国产一区二区| 欧美日本韩国| 国产成人欧美一区二区三区的| 欧美爱色| 精品国产一区二区三区久久久蜜臀| 国产麻豆精品免费视频| 日本免费乱人伦在线观看 | 国产网站免费视频| 九九国产| 999久久狠狠免费精品| 国产极品白嫩美女在线观看看 | 成人免费观看的视频黄页| 日日日夜夜操| 韩国三级视频在线观看| 你懂的在线观看视频| 精品国产一区二区三区久久久蜜臀| 国产视频久久久久| 国产网站麻豆精品视频| 91麻豆国产| 国产成人欧美一区二区三区的| 国产视频一区在线| 韩国三级视频网站|