정형화란?


  • 일정한 형식이나 틀에 맞게 작성된 구조
  • XML에서 시작 태그가 있으면 항상 끝 태그가 있어야한다와 같은 일정한 형식에 맞춰 작성한 문서

XML 문서 구조


K-030

K-031

K-032

  • 요소 내용 구성
    • 같은 구조의 요소를 나타내고 있는 XML 문서
  • K-033

    • 다른 구조의 요소를 나타내고 있는 XML 문서
    • K-034

K-035

DTD가 필요한 이유는?

  • DTD는 말 그대로 XML 문서의 구조를 정의하기 위한 문서이다.
  • XML문서는 개발자가 자유롭게 정의하여 작성하는 문서이다. 하지만 모두가 자유롭다고 해서 XML문서를 마구 작성해서 쓴다면 기존에 일반 문서를 작성해서 사용하는 것과 다를것이 없을 것이다. 그렇기 때문에 어떠한 기준에 따라 문서의 구조가 정의되면 그것을 기준으로 하여 XML 문서를 작성하도록 한다.
  • 기준을 표시하는 방법 : DTD, XML Schema

DTD 란

  • DTD(Document Type Definition)는 문서의 형태를 정의하는 것으로서 XML문서의 구조를 명시적으로 선언하는 역할을 하며, DTD를 사용하여 요소와 요소의 내용, 속성과 속성 내용 그리고 요소의 순서나 반복성 등을 미리 정의해놓고 XML문서를 작성하여 사용하는 문서

DTD의 필요성

  • 여러 종류의 XML 문서를 사용할 때의 분제점
    • 문서 가독성이 떨어진다
    • 문서를 교환하는데 인식성이 떨어짐
    • 애플리케이션에서 XML문서를 사용할 경우 해당 문서마다 서로 다른 규칙을 적용해야 한다.
    • XML 문서 제작의 효율성이 떨어진다.

DTD 사용방법

  • 내부 DTD : XML 문서에 DTD를 포함
  • K-036

  • 내부 DTD 선언 : xml_file.xml

  • 외부 DTD : DTD 문서를 별도 작성하여 XL 문서에 연결
  • K-037

DTD 문서 작성

  • 문서타입선언 형식

  • K-038

  • [internal DTD] 기본 형식

  • K-039

내부 DTD를 정의한 XML 문서 작성 예)

K-040

  • 요소 선언
  • K-041

  • 자식 요소 선언
    • 상위요소와 자식 요소와의 관계 계층도
    • K-042

K-043

  • 자식 요소에서 정의할 수 있는 선언자 기호

    • 선언자 기호 설명
      무기호 특별한 기호가 없으면 지정된 요소가 한 번만 정의
      , 선언된 요소의 순서대로 자식 요소를 사용
      | 선언된 요소의 사용을 선택적으로 자식 요소를 사용
      () 요소를 그룹으로 선언해서 정의
      * 선언된 요소가 0번 이상 사용될 수 있음(0~n)
      + 선언된 요소가 1번 이상 사용될 수 있음(1~n)
      ? 선언된 요소가 0번 또는 1번 사용될 수 있음(0~1)
  • 선언자 기호 사용 예

    • 요소 사용 설명
      A A라는 요소가 한번 정의되어 사용
      A, B A와 B 요소가 순서대로 한 번씩 사용
      A|B A 또는 B 요소가 한 번만 나타남
      A,B? A 요소가 먼저 한번 사용되고, B요소가 0 또는 1번 사용
      (A, B, C) A,B,C 요소가 순차적으로 한 번씩 사용
      A, (B|C)+ A 요소가 먼저 사용되고, B또는 C요소가 1번 이상 사용
      A, (B|C)* A요소가 먼저 사용되고, B또는 C 요소가 0번 이상 사용

    K-045

  • 속성 선언

  • <!ATTLIST 요소이름 속성이름 속성타입 속성_기본값 데이터_기본값>

  • 속성 기본값 선언

    • 속성 기본값 설명
      속성 초기값 속성값을 지정하지 않은 경우에는 초기값을 사용하여 정의한다.
      #FIEXD XML문서에서 속성이 정의될 수도 있고 안될수도 있다. 명시된다면 초기값과 일치해야 한다. 즉 정해진 값 이외의 값은 올 수 없다.
      #IMPLIED XML 문서에서 속성이 선택적으로 사용된다. 즉 속성이 명시될 수도 있고 명시되지 않을 수도 있다.
      #REQUIRED 속성이 반드시 명시적으로 사용이 되어야 한다.
    • 속성의 초기값 사용
    • K-046

JSON은 무엇인가?


  • XML 대비 경량 텍스트 기반 개방형 표준 데이터 교환 형식
  • 간단한 형식
  • 사람이 읽을 수 있는 것
  • 기계 파싱 및 생성 용이
  • 프로그래밍 언어 독립
  • 다양한 언어로 사용할 수 있는 파서
  • C, C++, C#, Java, 자바스크립트, Perl, Python 등 C 종류 프로그래머에게 친숙한 컨벤션 사용

  • 네트워크 연결을 통한 구조화된 데이터의 직렬화 및 전송에 사용
    • cf) 데이터 저장과 전송의 맥락에서, 직렬화는 데이터 구조나 객체 상태를 파일이나 메모리 버퍼에 저장하거나 네트워크 연결 링크를 통해 나중에 동일한 또는 다른 컴퓨터 환경에서 전송할 수 있는 형식으로 변환하는 과정
  • 주로 서버와 웹 애플리케이션 간에 데이터를 전송하는 데 사용되며 XML의 대안으로 사용됨

JSON 구조

  • 키-값 쌍들의 집합
    • 다양한 언어에서 객체, 레코드, 구조, 사전, 해시테이블, 키리스트 또는 연관 배열로 실현된다.
  • 값 순서 리스트
    • 대부분의 언어에서는 배열, 벡터, 목록 또는 시퀀스로 구현된다.

JSON 일반적인 타입

  • 숫자
  • 문자열
  • Boolean
  • 배열
  • 객체
  • null

JSON 스키마

  • JSON 데이터 구조 정의를 위한 JSON 기반 포맷 규격
  • 특정 애플리케이션에 필요한 JSON 데이터 및 XML 스키마가 제공하는 XML 데이터처럼 데이터 수정 방법에 대한 계약을 제공한다.
  • JSON 데이터의 검증, 문서화 및 상호 작용 제어를 제공하기 위한 목적

K-048

JSON와 XML 비교

유사한점

  • 둘다 사람이 읽을 수 있다
  • 구문이 단순하다
  • 계층적
  • 여러 프로그래밍 언어로 구문 분석 및 사용할 수있다
  • 둘다 Ajax 사용 가능

차이점

  • 구문이 다르다
  • JSON이 덜 복잡하다
  • 자바스크립트의 eval() 프로시저를 사용하여 JSON을 3단계 구문 분석 가능
  • JSON은 배열을 포함한다

왜 XML보다 JSON이 나은가?

  • JSON은 XML보다 가볍고 빠르다
  • XML로 인코딩 할 경우 일반적으로 JSON의 인코딩 보다 더 큰 결과가 나타난다.
  • JSON 개체는 입력되고 XML 데이터는 입력되지 않음
  • XML 데이터는 모두 문자열
  • 자바스크립트 코드에 대한 네이티브 데이터 양식
  • XML은 DOM API를 통해 XML 데이터를 구문 분석하고 변수에 할당해야 한다
  • 자바스크립트 코드에서 JSON 오브젝트로 쉽게 데이터 접근 가능

AJAX란?

  • 클래식 모델은 비효율적이다
  • 모든 페이지 내용이 사라졌다가 다시 나타남
  • 부분 변경으로 인해 페이지가 다시 로드될 때마다 일부 정보만 변경되었더라도 모든 내용을 다시 전송해야 한다
  • 서버에 대한 추가 부하 및 과도한 대역폭

  • 클라이언트측에서 많은 웹 기술을 사용하여 비동기 웹 애플리케이션을 만드는 일련의 웹 개발 기법
  • 웹 애플리케이션은 기존 페이지의 표시와 동작에 지장을 주지 않고 비동기적으로 서버로 데이터를 보내고 검색할 수 있다.
  • 데이터 교환 계층을 프레젠테이션 계층에서 분리함으로써 Ajax는 웹 페이지 및 확장 웹 애플리케이션을 통해 전체 페이지를 다시 로드하지 않고도 동적으로 컨텐츠를 변경할 수 있다.
  • 자바스크립트 네이티브 장점 때문에 XML 대신에 JSON을 사용

Ajax에서 사용

  • Ajax 기법에 자주 사용됨

  • Ajax는 웹페이지가 웹브라우저에 로드된 후 새로운 데이터를 요청하는 기능
  • Ajax는 XML을 데이터 교환 형식으로 많이 사용했지만, 많은 개발자들은 서버와 클라이언트 간에 Ajax 업데이트를 전달하기 위해 JSON을 사용해왔다.