순수 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 redblack First Name: redblack MI: redblack 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%><%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 의 계약 자 입 니 다.그의 경험 은 매우 풍부 해서 기계 제어 와 고객/서버 부터 기업 내부 네트워크 응용 까지 다양 하 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: