XSL 및 ASP를 사용하여 XML 문서의 온라인 편집
저자:Eve Cole
업데이트 시간:2009-06-23 16:38:26
이 기사에서는 자세한 예를 통해 XML 문서 데이터의 온라인 편집 방법을 설명합니다. Netscape의 XML 지원은 상대적으로 약하기 때문에 플랫폼 간 데이터 교환을 달성하려면 데이터 처리가 서버 측에서 수행되어야 합니다. XML 문서를 편집하기 위해 가장 먼저 해야 할 일은 데이터를 추출하여 방문자에게 표시하는 방법입니다. XSL은 XML 파일을 표시하는 데 좋은 솔루션을 제공합니다. 다음 예에서는 XSL 스타일시트를 사용하여 사용자가 편집할 수 있는 XML 문서를 표시한 다음 편집된 데이터를 서버에 제출합니다. 그러면 서버 측에서 데이터가 업데이트됩니다. 여기에서는 작업을 완료하기 위해 ASP(Active Server Pages)가 사용됩니다.
먼저 편집하려는 XML 문서를 로드합니다. Microsoft의 문서 개체 모델(Microsoft XMLDOM 개체)과 XSL을 사용하면 서버 측에서 XML 문서를 클라이언트 측에 표시할 수 있는 HTML 파일 콘텐츠로 변환할 수 있습니다. 먼저 우리가 사용하는 XML 및 XSL 파일이 어떤 모습인지 살펴보겠습니다.
XML 파일: userdata.xml
<?xml version="1.0" 인코딩="gb2312"?>
<사용자 프로필>
<field id="이름" taborder="1">
<field_value>맹자</field_value>
</field>
<field id="성별" taborder="2">
<field_value>남성</field_value>
</field>
<field id="조직 이름" taborder="3">
<field_value>중국네트워크기술개발공사 베이징지사</field_value>
</field>
<field id="상세주소" taborder="4">
<field_value>베이징 케리 센터 102층</field_value>
</field>
<field id="전화" taborder="5">
<field_value>1391139136*</field_value>
</field>
<필드 id="이메일" taborder="6">
<field_value>[email protected]</field_value>
</field>
</사용자 프로필>
'www.knowsky.com
XSL 파일: userdata.xsl
<?xml version="1.0" 인코딩="gb2312" ?>
<xsl:스타일시트 xmlns:xsl=" http://www.w3.org/TR/WD-xsl ">
<xsl:템플릿 일치="/">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<본문>
<form method="post" action="Edituserdata.asp">
<h1>사용자 프로필 편집:</h1>
<테이블 테두리="1" cellpadding="2">
<xsl:for-each select="사용자 프로필/필드">
<tr>
<TD>
<xsl:value-of select="@id"/>
</td>
<TD>
<input type="text"> <xsl:attribute name="id"> <xsl:value-of select="@id" /> </xsl:attribute> <xsl:attribute name="name"><xsl :value-of select="@id" /></xsl:attribute> <xsl:attribute name="value"> <xsl:value-of select="field_value" /> </xsl:attribute></input >
</td>
</tr>
</xsl:for-each>
</table>
<br />
<input type="submit" id="btnSubmit" name="btnSubmit" value="수정 완료" />
</form>
</body>
</html>
</xsl:템플릿>
</xsl:스타일시트>
XSL 파일은 XSL:for-each 요소를 사용하여 XML 파일 전체를 탐색합니다. XML 파일에 있는 각 "필드" 요소의 "id" 속성은 텍스트 입력 상자의 "id" 및 "name"에 해당합니다. HTML 양식. 이런 식으로 HTML 양식의 텍스트 입력 상자에는 XML 파일의 요소 값이 표시됩니다. 이 파일은 다양한 브라우저에 표시될 수 있도록 XML 문서의 서버측 변환을 담당합니다.
다음은 XML 문서 열기 및 업데이트 기능을 구현하고, 양식 제출 여부에 따라 업데이트 여부를 결정하는 핵심 프로그램입니다. 여기에는 두 가지 함수가 포함되어 있습니다. loadXMLFile은 표시할 XML 파일을 로드하고 변환하는 역할을 하며, updateXML 함수는 XML 파일 업데이트를 담당합니다.
Edituserdata.asp 프로그램은 다음과 같습니다.
<%
''------------------------------------------------ ----------
''두 개의 매개변수를 받는 loadXMLFile() 함수를 정의합니다.
''strXMLFile - XML 파일의 경로 및 파일 이름
''strXSLFilee - XSL 파일의 경로 및 파일 이름
'www.knowsky.com
''------------------------------------------------ ----------
함수 loadXMLFile(strXMLFile, strXSLFile)
''지역변수 선언
희미한 objXML
희미한 objXSL
''XML 파일을 로드하기 위해 XMLDOM 개체를 인스턴스화합니다.
set objXML = Server.CreateObject("Microsoft.XMLDOM")
''비동기 파일 로딩 모드를 끕니다.
objXML.async = 거짓
''XML 파일을 로드하세요!
objXML.load(strXML파일)
''XSL 파일을 로드하기 위해 XMLDOM 개체를 인스턴스화합니다.
set objXSL = Server.CreateObject("Microsoft.XMLDOM")
''비동기 파일 로딩 모드를 끕니다.
objXSL.async = 거짓
''XSL 파일을 로드하세요!
objXSL.load(strXSL파일)
''XSL 스타일 시트를 XML 문서에 적용한 후 클라이언트에 출력하려면 XMLDOM의 변환Node 메소드를 사용하십시오.
응답.쓰기(objXML.transformNode(objXSL))
기능 종료
''------------------------------------------------ ------------------
''updateXML() 함수는 strXMLFile - XML 파일의 경로 및 파일 이름이라는 하나의 매개변수를 받습니다.
''------------------------------------------------ ------------------
함수 updateXML(strXMLFile)
''지역변수를 선언합니다.
희미한 객체
희미한 객체 루트
희미한 objField
희미한 x
''XMLDOM 개체를 인스턴스화합니다.
set objDOM = Server.CreateObject("Microsoft.XMLDOM")
''비동기 파일 로딩 모드를 끕니다.
objDOM.async = 거짓
''XML 파일을 로드합니다.
objDOM.strXML파일 로드
''루트 요소를 설정합니다.
objRoot = objDom.documentElement 설정
''FORM 컬렉션을 탐색하고 제출된 데이터를 XML 파일에 씁니다.
x = 1에서 Request.Form.Count까지
''제출된 데이터에 버튼이 포함되어 있는지 확인하세요. 그렇다면 이 데이터를 무시하십시오.
instr(1,Request.Form.Key(x),"btn") = 0인 경우 그러면
''XSL 쿼리 모드에 따라 objField 변수를 설정하고 양식의 요소를 XML 문서의 해당 요소 [field_value]에 매핑합니다.
objField = objRoot.selectSingleNode("field[@id=''" & Request.Form.Key(x) & "'']/field_value") 설정
'' 양식으로 제출된 데이터를 XML 문서의 노드 값에 해당합니다.
objField.Text = 요청.양식(x)
종료 조건
다음
''편집된 XML 파일을 저장합니다.
objDom.save strXML파일
''객체에 대한 모든 참조를 해제합니다.
objDom = 아무것도 설정하지 않음
objRoot = 없음으로 설정
objField = 없음 설정
''loadXMLFile 함수를 호출하여 업데이트된userdata.xsl 스타일 시트를 사용하여 새로 편집된 XML 파일을 클라이언트에 표시합니다.
loadXMLFile strXMLFile,server.MapPath("updateduserdata.xsl")
기능 종료
''양식이 성공적으로 제출되었는지 확인하고, 제출된 경우 XML 파일을 업데이트하고, 그렇지 않으면 편집 상태로 이동합니다.
Request.Form("btnSubmit") = ""인 경우
loadXMLFile server.MapPath("userdata.xml"),server.MapPath("userdata.xsl")
또 다른
updateXML 서버.MapPath("userdata.xml")
종료 조건
%>
양식이 성공적으로 제출되면 updateuserdata.xsl을 사용하여 방금 편집한 데이터를 표시합니다.
업데이트된userdata.xsl은 다음과 같습니다.
<?xml version="1.0" 인코딩="gb2312" ?>
<xsl:스타일시트 xmlns:xsl=" http://www.w3.org/TR/WD-xsl ">
<xsl:템플릿 일치="/">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<본문>
<h1>업데이트된 사용자 정보는 다음과 같습니다.</h1>
<테이블 테두리="1" cellpadding="2">
<xsl:for-each select="사용자 프로필/필드">
<tr>
<TD>
<xsl:value-of select="@id" />
</td>
<TD>
<xsl:value-of select="필드_값" />
</td>
</tr>
</xsl:for-each>
</table>
<양식>
<input type="button" value="Return" onclick="history.go(-1)" />
</form>
</body>
</html>
</xsl:템플릿>
</xsl:스타일시트>
위의 내용은 XML 크로스 플랫폼 애플리케이션의 간단한 예일 뿐입니다. 특정 요구 사항에 따라 더 강력한 프로그램을 작성하여 더 복잡한 작업을 완료할 수 있습니다. 모든 프로그램은 WIN98SE+PWS+IE5.5+Netscape 4.75+Netscape 6+MSXML3.DLL 환경에서 디버깅 및 전달되었습니다.