리그캣의 개발놀이터

XML을 이용한 개인 시간표 게시판 본문

팀 활동/프로젝트

XML을 이용한 개인 시간표 게시판

리그캣 2018. 1. 22. 16:10

 1. 목표 정보항목 개요:


 목표 정보항목은 나의 강의 시간표로 정했습니다. 시간표를 목표로 정한 이유는 앞으로 제가 3학기라는 시간을 학교에서 더 보내야 하는데. 항상 새로운 학기가 시작될 때마다 시간표를 짜야하는 번거로움이 있었습니다. 시간표를 워드 파일로 작성해서는 이쁘지도 않고 쉽게 눈에 들어오지도 않아 이왕 과제를 하는겸 나의 시간표 사이트를 만들어 보자는 취지로 수행학 되었습니다.


2. XML 문서 모델(XML 문서의 구조도)


3. XML문서의 Schema Validation 확인:


에러를 찾아보니 xml문장선언 앞에 공백이나 주석이 나오면 뜨는 에러문이라고 나왔지만 그런 것은 찾을 수가 없었습니다.


4. XML문서의 Transformation 된 결과화면



css참고 : http://www.free-css.com/


원래 적용하려던 css



5. 모든 소스 코드 출력물(.xml, .xsd, .xsl)


-TimeTable.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
<?xml version="1.0" encoding="euc-kr"?>
<?xml:stylesheet type="text/xsl" href="TimeTable.xsl"?>
<TimeTable xmlns="http://www.ksh3236.com/TimeTable"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xsi:schemaLocation="http://www.ksh3236.com/TimeTable Time.xsd">
    <Time>
        <시간>09:00 ~ 10:30</시간>
        <>
            <강의이름>알고리즘분석및응용</강의이름>
            <담당교수>정태의</담당교수>
            <수업교실>(북)-컴퓨터과학과강의실</수업교실>
        </>
        <>
 
 
            <강의이름>컴퓨터네트워크</강의이름>
            <담당교수>곽재창</담당교수>
            <수업교실>(북)-컴퓨터과학과강의실</수업교실>
        </>
        <>
            <강의이름>알고리즘분석및응용</강의이름>
            <담당교수>정태의</담당교수>
            <수업교실>(북)-컴퓨터과학과강의실</수업교실>
        </>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S center</수업교실>
        </>
        <>
            <강의이름></강의이름>
            <담당교수></담당교수>
            <수업교실></수업교실>
        </>
    </Time>
    <Time>
        <시간>10:30 ~ 12:00</시간>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S center</수업교실>
        </>
        <>
            <강의이름>컴퓨터네트워크</강의이름>
            <담당교수>곽재창</담당교수>
            <수업교실>(북)-컴퓨터과학과강의실</수업교실>
        </>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S center</수업교실>
        </>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S center</수업교실>
        </>
        <>
            <강의이름>데이터베이스</강의이름>
            <담당교수>민미경</담당교수>
 
 
            <수업교실>(북)-컴퓨터과학과강의실</수업교실>
        </>
    </Time>
    <Time>
        <시간>12:00 ~ 13:30</시간>
        <>
            <강의이름></강의이름>
            <담당교수></담당교수>
            <수업교실></수업교실>
        </>
        <>
            <강의이름></강의이름>
            <담당교수></담당교수>
            <수업교실></수업교실>
        </>
        <>
            <강의이름>컴퓨터그래픽스</강의이름>
            <담당교수>류석원</담당교수>
            <수업교실>(북)-소프트웨어개발실습실</수업교실>
        </>
        <>
            <강의이름></강의이름>
            <담당교수></담당교수>
            <수업교실></수업교실>
        </>
        <>
            <강의이름>데이터베이스</강의이름>
            <담당교수>민미경</담당교수>
            <수업교실>(북)-컴퓨터과학과강의실</수업교실>
        </>
    </Time>
    <Time>
        <시간>13:30 ~ 15:00</시간>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S center</수업교실>
        </>
        <>
            <강의이름>임베디드시스템</강의이름>
            <담당교수>정태의</담당교수>
            <수업교실>(북)-소프트웨어개발실습실</수업교실>
        </>
        <>
            <강의이름>컴퓨터그래픽스</강의이름>
 
 
            <담당교수>류석원</담당교수>
            <수업교실>(북)-소프트웨어개발실습실</수업교실>
        </>
        <>
            <강의이름>임베디스시스템</강의이름>
            <담당교수>정태의</담당교수>
            <수업교실>(북)-소프트웨어개발실습실</수업교실>
        </>
        <>
            <강의이름>XML프로그래밍</강의이름>
            <담당교수>신우창</담당교수>
            <수업교실>(북)-인터넷정보기술실습실</수업교실>
        </>
    </Time>
    <Time>
        <시간>15:00 ~ 16:30</시간>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S Center</수업교실>
        </>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S Center</수업교실>
        </>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S Center</수업교실>
        </>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S Center</수업교실>
        </>
        <>
            <강의이름>XML프로그래밍</강의이름>
            <담당교수>신우창</담당교수>
            <수업교실>(북)-인터넷정보기술실습실</수업교실>
        </>
    </Time>
    <Time>
        <시간>16:30 ~ 18:00</시간>
        <>
 
 
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S Center</수업교실>
        </>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S Center</수업교실>
        </>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S Center</수업교실>
        </>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S Center</수업교실>
        </>
        <>
            <강의이름>근무</강의이름>
            <담당교수>-</담당교수>
            <수업교실>A/S Center</수업교실>
        </>
    </Time>
</TimeTable>
 
cs


-Time.xsd


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?xml version="1.0" encoding="euc-kr"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
              targetNamespace="http://www.ksh3236.com/TimeTable"
              xmlns:target="http://www.ksh3236.com/TimeTable"
              elementFormDefault="qualified">
    <group name="TimeGroup">
        <sequence>
            <element name='강의이름' type="string"/>
            <element name="담당교수" type="string"/>
            <element name="수업교실" type="string"/>
        </sequence>
    </group>
    <element name="TimeTable">
        <complexType>
            <sequence>
                <element name="Time" minOccurs="0" maxOccurs="unbounded">
                    <complexType>
                        <sequence>
                            <element name="시간" type="string"/>
                            <element name="월">
                                <complexType>
                                    <group ref="target:TimeGroup"/>
                                </complexType>
                            </element>
                            <element name="화">
                                <complexType>
                                    <group ref="target:TimeGroup"/>
                                </complexType>
                            </element>
                            <element name="수">
                                <complexType>
                                    <group ref="target:TimeGroup"/>
                                </complexType>
                            </element>
                            <element name="목">
                                <complexType>
                                    <group ref="target:TimeGroup"/>
                                </complexType>
                            </element>
                            <element name="금">
                                <complexType>
                                    <group ref="target:TimeGroup"/>
                                </complexType>
                            </element>
                        </sequence>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>
 
cs




-Time.xsl


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?xml version="1.0" encoding="euc-kr"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" 
 xmlns:foo="http://www.ksh3236.com/TimeTable" exclude-result-prefixes="foo">
<xsl:template match="/foo:TimeTable">
   <HTML>
   <head>
      <TITLE> 승혁이의 강의 시간표</TITLE>
      <meta http-equiv="Content-Type" content="text/html" charset="utf-8"/>
      <link href="http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400" rel="stylesheet"/>
      <script src="js/jquery-1.9.1.min.js"></script>
      <script src="css/5grid/init.js?use=mobile,desktop"></script>
      <script src="js/jquery.formerize-1.1.js"></script>
      <script src="js/init.js"></script>
      <noscript>
      <link rel="stylesheet" href="css/5grid/core.css"/>
      <link rel="stylesheet" href="css/5grid/core-desktop.css"/>
      <link rel="stylesheet" href="css/5grid/core-1200px.css"/>
      <link rel="stylesheet" href="css/5grid/core-noscript.css"/>
      <link rel="stylesheet" href="css/style.css"/>
      <link rel="stylesheet" href="css/style-desktop.css"/>
      <link rel="stylesheet" href="css/noscript.css"/>
      </noscript>
   </head>
<body class="homepage">
<div id="wrapper">
  <nav id="nav"> <a href="#me" class="icon icon-user active"><span>Me</span></a> <a href="#timetable" class="icon icon-folder"><span>timetable</span></a> <a href="#email" class="icon icon-mail"><span>Email Me</span></a> <a href="#" class="icon icon-twitter"><span>Twitter</span></a> </nav>
  <div id="main">
    <article id="me" class="panel">
      <header>
        <h1>SH Kwak</h1>
        <span class="byline">Just an ordinary college student</span> </header>
      <a href="#timetable" class="jumplink pic"> <span class="jumplink arrow icon icon-right"><span>See my timetable</span></span<!--<img src="images/me.jpg" alt=""/>--> </a> </article>
    <article id="timetable" class="panel">
      <header>
        <h2>TimeTable</h2>
      </header>
      <p> My TimeTable </p>
 
         <TABLE align="center" BORDER="0" cellpadding="5" cellspacing="2">
               <THEAD>
               <TR>
                      <TH bgcolor="#0365B1"><font color="white">시간</font></TH>
                      <TH bgcolor="#0365B1"><font color="white">월</font></TH>
                      <TH bgcolor="#0365B1"><font color="white">화</font></TH>
                      <TH bgcolor="#0365B1"><font color="white">수</font></TH>
                      <TH bgcolor="#0365B1"><font color="white">목</font></TH>
                      <TH bgcolor="#0365B1"><font color="white">금</font></TH>
               </TR>
               </THEAD>
               <TBODY>
                    <xsl:apply-templates select = "/foo:TimeTable/foo:Time">
                        <xsl:sort order="ascending" select="foo:시간"/>
                    </xsl:apply-templates>
             </TBODY>
     </TABLE>
 
    </article>
    <article id="email" class="panel">
      <header>
        <h2>Email Me</h2>
      </header>
      <form action="#" method="post">
        <div class="5grid">
          <div class="row">
            <div class="6u">
              <input type="text" class="text" name="name" placeholder="Name"/>
            </div>
            <div class="6u">
              <input type="text" class="text" name="email" placeholder="Email"/>
            </div>
          </div>
          <div class="row">
            <div class="12u">
              <input type="text" class="text" name="subject" placeholder="Subject"/>
            </div>
          </div>
          <div class="row">
            <div class="12u">
              <textarea name="message" placeholder="Message"></textarea>
            </div>
          </div>
          <div class="row">
            <div class="12u">
              <input type="submit" class="button" value="Send Message"/>
 
           </div>
          </div>
        </div>
      </form>
    </article>
  </div>
  <div id="footer">
    <ul class="links">
      <li>Kwak SH</li>
      <li>University : <a href="https://www.skuniv.ac.kr/">S.K</a></li>
      <li>Department : <a href="https://cs.skuniv.ac.kr/">Computer Science</a></li>
    </ul>
  </div>
</div>
</body>
   </HTML>
</xsl:template>
 
<xsl:template match ="/foo:TimeTable/foo:Time">
      <TR>
      <TD bgcolor="#DEE3EF"><p align="center" style="margin-top:3px;"><xsl:value-of select="foo:시간"/></p></TD>
      <TD bgcolor="#DEE3EF"><p align="center" style="margin-top:3px;"><xsl:value-of select="foo:월/foo:강의이름"/><br/><xsl:value-of select="foo:월/foo:담당교수"/><br/><xsl:value-of select="foo:월/foo:수업교실"/></p></TD>
      <TD bgcolor="#DEE3EF"><p align="center" style="margin-top:3px;"><xsl:value-of select="foo:화/foo:강의이름"/><br/><xsl:value-of select="foo:화/foo:담당교수"/><br/><xsl:value-of select="foo:화/foo:수업교실"/></p></TD>
      <TD bgcolor="#DEE3EF"><p align="center" style="margin-top:3px;"><xsl:value-of select="foo:수/foo:강의이름"/><br/><xsl:value-of select="foo:수/foo:담당교수"/><br/><xsl:value-of select="foo:수/foo:수업교실"/></p></TD>
      <TD bgcolor="#DEE3EF"><p align="center" style="margin-top:3px;"><xsl:value-of select="foo:목/foo:강의이름"/><br/><xsl:value-of select="foo:목/foo:담당교수"/><br/><xsl:value-of select="foo:목/foo:수업교실"/></p></TD>
      <TD bgcolor="#DEE3EF"><p align="center" style="margin-top:3px;"><xsl:value-of select="foo:금/foo:강의이름"/><br/><xsl:value-of select="foo:금/foo:담당교수"/><br/><xsl:value-of select="foo:금/foo:수업교실"/></p></TD>
      </TR>
      
</xsl:template>
</xsl:stylesheet>
 
cs





Comments