순수 HTML 의 유 니 버 설 데이터 관리 와 서 비 스 를 사용 합 니 다.

순수 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 클래스 는 데이터 접근 층 기반(mDAL)구성 요소 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 를 사용 하여 구 조 를 만 들 수 있 고 코드 운행 이 상당히 빠르다.이 글 쓴 이:Phillip Perkins 는 Ajilon Consulting 의 계약 자 입 니 다.그의 경험 은 매우 풍부 해서 기계 제어 와 고객/서버 부터 기업 내부 네트워크 응용 까지 다양 하 다.

좋은 웹페이지 즐겨찾기