XML
등장
읽기 쉽고, 모호하지 않으며, 확장가능하고, 플랫폼 독립적이며, 구조화된 데이터를 텍스트로 표현하는 방법이 필요했다!
그때 썬마이크로시스템의 Jon Bosak이 XML을 고안하고, 이는 1998년에 W3C에 의해 공인됨
관련 기술: XML, XLink, XPointer, XFragments CSS, XSL, XSLT, DOM, XML Namespaces, XML Schemas
특징 : HTML의 간결함 SGML의 확장가능함
* HTML의 확장불가능한 태그셋에서 탈피
* 강력하지만 너무 복잡한 SGML을 단순화
* 사람도 기계도 쉽게 읽을수 있는 마크업랭귀지!
* 내용과 서식을 철저하게 분리함
* 확장성: 엘리먼트와 어트리뷰트를 정의할 수 있게함
구성요소
* XML: 실제 문서
* DTD(혹은 Schema): 문서의 형식을 정의하는 문서
* XSL: 문서가 어떻게 보여줄지 표현하는 문서
문법
* 빈 요소를 포함하여 모든 요소는 여는 태그와 닫는 태그로 구성됨. 여는 태그와 닫는 태그 사이에 일반 텍스트 혹은 다른 요소들을 포함할 수 있음
여는 태그: <name>
사이에 있는 내용물들
닫는 태그: </name>
* 요소 이름 규칙
xml로 시작하는 이름은 예약되어 있으니 요소 이름은 xml로 시작하면 안됨.
이름은 대소문자를 구분한다.
ns:element와 같이 네임스페이스를 앞에 명시할 수 있음. 생략하면 기본 네임스페이스에 포함됨
* 빈 요소일 경우 여닫는 태그를 합쳐서 하나로 표현가능
합쳐진 태그: <name /> (<name></name> 를 축약한 표현)
* 모든 속성들은 ""로 둘러싸여있어야함. key="value" 의 형태로 나타나며 여는 태그에 위치한다.
<name attribute="value" />
속성 중 xml:lang, xml:space는 예약되어있으므로 사용하지 말것
* 열고 닫는 태그들은 계층적으로 위치해야함
이딴건 안됨: <a><b></a></b>
이렇게 되어야함: <a><b></b></a>
* 최상위 요소는 반드시 유일해야함
최상위 요소 2개 이상이면 에러
* < > & ]]> 와 같은 문자를 표현하려면 이스케이프 시켜야함 : & < > " '
* DTD가 없으면 모든 속성들은 기본적으로 CDATA타입으로 처리됨
* XML 선언 <?xml ~~?> : 문서 제일 앞에 나타나며, 이 문서가 XML문서라는걸 알려준다
사용 가능한 속성
* version: XML 버전
* encoding: 문자 인코딩
* standalone: 외부 자원의 지원 없이 단독으로 사용가능한지
* DTD 선언 <!DOCTYPE root-element (SYSTEM "uri")| (PUBLIC "name" "uri") > : 이 문서가 어떤 DTD를 사용하는지 표기한다
* 주석 <!-- 내용 --> : XML 선언 앞에 올수 없음. 태그 중간에 올수 없음. 주석으로 처리된 부분은 파서가 신경쓰지 않고 쿨하게 패스한다.
* CDATA: <![CDATA[ 내용 ]]> 안의 내용을 일반 텍스트로 처리하도록 함
DTD
* 어떤 요소가 사용가능하고, 그 요소는 어떤 속성을 가지며, 그 속성의 값은 어떤 타입인지를 정의함
<!ELEMENT endangered_species (animal*)>
<!ELEMENT animal (name , threats, weight?, length?, source, picture, subspecies )>
<!ELEMENT name (#PCDATA)>
<!ATTLIST name language (English | Latin) #REQUIRED>
<!ELEMENT threats (threat*)>
<!ELEMENT threat (#PCDATA)>
<!ELEMENT weight (#PCDATA)>
<!ELEMENT length (#PCDATA)>
<!ELEMENT source EMPTY>
<!ATTLIST source sectionid CDATA #REQUIRED newspaperid CDATA #REQUIRED>
<!ELEMENT picture EMPTY>
<!ATTLIST picture filename CDATA #REQUIRED
x CDATA #REQUIRED
y CDATA #REQUIRED>
<!ELEMENT subspecies (name , region, population)>
<!ELEMENT region (#PCDATA)>
<!ELEMENT population (#PCDATA)>
<!ATTLIST population year CDATA #REQUIRED>
눈치 빠르면 걍 이해가능할듯
*, , ? 는 정규식의 그 것들과 의미가 같음
* XML 문법이 아님. 확장 불가능, 네임스페이스 지원이 미비. 지원도 잘 안됨. 구닥다리. 최신 기술인 Schema를 이용하세요
Schema
* DTD보다 강력한 기능, 다양한 데이터 타입 지원, XML 문법, 많은 XML도구들이 지원함
* 사람이 직접짜는건 좀 많이 삽질이고. XML Spy, XML Notepad 등의 도구를 이용해 생성하세요
|
DTD |
XML Schema |
문서 형태 |
XML 문법이 아님 |
XML 문법을 따름 |
데이터 타입 지원 |
미비 |
string, decimal, boolean, date, time ... 다양한 타입 지원 |
네임스페이스 지원 | 미비 | 지원 |
확장성 | 없음 | 있음 |
지원 여부 | 지원하는 도구가 적음 | 지원하는 도구가 많음(XML Spy, XML Notepad) |
[웹시스템개발] 3. 자바 서블릿 (2) | 2013.10.24 |
---|---|
[웹시스템개발] 2. 자바 (0) | 2013.10.23 |
[웹시스템개발] 1. 클라이언트 서버 아키텍쳐와 MVC패턴 (0) | 2013.10.23 |
[디지털도서관구축론] 2. Fedora Commons (0) | 2013.10.21 |
[디지털도서관구축론] 2. 디지털 도서관의 층위 (0) | 2013.10.21 |
[디지털도서관구축록] 2. 그린스톤의 구조 (0) | 2013.10.20 |
댓글 영역