728x90
: eXtensible Markup Language (부가적인 마크업 언어)
- XML ⇒ 데이터 저장방식. Standard Text Data
- 어떤 플랫폼에서나 읽을 수 있는 포맷 제공, 고정된 형식이 아닌 확장이 가능한 언어
- 태그를 사용자가 직접 정의할 수 있으며 그 태그를 다른사람들이 사용하도록 할 수 있다. 다른언어를 기술하기 위한 언어, 즉 메타언어이다.
- 마크업: 원래의 내용에 특별한, 또는 추가적인 정보를 표시하는 모든 것을 의미.
예) 밑줄, 색상, 폰트의 변화, 번호매기기 등등
XML 문서구조 형태
[XML선언]
<?xml version="1.0" encoding="UTF-8"?>
[DTD]
<!DOCTYPE root[
<!ELEMENT root(#PCDATA)>]>
[도큐먼트 인스턴스]
-- 엘리먼트 컨텐트
<시작태그>내용(데이터)</끝태그>
<사람나이>23</사람나이>
-- 속성값
<시작태그 속성명="속성값">
<빈태그 속성명="속성값">
<사람 이름="나길동"> //나길동:데이터 , 이름:데이터에 대한 설명
- 엘리먼트 컨텐트 : 태그명이 데이터에 대한 설명
- 속성값: 속성명이 데이터에 대한 설명
DTD
- Document Type Definition (문서 원형 정의) ⇒ 문서 작성 규칙
- XML 문서 내에 출현할 엘리먼트, 속성의 종류, 순서, 데이터의 종류를 정의
- XML 문서 구성시 선택적 사항이다.
- XML 문서는 DTD를 포함하는지의 여부에 따라 구조적으로 정확한 문서인지, 또는 완전한 형식의 문서인지로 구분된다.
XML Schema
-
DTD와 같은 개념. 업그레이드된 DTD
⇒ 여러 자료형을 정의할 수 있다.( 사용자 정의 자료형 )
⇒ 태그의 출현 횟수를 정의하는 것이 편리 -
객체의 클래스 특성을 정의하는 것으로, XML의 경우 스키마란 문서가 마크업되는 방식에 대한 정의를 뜻함
-
XML문서의 형식: 문서 내에 어떤 태그와 속성을 사용할 것인지 정의)
선언위치)
-DTDDTD선언위치
-XMLSchema
<root 스키마선언>
예) DTD를 통해 태그 내에 자식태그 가 최소 1번, 최대 5번 출현하는 것을 정의
<!ELEMENT root (a,a?,a?,a?,a?)>=> Schema에서는 속성 minOccurs="1" maxOccurs="5"
-
주의) DTD 혹은 XMLSchema를 동시에 선언할 수 없다.
-
확장자.xsd 사용, XML문법을 사용
-
작성법)
- simpleType : 태그내의 자료형(숫자, 문자, 날짜) 정의
- complexType :태그내의 자식요소 정의
적격(Well-Formed)문서
- 어떤 문서가 하나의 XML 문서로 간주되는데 필요한 최소한의 필수조건들의 집합을 의미.
- 문법에 맞춘 문서. DTD를 가지지 않을 수도 있는 문서
유효한(Valid) 문서
- 적격문서보다 더 엄격한 조건들을 준수해야함.
- 모든규칙을 따르고, 반드시 DTD를 가져야 하며 해당 XML 문서에 연관된 DTD 정의를 지켜야 함
태그(엘리먼트) 정의
<!ELEMENT 태그명 (자식요소에대한 표현)>
<!ELEMENT person (x)>
=> <person> <x/> </person> //유효한 문서
=> <person> <x/> <x/> </person> //규칙 어김. 유효하지 않은 문서
<!ELEMENT person (x|y)>
=> x / y
<!ELEMENT person (x,y)>
=> x y
<!ELEMENT person x,y?>
=> x y / x
<!ELEMENT person (x,y)?>
=> x y / x / y / 전체생략가능
<x/>
⇒ 빈태그
<!ELEMENT person (#PCDATA|TweetyElem|SylvesterElem)*>//순서에 상관없이. 생략가능
=> <!ELEMENT person (#PCDATA|name|age)*>
<!ELEMENT person EMPTY>
<!ELEMENT person ANY>
#PCDATA
: 문자데이터를 사용EMPTY
: 내용이 없는것을 표시ANY
: 어떠한 종류의 내용도 허용
속성 정의
<!ATTRIBUTE 속성명 자료형> ==>오류발생.속성은 엘리먼트에 종속적이기 때문에 엘리먼트와 함께 정의해야함
<!ATTLIST 태그명
속성명1 속성자료형 추가특성
속성명2 속성자료형 추가특성
속성명3 속성자료형 추가특성>
<!ATTLIST mycar is_blue (yes|no) "yes"
brandname ID #REQUIRED
description CDATA #IMPLIED>
=>문서적용
<root>
<mycar is_blue="no" brandname="gia" description="beautiful car"/>
</root>
<root>
<mycar is_blue="yo" brandname="5gia" description="beautiful car"/>
</root>
=> 에러. 자바 연동시 SAXParseException 발생
XML Namespace
- 이름 충돌 방지
- URI로 식별되는 이름들의 집합
CSV
- 콤마를 구분자로 하는 데이터
XML문서 Parser(분석기)
DOM
- 방식: tree(메모리) 기반 분석
SAX
- 방식: event(사건) 기반 분석
'Web develop > JDBC_XML' 카테고리의 다른 글
[XML] DOM(Document Object Model) (0) | 2019.07.10 |
---|---|
[XML] XML 자주쓰이는 문법 정리 (0) | 2019.07.10 |
[JDBC] Properties 사용법 및 사용예시 (0) | 2019.07.10 |
[JDBC] JDBC 프로그래밍 (0) | 2019.07.10 |
[JDBC] Swing에서 중복아이디 체크하기 (PrepareStatement 사용) (0) | 2019.06.19 |