----------------
필요한 파일들
----------------
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍
실무교육센터
(신입사원채용무료교육, 오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷)
main.asp (메인)
book.asp
book_table.xsl
book_desc.xsl
book.css
default.gif
book.xml
asptest4.html, asptest4.asp, asptest4.xml, asptest4.css,
result.xml(이 파일은 미리 만들어둔다.)
asptest5.asp asptest5.xsl, asptest5-1.xsl,
asptest5.xml
같은 book.xml을 이용하여 다른 XSL을 통해
table형태와 description형태로
도서 목록을 나열하며
설문조사, 연락처변경하기 등을 ASP와 XML을 이용하여
구현한 예제 입니다...
------------
main.asp
------------
<html><head><title>ASP & XMLL 예제</title>
<meta http-equiv="Content-Type" content="text/html;
charset=euc-kr"></head>
<body><table>
<tr
valign="top">
<td width="163" bgcolor="#006699">
<table width="864" border="0" cellspacing="0" cellpadding="0"
height="455">
<tr valign="top">
<td
width="165" height="53">
<img
src="http://www.oraclejava.co.kr/images/owd.gif" width="164"
height="69"></td>
<td width="699" height="53"
bgcolor="#000000" align="center" valign="middle">
<font size="+4"
color="#FFFF00">ASP와 XML을 이용한 예제</font></td></tr>
<tr valign="top">
<td width="165" height="558"
bgcolor="#000000">
<p> </p>
<p><a href="main.asp?Type=Table"><font color="#99FF00">*
Table 형태</font></a></font></p>
<p><a href="main.asp?Type=Desc"><font color="#99FF00">*
Description 형태</font></a></font></p>
<p><a href="asptest4.html" target=_blank><font
color="#99FF00">* 설문조사</a></font></p>
<p><a
href="asptest5.asp" target=_blank><font color="#99FF00">*
연락처 정보
변경예제</a></font></p>
</td>
<td
width="699" height="558">
<iframe
src=book.asp?Type=<%=request("Type")%> width="699"
height="558"></iframe>
</td>
</tr>
</table> </td>
</tr></table></body></html>
------------
book.asp
------------
<%@ language=VBScript %>
<%
Dim myType
myType = request("Type")
response.write "<?xml
version='1.0' encoding='euc-kr' ?>" & chr(13)
if myType =
"Table" then
response.write "<?xml-stylesheet type='text/xsl'
href='book_table.xsl'?>"
else
response.write "<?xml-stylesheet
type='text/xsl' href='book_desc.xsl'?>"
end if
response.write
chr(13)
%>
<!-- #include file="book.xml" -->
------------
book.css
-------------
body {
background:#FFffFF;
}
h1 {
font-size:14pt;
font-weight:bold;
}
th {
font-size:10pt;
font-weight:bold;
background:#00ccff;
line-height:150%;
}
td {
font-size:9pt;
font-weight:normal;
background:#ffffcc;
line-height:150%;
}
-------------
book.xml
-------------
<books>
<book isbn="89-314-1826-5">
<name>Oracle정복</name>
<publisher>영진.com</publisher>
<price>15000</price>
<url>
http://www.oraclejava.co.kr</url>
<published>2002.09.01</published>
<desc>
<keyword>XML</keyword>
이번기회에 Oracle을 완전히 정복합시다~ 여러분,,
기회는 자주 오는것이 아닙니다.
<ref
url="http://www.Oraclejava.co.kr">Oracle교육사이트</ref>에 가시면
다양한 예제들을
보실수 있습니다.
from jclee...
</desc>
</book>
<book
isbn="02-3143-1826-7">
<name>Visual Basic 정복하기</name>
<publisher>삼양사</publisher>
<price>12000</price>
<url>
http://www.microsoft.co.kr</url>
<published>2002.10.01</published>
<desc>
<keyword>VB</keyword>
VB는 상당히 Powerful한 언어입니다...
꾸준히,,,
공부하세요.
from jclee...
</desc>
</book>
<book
isbn="02-3143-1826-8">
<name>MobileJava</name>
<publisher>영진.com</publisher>
<price>15000</price>
<url>
http://www.mobilejava.co.kr</url>
<published>2002.09.01</published>
<desc>
<keyword>Mobie Java</keyword>
Wireless는 향후 대세 입니다...
어떤
환경이 되었든 공부해 두시면 좋을것 같습니다.
<ref
url="http://www.mobilejava.co.kr">MobileJava 사이트</ref>에 가시면
기초부터 차근차근 접근할수 있는 예제들이 있습니다.
from jclee...
</desc>
</book>
</books>
--------------
book_desc.xsl
--------------
<?xml version="1.0"
encoding="euc-kr" ?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="4.0" encoding="euc-kr"/>
<xsl:attribute-set name="imageSize">
<xsl:attribute
name="width">120</xsl:attribute>
<xsl:attribute
name="height">120</xsl:attribute>
</xsl:attribute-set>
<xsl:template match="/">
<html>
<head>
<title>
<xsl:text
disable-output-escaping="no">상세정보</xsl:text>
</title>
<link rel="stylesheet" type="text/css" href="book2.css"/>
</head>
<body>
<xsl:apply-templates
select="books"/>
</body>
</html>
</xsl:template>
<xsl:template match="books">
<xsl:for-each select="book">
<xsl:sort select="date"
data-type="text" order="descending"/>
<table border="0">
<tr><td>
<a>
<xsl:attribute
name="href"><xsl:value-of select="url"/>
</xsl:attribute>
<img xsl:use-attribute-sets="imageSize">
<xsl:attribute
name="src">
<xsl:choose>
<xsl:when
test="image"><xsl:value-of select="image"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>default.gif</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</img>
</a>
</td>
<td valign="bottom">
<dl><dt>
<xsl:number value="position()" format="1. "/>
<xsl:value-of select="name" />
</dt>
<dd><xsl:apply-templates select="desc"/></dd>
</dl>
</td></tr></table> <hr/>
</xsl:for-each>
</xsl:template>
<xsl:template
match="ref">
<xsl:element name="a">
<xsl:attribute
name="href">
<xsl:value-of select="@url"/>
</xsl:attribute>
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
<xsl:template
match="keyword">
<span style="font-weight:bold;">
<xsl:value-of select="."/>
</span>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
------------------
book_table.xsl
------------------
<?xml version="1.0" encoding="euc-kr"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="4.0" encoding="euc-kr"/>
<xsl:decimal-format NaN = "미정" />
<xsl:template match="/">
<html><head>
<link rel="stylesheet" type="text/css"
href="book.css"/>
</head>
<h1>도서목록</h1>
<table border="1">
<tr>
<th>No.</th>
<th>ISBN Code</th>
<th>도서명</th>
<th>출판사</th>
<th>가격</th>
<th>발행일</th>
</tr>
<xsl:apply-templates
select="books"/>
</table>
</html>
</xsl:template>
<xsl:template match="books">
<xsl:for-each select="book">
<xsl:sort select="date"
data-type="text" order="descending"/>
<xsl:sort select="price"
data-type="number" order="ascending"/>
<tr>
<td>
<xsl:number value="position()" format="i"/>
</td>
<td>
<xsl:value-of select="@isbn"/>
</td>
<td>
<xsl:element name="a">
<xsl:attribute
name="href">
<xsl:value-of select="url"/>
</xsl:attribute>
<xsl:value-of select="name"/>
</xsl:element>
</td>
<td>
<xsl:value-of
select="publisher"/>
</td>
<td>
<xsl:value-of
select="format-number(price, '0,000')"/>
<xsl:if test="price[. !=
'']">원</xsl:if>
</td>
<td>
<xsl:value-of
select="published"/>
</td>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
-----------------------
asptest4.html
-----------------------
<html>
<head>
<title>설문조사</title></head>
<body>
<form
action="asptest4.asp" method="post">
<h3>당신의 소중한 의견을
적어주세요~</h3><hr>
XML강의시 좋았던 부분: <br>
<textarea
align=left cols="60" rows="10" id="firstName" name="좋았던점">
</textarea><br><br>
XML강의시 아쉬웠던 부분: <br>
<textarea align=left cols="60" rows="10" id="lastName" name="아쉬웠던점">
</textarea><br><br>
연락처: <input type="text"
id="phone" name="연락처"><br><br>
메일: <input type="text"
id="email" name="메일"><br><br>
<input type="submit"
id="btnSub" name="btnSub" value="Send"><br><br>
</form>
</body>
</html>
-----------------
asptest4.asp
-----------------
<%
'------------------------------------------
Function
ConvertFormtoXML(strXMLFilePath, strFileName)
Dim objDom, rootElement,
objChild, objField, x
'Microsoft XMLDOM을 초기화
Set objDom =
server.CreateObject("Microsoft.XMLDOM")
objDom.async=false
objDom.load Server.MapPath("result.xml")
Set rootElement =
objDom.documentElement
Set objChild= objDom.createElement("설문내용")
rootElement.appendChild objChild
Set objField =
objDom.createElement("번호")
objField.Text = rootElement.ChildNodes.Length
objChild.appendChild objField
Set objField =
objDom.createElement("작성일시")
objField.Text = now
objChild.appendChild objField
'Request Object의 컬렉션에서 루프를 돌자
For x
= 1 To Request.Form.Count
If instr(1,Request.Form.Key(x),"btn") = 0 Then
'html에서 넘어오는 값의 name으로 요소를 하나 만든다.
Set objField =
objDom.createElement(Request.Form.Key(x))
'html에서 넘어오는 값을 XML Tag의
Content로 저장
objField.Text = Request.Form(x)
'<설문내용>이라는
루트요소에 요소를 추가
objChild.appendChild objField
End If
Next
'XML document를 저장하자...
objDom.save strXMLFilePath &
strFileName
'참조를 Release
Set objDom = Nothing
Set
rootElement = Nothing
Set objField = Nothing
Set objChild = Nothing
End Function
'----------------------------------
'Function
Call
ConvertFormtoXML "c:\inetpub\wwwroot","result.xml"
If
err.number <> 0 then
Response.write("Errors occurred while saving
your form submission.")
response.write err.description
Else
Response.write("Your form submission has been saved.")
End If
%>
--------------
asptest4.xsl
--------------
<?xml
version="1.0" encoding="euc-kr" ?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="4.0" encoding="euc-kr" />
<xsl:template match="/">
<html><head>
<title><xsl:text>설문목록</xsl:text></title>
<link rel="stylesheet" type="text/css" href="asptest4.css"
/></head>
<h1><xsl:text>설문목록</xsl:text></h1>
<table
border="1">
<tr><th>번호</th><th>작성일시</th><th>좋았던점</th>
<th>아쉬운점</th>
<th>연락처</th>
<th>메일주소</th></tr>
<xsl:apply-templates select="설문리스트"
/>
</table>
</html>
</xsl:template>
<xsl:template match="설문리스트">
<xsl:for-each
select="설문내용">
<xsl:sort select="작성일시" data-type="text"
order="descending" />
<tr>
<td><xsl:value-of
select="번호"/></td>
<td><xsl:value-of
select="작성일시"/></td>
<td><xsl:value-of
select="좋았던점"/></td>
<td><xsl:value-of
select="아쉬웠던점"/></td>
<td><xsl:value-of
select="연락처"/></td>
<td><xsl:value-of
select="메일"/></td>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
------------------
asptest4.css
------------------
body{background:#FFffFF;}
h1{font-size:14pt;font-weight:bold;}
th{font-size:10pt;font-weight:bold;background:#00ccff;line-height:150%;}
td{font-size:9pt;font-weight:normal;background:#ffffcc;line-height:150%;}
-------------------
result.xml
-------------------
<?xml version="1.0" encoding="euc-kr"?>
<?xml-stylesheet
type="text/xsl" href="asptest4.xsl" ?>
<설문리스트>
</설문리스트>
-----------------
asptest5.xml
-----------------
<?xml version="1.0" encoding="euc-kr"?>
<연락처>
<field
id="이름" taborder="1">
<field_value>이종철</field_value>
</field>
<field id="나이" taborder="2">
<field_value>35</field_value>
</field>
<field
id="주소1" taborder="3">
<field_value>경기도 수원시 장안구
조원동</field_value>
</field>
<field id="주소2"
taborder="4">
<field_value>벽산A</field_value>
</field>
<field id="phone" taborder="5">
<field_value>016-766-5919</field_value>
</field>
<field id="E-Mail" taborder="6">
<field_value>
mylife688@hanmail.net</field_value>
</field>
</연락처>
-------------
asptest5.xsl
-------------
<?xml version="1.0" encoding="euc-kr"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<form method="post"
action="asptest5.asp">
<h1>연락처</h1>
<table
border="1" cellpadding="2">
<xsl:for-each select="연락처/field">
<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:template>
</xsl:stylesheet>
--------------
asptest5-1.xsl
---------------
<?xml version="1.0" encoding="euc-kr"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html> <body>
<h1>변경된 연락처 정보:</h1>
<table border="1"
cellpadding="2">
<xsl:for-each select="연락처/field">
<tr>
<td>
<xsl:value-of select="@id" />
</td>
<td>
<xsl:value-of select="field_value" />
</td>
</tr>
</xsl:for-each>
</table> <br/>
<input type="button"
onClick="javascript:self.close();" value="닫기"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
----------------
asptest5.asp
----------------
<%
Function loadXMLFile(strXMLFile, strXSLFile)
Dim objXML, objXSL
set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async =
false
objXML.load(strXMLFile)
set objXSL =
Server.CreateObject("Microsoft.XMLDOM")
objXSL.async = false
objXSL.load(strXSLFile)
'XML문서와 XSL문서를 대응시킴
Response.Write(objXML.transformNode(objXSL))
End Function
Function updateXML(strXMLFile)
Dim objDom, objRoot, objField, x
set objDOM = Server.CreateObject("Microsoft.XMLDOM")
objDOM.async =
false
objDOM.load strXMLFile
Set objRoot = objDom.documentElement
For x = 1 to Request.Form.Count
If instr(1,Request.Form.Key(x),"btn")
= 0 Then
Set objField = objRoot.selectSingleNode("field[@id='" & _
Request.Form.Key(x) & "']/field_value")
objField.Text =
Request.Form(x)
End If
Next
objDom.save strXMLFile
Set
objDom = Nothing
Set objRoot = Nothing
Set objField = Nothing
loadXMLFile strXMLFile,server.MapPath("asptest5-1.xsl")
End
Function
If Request("btnSubmit") = "" Then
loadXMLFile
server.MapPath("asptest5.xml"), server.MapPath("asptest5.xsl")
Else
updateXML server.MapPath("asptest5.xml")
End If
%>