Web::XML Parser

안준성·2022년 7월 25일
0

Web

목록 보기
2/6

XML이란?

eXtensible Markup Language의 약자로
사람들이 특정한 언어로 문서를 작성할 때, 컴퓨터에서 문서 정보 구조, 의미, 시각적인 형태를 정의하는 방법 중 하나이다.

태그라는 추가적인 코드로 표현한다.

다른 종류의 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 개발되었다.

데이터를 표현하는 것뿐만 아니라 데이터의 스키마도 XML로 표현할 수 있다.
특정한 XML의 데이터 구조를 표현하는 스키마(dsd or xsd)가 있으면
그 데이터의 구조를 검증할 수 도있다.

XML의 구조

XML 문서는 HTML 문서와 마찬가지로 트리 형태로 되어있다.
오토마타 이론을 기반으로 하고있다.

Automata Theory

  • state들의 유한한 집합
  • 주어진 규칙에 따라 특정 상태에서 다른 상태로 전이

유한(Finite) 오토마타 표현

그래프 방식

  • 상태는 node로 나타낸다.
  • 상태 전이는 방향있는 화살표로 나타낸다.
  • 전이 규칙은 화살표 옆에 레이블로 나타낸다.
    image

문자열 중에서 특정 단어를 인식하기

"abctatop"에서 "top" 인식하기

  • 문자열에서 특정 문자가 't'라면 상태 전이
  • 't'에 이어서 'o' 문자가 나오면 상태 전이
  • "to"에 이어서 'p'가 나오면 상태 전이
    image

유한한 집합의 예제들

  • 알파벳 : 전형적인 유한한 심볼 집합
  • ASCII코드, 유니코드, 이진코드
  • 문자열 : 알파벳으로 조합해서 만들 수 있는 문자열 집합
  • 언어 : 특정 알파벳 집합으로 만들 수 있는 하위 집합

DFA(Deterministic Finite Automata)

유한한 상태를 표현하는 방식 중 하나

DFA 그래프 표현

  • 상태를 node로 표시
  • 상태 전이 함수는 화살표로 표시
  • 시작 상태는 start로 표기한 화살표가 가리키는 상태
  • 최종 상태는 이중 동심원으로 표시
    image

DFA 전이표

예시) 1이 연속해서 두번 나오지 않는 문자열 적합
image

확장 상태 전이 함수

  • 입력이 문자열인 경우 상태 전이 함수
    = 문자열을 구성하는 문자를 한개씩 처리해서 최종상태에 도달
  • 재귀 함수로 구현

정규 언어

특정한 언어 중 DFA가 존재하고 그 DFA가 특정한 L이 있는 문자열을 만족하는 경우, 해당 언어를 정규 언어라고 부른다.

NFA

XML의 사용 이유

서로 호환되지 않는 데이터 타입을 사용하는 시스템 간의 데이터 교환에는 많은 비용이 발생한다.
또한 데이터를 변환하는 과정에서 데이터의 손실이 발생할 수도 있다.
하지만 XML은 데이터를 텍스트 형식으로 저장하므로,
시스템에 독립적으로 데이터를 저장 및 전달할 수 있다.

따라서 XML로 데이터를 처리하면 OS나 프로그램, 브라우저 등에 상관없이
데이터를 안전하고 쉽게 전달할 수 있다.

뷰를 표현하는데 있어서는 정형화된 데이터를 다루기 때문에 XML을 가장 많이 쓴다.

XML Parser

Parser도 DFA언어를 다루는 오토마타를 구현한 것 중에 하나.

XML Parser는 XML 문서의 평문(plain text) 데이터를 읽어들여,
그것을 XML DOM 객체로 parsing 한다.

XML 파서는 XML 문서가 적합한 형식을 갖추고 있는지와 문법상의 오류는 없는지를 검사합니다.
현재 대부분의 주요 웹 브라우저는 모두 XML 파서를 내장하고 있습니다.

image

DOM

Document Object Model의 약자.
XML이나 HTML문서에 접근하기 위한 API.
DOM은 문서 내의 모든 요소를 정의하고,
해당 요소에 접근하는 방법까지 정의.

XML DOM

XML DOM은 XML 문서에 접근하여,
해당 문서를 조작할 수 있는 표준화된 방법을 정의.
XML DOM은 XML 문서 내의 모든 요소의 객체, 속성과
이를 접근하고 조작할 수 있는 메소드를 포함한다.

well-formed XML

XML이 갖추어야 할 필수 조건을 충족한 XML을 말한다.
XML로써의 범용성이 크게 확보된다.
ex. 여는 태그가 있으면 반드시 닫는 태그가 나와야 한다.

XML과 JSON의 장단점

  • XML 문서는 XML DOM을 이용하여 문서에 접근하지만,
    JSON은 해당 문자열을 바로 파싱하므로 보다 빠른 처리속도를 가진다.
    따라서 HTML과 자바스크립트가 연동되어 빠른 응답이 필요한 웹 환경에서 많이 사용된다.
  • JSON은 전송받은 데이터의 무결성을 사용자가 직접 검증하여야 하지만, XML은 스키마를 사용하여 무결성을 검증할 수 있어 데이터의 검증이 필요한 곳에서 많이 사용된다.

XPath

XML Path Language를 의미.
XML 문서의 특정 요소나 속성에 접근하기 위한 경로를 지정하는 언어.
쉽게 말하자면 html, xml 상의 요소의 위치값이라고 보면 된다.

XPath 지정하기 : https://blog.naver.com/rudnfskf2


참고 : http://www.tcpschool.com/xml/xml_basic_document


컴파일러 Tokenizer, Lexer, Parser

컴파일러는 구문분석 -> 최적화 -> 코드생성 -> 링킹의 과정을 수행하는데
여기서 구문분석의 과정에 tokenizer, lexer, parser가 사용된다.

  • 구문 분석 과정
    컴파일러가 소스 코드 파일을 읽어서 개별 문법 요소 단위로 자른 뒤,
    문법 요소들을 해석하여 추상 구문 트리(AST)를 작성한다.

  • AST(Abstract Syntax Tree)
    프로그래밍 언어로 쓰여진 소스코드의 Abstract Syntatic 구조를 표현하기 위해 사용되는 자료구조이다.

  • Tokenizer
    어떤 대상의 의미있는 요소들을 어휘 분석의 단위인 토큰으로 쪼개는 역할.

  • Lexer
    쪼갠 Token의 의미분석하는 역할.

  • Parser
    분석된 데이터구조적으로 나타낸다.
    이 때 데이터의 검증도 함께 수행한다.

일반적인 Token 종류

프로그래밍 언어에서 사용하는 토큰의 종류

  • identifier : 식별하기 위한 이름
  • keyword : 미리 지정한 예약어
  • separator : 글자를 구분하는 문자
  • operator : 연산을 위한 심볼
  • literal : 숫자, 논리, 문자
  • comment : 줄 또는 블록 코멘터리

XML 토큰 예시

image

정규표현식

https://velog.io/@tjdtna01


참고 : https://gobae.tistory.com/94
https://ko.wikipedia.org/wiki

profile
안녕하세요

0개의 댓글