SGML
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
SGML(Standard Generalized Markup Language)은 1986년 ISO 표준으로 제정된 문서 마크업 언어이다. IBM의 GML(Generalized Markup Language)에서 파생되었으며, 1960년대 찰스 골드파브, 에드워드 모셔, 레이먼드 로리에 의해 개발되었다. SGML은 정부, 법률, 산업 분야에서 기계 판독 가능한 대규모 프로젝트 문서를 공유하기 위해 설계되었으며, XML 개발의 토대가 되었고, HTML의 기반이 되었다. SGML은 복잡성과 파서 알고리즘의 문제로 인해 XML로 대체되었지만, 전자 문서 표준화에 기여했다.
1979년, IBM의 프로젝트 매니저였던 Charles Goldfarb|찰스 골드파브영어는 에드워드 모셔 및 레이먼드 로리와 함께 GML(제너럴 마크업 언어)을 발표했으며, 이는 "DCF"(Document Composition Facility)라는 이름으로 상용화되었다. 이 성공으로 골드파브는 유명해졌고, IBM을 퇴사하여 GML의 후속 언어인 SGML을 개발하게 되었다.
2. 역사
1980년대, 군함이나 군용기 등의 무기 체계 고도화는 매뉴얼의 방대한 팽창을 야기했다. 이에 따라 매뉴얼을 전자화하여 쉽게 수정하고 유지 보수를 간소화하려는 노력이 이루어졌다. 그러나 군사 장비는 수십 년 이상 장기간 사용해야 하므로, 특정 기업의 워드 프로세서에 의존하는 경우 데이터가 소실될 위험이 있었다. 이러한 문제를 해결하기 위해 전용 소프트웨어 없이도 편집 가능한 플레인 텍스트 기반의 태그를 사용하여 데이터에 의미를 부여하는 방식이 고려되었다.
ISO의 SGML 규약은 1986년 출판 후 2개월도 채 되지 않아 베스트셀러가 되었다(그 10년 전에 발매된 FORTRAN의 ISO 규약의 부수를 2개월 만에 넘어섰다).
SGML은 ISO에서 공식적으로 승인되기 전부터 이미 미국 국방부나 EC의 공식 출판 사무국 등 수많은 공공 기관에서 사용되기 시작했다. 골드파브의 옛 직장인 IBM에서도 도입되어 동사의 문서 시스템에 큰 변화를 일으켰다. 유럽에서도 CERN(유럽 입자 물리 연구소) 등 널리 채택되었으며, 프랑스의 에어버스사, SNECMA(프랑스 국영 항공기 엔진 메이커) 및 프랑스군 등에서 채택되었다.
일본에서는 후생성에 신약 신청 데이터 형식으로 SGML이 채택되었다. 이에 따라 제약 회사 및 관련 기업에서도 도입되었다. 그 외에도 특허청 등에서도 도입되었다. 항공기 산업·방위 산업, 자동차 산업에서도 해외와의 공동 개발 및 부품 공급 시 정보 교환이나 매뉴얼·보고서 전산화 등에 이용되었다.
2. 1. 기원과 초기 발전
IBM의 찰스 골드파브, 에드워드 모셔, 레이먼드 로리가 1960년대에 개발한 GML(Generalized Markup Language)은 SGML의 기원이다.[5] GML은 대규모 프로젝트 문서의 공유 및 관리를 위해 설계되었으며, 이후 SGML 개발의 기반이 되었다. 골드파브는 성의 머리글자를 따서 "GML"이라는 용어를 만들었으며,[5] SGML 구문에 대한 저서를 쓰기도 했다.[6]
1980년대에는 군함이나 군용기 등의 무기 체계가 고도화되면서 매뉴얼이 방대해졌다. 이에 따라 매뉴얼을 전자화하여 쉽게 수정하고 유지 보수를 간소화하려는 노력이 이루어졌다. 그러나 군사 장비는 수십 년 이상 장기간 사용해야 하므로, 특정 기업의 워드 프로세서에 의존하는 경우 데이터가 소실될 위험이 있었다. 이러한 문제를 해결하기 위해 전용 소프트웨어 없이도 편집 가능한 플레인 텍스트 기반의 태그를 사용하여 데이터에 의미를 부여하는 방식이 고려되었다.
1979년 IBM의 프로젝트 매니저였던 찰스 골드파브는 에드워드 모셔 및 레이먼드 로리와 함께 GML을 발표했으며, 이는 "DCF"(Document Composition Facility)라는 이름으로 상용화되었다.
2. 2. 국제 표준 제정
ISO 표준 "ISO 8879:1986 정보 처리 – 텍스트 및 사무실 시스템 – 표준 범용 마크업 언어(SGML)"는 1986년 10월에 최초로 승인된 이후, 다음과 같이 여러 차례의 기술적 수정을 거쳤다.
| 버전 | 발표 연도 | 내용 |
|---|---|---|
| SGML | 1986년 | 최초 승인, 이후 경미한 기술적 수정 |
| SGML (ENR) | 1996년 | 임의의 언어와 스크립트 마크업을 허용하는 확장된 명명 규칙 추가 |
| SGML (ENR+WWW 또는 WebSGML) | 1998년 | XML 및 WWW 요구 사항을 더 잘 지원하기 위한 기술적 수정[2] |
SGML은 전자 문서를 위한 세 가지 ISO 표준 중 하나이며, ISO/IEC JTC 1/SC 34[1][3]에서 개발되었다. SGML은 1998년에 XML로 재작업되었으며, 현재 새로운 프로젝트에서는 거의 사용되지 않는다.
SGML은 다양한 기술 보고서에서 지원되며, 특히 ISO/IEC TR 9573의 파트 13은 수학 및 과학을 위한 공용 엔티티 집합을 다룬다.[4] 2007년에는 W3C MathML 작업 그룹이 이러한 엔티티 집합의 유지 관리를 맡기로 합의했다.
SGML(ENR+WWW)에서는 ''태그 유효성'' 개념이 도입되어 XML을 지원한다. 이는 "마크업은 엄격해야 한다"는 일반화된 마크업 요구 사항을 따른다. (ISO 8879 A.1)
2. 3. 한국에서의 도입과 활용
한국에서는 후생성에 신약 신청 데이터 형식으로 SGML이 채택되었다.[4] 이에 따라 제약 회사 및 관련 기업에서도 도입되었다.[4] 그 외에도 특허청 등에서도 도입되었다.[4] 항공기 산업, 방위 산업, 자동차 산업에서도 해외와의 공동 개발 및 부품 공급 시 정보 교환이나 매뉴얼, 보고서 전산화 등에 이용되었다.[4]3. 특징
1980년대, 군함이나 군용기 등의 고도화는 매뉴얼의 팽창을 불러왔다. 개량 시마다 매뉴얼을 다시 작성해야 했으므로, 전자화하여 수정과 유지 보수를 간소화해야 할 필요성이 커졌다.[22]
하지만 군함이나 군용기는 수십 년 동안 사용되므로 데이터의 장기 보존이 중요했다. 특정 워드 프로세서 소프트웨어에 의존하면, 소프트웨어 버전이 올라가거나 개발 중단, 회사 도산 등으로 데이터를 읽을 수 없게 되는 문제가 발생할 수 있었다. 따라서 전용 소프트웨어가 없어도 편집 가능한 플레인 텍스트 기반에 태그를 사용하여 데이터에 의미를 부여하는 방식이 고려되었다.[22]
SGML은 이러한 배경에서 탄생하여 다음과 같은 특징을 갖는다.
- SGML은 '''인스턴스''', '''DTD''', '''SGML 선언'''의 세 가지로 구성된다.[22]
- SGML 데이터는 일반 텍스트로 만들어진다.[22]
- 레이아웃 정보는 스타일 시트를 조합하여 기술하며, 스타일 시트는 '스타일 시트 언어'로 기술된다.[22]
- 일반적으로 사람이 읽을 때는 스타일 시트에 따라 레이아웃을 정돈한 후 표시(출력)된다.[22]
- SGML에서 사용할 수 있는 스타일 시트 언어로서 DSSSL 규격이 정해졌다.[22]
- SGML을 토대로 XML이 개발되었다.[22]
- SGML을 기반으로 한 응용 기술 중 하나가 HTML이다.[23] 웹 페이지를 기술하는 언어인 HTML 없이는 현재의 폭발적인 인터넷 보급은 불가능했을 것이다.
SGML은 XML과 HTML의 근원이며, 현재 인터넷 이용자들은 모두 SGML의 혜택을 받고 있다.
3. 1. 문서 구조 정의
SGML은 DTD(Document Type Definition)를 사용하여 문서 구조를 정의한다. DTD는 문서에 포함될 수 있는 요소, 속성, 엔티티 등을 정의하여 문서의 유효성을 검증하는 데 사용된다.[7]SGML은 두 가지 종류의 유효성을 정의한다.
- '''타입 유효''' SGML 문서는 각 문서 인스턴스가 준수하는 문서 타입 선언(DTD)과 관련된 문서 타입 선언(DTD)이 있는 SGML 문서이다.
- '''태그 유효''' SGML 문서는 모든 문서 인스턴스가 완전히 태그된 SGML 문서이다. 인스턴스와 관련된 문서 타입 선언이 필요하지 않다.
SGML은 유효성을 강조하며, 이는 "마크업은 엄격해야 한다"는 일반화된 마크업 요구 사항을 지원한다.[7]
SGML은 '''''인스턴스''''', '''''DTD''''', '''''SGML 선언'''''의 3가지로 구성된다.
- SGML 데이터 자체는 일반 텍스트로 만들어져 있다.
- 레이아웃 정보는 스타일 시트를 조합하여 기술된다.
- 스타일 시트는 '스타일 시트 언어'로 기술되어 있다.
- 일반적으로 사람이 읽을 때는 위의 스타일 시트에 따라 레이아웃을 정돈한 후 표시(출력)된다.
- SGML에서 사용할 수 있는 스타일 시트 언어로서 DSSSL(Document Style Semantics and Specification Language)의 규격이 정해졌다.
3. 2. 텍스트 기반 형식
SGML 데이터는 일반 텍스트로 만들어져 있다.[1] 이는 특정 소프트웨어에 의존하지 않고 문서를 편집하고 처리할 수 있게 해주며, 장기적으로 문서를 보존하고 재사용하는 데 유리하다.3. 3. 유연한 스타일 적용
SGML 데이터는 일반 텍스트로 만들어져 있다.[1] 레이아웃 정보는 스타일 시트를 조합하여 기술하며,[3] 스타일 시트는 '스타일 시트 언어'로 기술된다.[4] 일반적으로 사람이 읽을 때는 스타일 시트에 따라 레이아웃을 정돈한 후 표시(출력)된다.[5] SGML에서 사용할 수 있는 스타일 시트 언어로서 DSSSL의 규격이 정해졌다.[6]3. 4. 마크업 최소화 기능 (선택적)
SGML은 문서 마크업에 필요한 문자 수를 줄이는 기능을 제공하며, 이는 SGML 선언에서 활성화되어야 한다. SGML 프로세서가 모든 기능을 지원할 필요는 없지만, SGML 시스템은 일반적으로 유효하지 않은 구조에 관대하지 않다. 반면, XML은 구문 누락에 관대하지 않으며, 잘 형성되었는지 확인하기 위해 DTD를 요구하지 않는다.시작 태그와 종료 태그는 다음 조건을 만족하면 문서 인스턴스에서 생략할 수 있다.
- SGML 선언에서 OMITTAG 기능이 활성화되어야 한다.
- DTD가 태그를 생략할 수 있도록 표시해야 한다.
- (시작 태그의 경우) 요소에 관련된 필수(`#REQUIRED`) 속성이 없어야 한다.
- 태그가 컨텍스트에 의해 모호하지 않게 추론될 수 있어야 한다.
예를 들어, SGML 선언에서 `OMITTAG YES`가 지정되어 OMITTAG 기능을 활성화하고 DTD가 다음과 같은 선언을 포함하는 경우:
```xml
```
다음 예시에서:
```xml
...
```
두 개의 `
태그 생략은 선택 사항이다. 동일한 예시를 다음과 같이 태그를 지정할 수도 있다.
```xml
...
```
이 역시 유효한 마크업으로 간주된다.
OMITTAG 기능은 DTD에 정의된 `EMPTY` 콘텐츠를 가진 요소의 태깅과는 관련이 없다.
```xml
```
이처럼 정의된 요소는 종료 태그가 없으며, 문서 인스턴스에서 종료 태그를 지정하면 유효하지 않은 마크업이 된다. 이 점에서 XML의 빈 요소와는 구문적으로 다르다.
4. 구문
SGML 문서는 SGML 선언, 문서 형식 정의(DTD)를 포함하는 DOCTYPE 선언, 그리고 최상위 요소와 그 내용을 담고 있는 인스턴스로 구성된다. SGML 문서는 여러 엔티티 (개별 텍스트 조각)로 구성될 수 있으며, 문서에 사용되는 엔티티 및 요소 유형은 DTD에 지정될 수 있다. 다양한 문자 집합, 기능, 구분 기호 집합 및 키워드는 SGML 선언에서 지정되어 문서의 ''구체적 구문''을 생성한다.
SGML은 암시적 마크업 및 일부 다른 종류의 태그를 허용하지만, XML 사양(s4.3.1)은 XML 문서가 논리적, 물리적 구조를 가지며, 엔티티 단위로 구성된다고 명시한다. 기본적이고 현대적인 SGML 구문에 대한 정보는 XML을 참조하면 된다.
SGML은 ''''인스턴스'''', ''''DTD'''', ''''SGML 선언''''의 세 가지로 구성되며, 데이터는 일반 텍스트로 작성된다. 레이아웃 정보는 스타일 시트를 통해 기술되며, 스타일 시트는 '스타일 시트 언어'로 작성된다. 일반적으로 사람이 읽을 때는 스타일 시트에 따라 레이아웃을 정돈하여 표시한다. SGML에서 사용 가능한 스타일 시트 언어로는 DSSSL 규격이 있다.
다음은 SGML 문서의 예시이다.[8]
```xml
4. 1. 구성 요소
SGML 문서는 다음 세 가지 주요 구성 요소로 이루어져 있다.# '''SGML 선언:''' 문서에서 사용되는 문자 집합, 기능, 구분 기호 등을 정의한다.
# '''DTD''': 문서의 구조를 정의하며, 요소, 속성, 엔티티 등의 선언을 포함한다.
# '''인스턴스''': 실제 문서의 내용으로, 최상위 요소와 그 하위 요소들로 구성된다.
SGML 문서는 여러 엔티티 (개별 텍스트 조각)로 구성될 수 있다. SGML에서 문서에 사용된 엔티티 및 요소 유형은 DTD로 지정될 수 있으며, 다양한 문자 집합, 기능, 구분 기호 집합 및 키워드는 SGML 선언에서 지정되어 문서의 ''구체적 구문''을 생성한다.
SGML은 암시적 마크업 및 일부 다른 종류의 태그를 허용하지만, XML 사양(s4.3.1)은 다음과 같이 명시하고 있다.
기본적이고 현대적인 SGML 구문에 대한 소개 정보는 XML을 참조하면 된다.
SGML의 구성 요소는 다음과 같다.
- SGML 데이터 자체는 일반 텍스트로 만들어져 있다.
- 레이아웃 정보는 스타일 시트를 조합하여 기술된다.
- 스타일 시트는 '스타일 시트 언어'로 기술되어 있다.
- 일반적으로 사람이 읽을 때는 위의 스타일 시트에 따라 레이아웃을 정돈한 후 표시(출력)된다.
- SGML에서 사용할 수 있는 스타일 시트 언어로서 DSSSL의 규격이 정해졌다.
4. 2. 선택적 기능
`는 가장 최근에 열린 태그를 닫는 것으로 해석된다. 예를 들어, `<ITALICS>this</>`는 `<ITALICS>this</ITALICS>`와 같다.- NET 구문: `<ITALICS/this/`는 `<ITALICS>this</ITALICS>`와 같다.
- 빈 텍스트 값 태그 단축: `<QUOTE></QUOTE>`를 `<QUOTE//`로 단축할 수 있다. (첫 번째 `/`는 NESTC, 두 번째 `/`는 NET)
- 기타 기능:
- 같은 줄의 텍스트: 줄 끝으로 마크업 항목을 끝낼 수 있다.
이러한 기능은 XML에서는 대부분 지원되지 않지만, SGML에서는 마크업의 유연성과 간결성을 높이는 데 기여했다.
4. 3. 추상 구문과 구체 구문
SGML은 다양한 유형의 ''구체 구문''으로 구현될 수 있는 ''추상 구문''을 제공한다. 마크업 표준은 SGML 문서에서 시작 및 종료 태그 구분자로 괄호를 사용하는 것이지만(표준에서 정의된 ''참조 구체 구문''에 따라), 문서의 SGML 선언에 적절한 구체 구문이 정의되어 있다면 괄호 외의 다른 문자를 사용할 수 있다.[8] 예를 들어, SGML 인터프리터는 태그가 왼쪽 콜론과 오른쪽 마침표로 구분되고, ````:e```` 접두사가 종료 태그를 나타내는 GML을 구문 분석하도록 프로그래밍할 수 있다. ````:xmp.Hello, world:exmp.````와 같이 표현할 수 있다. 참조 구문에 따르면, 태그 이름의 대소문자(대문자 또는 소문자)는 구별되지 않으므로 ````````, ````````, ```````` 세 개의 태그는 동일하다. (구체 구문은 NAMECASE NAMING 선언을 통해 이 규칙을 변경할 수 있다.)
5. 파생 형식
SGML에서 파생된 주요 마크업 언어는 다음과 같다.
- XML: SGML의 단순화된 부분집합으로, 해석과 처리가 쉽도록 설계되었다. XHTML, RSS, XML-RPC, SOAP 등 다양한 분야에서 활용된다.
- 닥북(DocBook): 기술 문서 작성을 위해 설계된 마크업 언어이다. 현재는 닥북의 XML 버전도 존재한다.
- HTML: 초기에는 SGML과 별도로 설계되었으나, 2.0 버전부터 SGML 기반으로 재정의되었다. (처음부터 SGML의 응용이었다는 의견도 존재한다.)
Z 포맷과 같이 SGML이나 XML과 관련은 있지만, 표준 SGML/XML 도구로 해석, 적합성 검사 등이 불가능하여 SGML/XML의 응용으로 보기 힘든 언어들도 있다.
5. 1. XML (Extensible Markup Language)
XML은 SGML에서 파생된 언어이다. SGML의 특수한 부분집합으로, SGML에 비해 해석과 처리를 단순화하기 위해 설계되었다. XML은 범용 목적의 응용을 위해 SGML을 단순화하려는 시도였으며, 특히 XHTML, RSS, XML-RPC, SOAP 등 여러 방면에서 응용되고 있다.[22]W3C에서 개발한 XML (Extensible Markup Language)은 SGML 파서에 비해 파서 구현을 용이하게 하기 위해 설계된 SGML의 프로파일(하위 집합)이며, 주로 월드 와이드 웹에서 사용된다. XML은 참조 구문에 존재하는 많은 SGML 옵션(태그 생략 및 중첩 하위 문서 등)을 비활성화하는 것 외에도 SGML 구문의 종류에 대한 여러 추가 제한 사항을 추가한다. 예를 들어, XML은 닫히지 않은 시작 또는 종료 태그를 허용하지 않는다. 현재 XML은 전체 SGML보다 더 널리 사용된다. XML은 유니코드를 기반으로 하는 가벼운 국제화를 지원한다. XML의 응용 분야로는 XHTML, XQuery, XSLT, XForms, XPointer, JSP, SVG, RSS, Atom, XML-RPC, RDF/XML, SOAP 등이 있다.
5. 2. HTML (HyperText Markup Language)
HTML (Hyper Text Markup Language)은 SGML과 부분적으로 독립적이며 병행적으로 개발되었지만, 개발자인 팀 버너스 리는 HTML이 SGML의 응용 프로그램이 되도록 의도했다. 따라서 HTML의 디자인은 SGML 태깅에서 영감을 받았지만, 명확한 확장 및 파싱 지침이 확립되지 않았기 때문에 실제 HTML 문서의 대부분은 유효한 SGML 문서가 아니다.이후 HTML은 SGML 응용 프로그램에 더 가깝게 재구성되었다(2.0 버전). 그러나 HTML 마크업 언어는 SGML의 요구 사항과 다른 많은 레거시 및 예외 처리 기능을 가지고 있다. HTML 4는 ISO 8879 - SGML을 완전히 준수하는 SGML 응용 프로그램이다.[14]
월드 와이드 웹 컨소시엄 HTML 작업 그룹의 2006년 부활을 위한 헌장에는 "그룹은 SGML 파서가 '클래식 HTML'에 사용된다고 가정하지 않을 것이다"라고 명시되어 있다.[15] HTML 구문은 기본 ''참조 구체적 구문''을 사용하여 SGML 구문과 매우 유사하지만, HTML5는 HTML을 SGML 응용 프로그램으로 정의하려는 시도를 포기하고, 기존 구현 및 문서와 더 밀접하게 일치하는 자체 파싱 규칙을 명시적으로 정의한다.[16] 그러나 XML을 준수하고 따라서 SGML도 준수하는 대안적인 XHTML 직렬화를 정의한다.[17]
웹 페이지를 기술하는 언어인 HTML 없이는 현재의 폭발적인 인터넷 보급은 생각할 수 없다.
5. 3. 기타 파생 형식
XML은 SGML에서 파생된 언어이다. XML은 SGML의 특수한 부분집합으로 SGML에 비해 해석과 처리를 단순화하기 위해 설계되었다. SGML의 응용으로서 개발된 다른 마크업 언어로는, 기술 문서 작성을 위해 설계된 닥북(DocBook)이 있다. 현재는 닥북의 XML 버전도 존재한다.HTML은 본래 SGML과는 별도로 설계되었지만, 나중에(2.0 버전) SGML 기반으로 재정의되었다(애초부터 SGML의 응용이었다는 의견도 존재한다).
SGML이나 XML과 부분적으로 관련은 있지만, 표준 SGML/XML 도구로 해석, 적합성 검사 등이 불가능하기 때문에 SGML/XML의 응용으로 보기 힘든 언어들도 많이 있다. 그중에 하나는 Z 포맷으로, 조판과 문서화를 위해 설계된 언어이다.
6. 응용 분야
1980년대, 군함이나 군용기 등 무기 체계가 고도화되면서 매뉴얼 또한 방대해졌다. 잦은 개량 시 매뉴얼을 다시 작성해야 하는 부담이 커졌고, 이를 해결하기 위해 매뉴얼을 전자화하여 수정 작업을 용이하게 하고 인쇄 비용을 절감하는 기술이 필요하게 되었다.
군함이나 군용기는 수십 년 이상 장기간 운용되므로, 데이터 역시 장기간 이용 가능해야 했다. 전자 문서를 특정 기업의 워드 프로세서 소프트웨어로 작성하면, 소프트웨어 버전이 올라가거나 개발사가 개발을 중단 또는 도산하는 경우 기존 데이터를 읽을 수 없게 되는 문제가 있었다. 이를 해결하기 위해 전용 소프트웨어가 아닌 플레인 텍스트 기반으로 태그를 사용하여 데이터에 의미를 부여하는 방식이 고려되었다.
1979년, IBM의 프로젝트 매니저였던 Charles Goldfarb|찰스 골드파브영어는 Edward Mosher 및 Raymond Lorie와 함께 GML(제너럴 마크업 언어)을 발표했으며, 이는 "DCF"(Document Composition Facility)라는 이름으로 상용화되었다. 골드파브는 IBM을 퇴사하여 GML의 후속 언어인 SGML을 개발하게 되었다.
ISO의 SGML 규약은 1986년 출판 후 2개월도 채 되지 않아 베스트셀러가 되었다. SGML은 ISO에서 공식적으로 승인되기 전부터 이미 미국 국방부나 EC의 공식 출판 사무국 등 수많은 공공 기관에서 사용되기 시작했다. 골드파브의 옛 직장인 IBM에서도 도입되었고, 유럽에서도 CERN(유럽 입자 물리 연구소) 등에서 널리 채택되었다. 프랑스의 에어버스사, SNECMA(프랑스 국영 항공기 엔진 메이커) 및 프랑스군 등에서도 채택되었다.
6. 1. 정부 및 공공 기관
미국 국방부의 CALS(지속적인 획득 및 수명 주기 지원) 프로젝트는 군사 문서를 전자적으로 캡처하고 관련 데이터 및 정보를 연결하기 위한 것이었다. EC의 공식 출판 사무국 등 수많은 공공 기관에서 SGML을 사용했다.일본에서는 후생성이 신약 신청 데이터 형식으로 SGML을 채택했고, 제약 회사 및 관련 기업, 특허청 등에서도 도입되었다. 항공기 산업·방위 산업, 자동차 산업에서도 해외와의 공동 개발 및 부품 공급 시 정보 교환이나 매뉴얼·보고서 전산화 등에 이용되었다.
6. 2. 산업 분야
SGML은 여러 산업 분야에서 널리 사용되었다.- 항공 및 방위 산업: 기술 문서 및 매뉴얼 작성에 활용되었다.[5]
- 자동차 산업: 부품 정보 교환 및 문서 전산화에 사용되었다.[5]
- 제약 산업: 후생성에 신약 신청 데이터 형식으로 채택되었다.[5]
- 출판: 옥스퍼드 영어 사전(OED)의 전자판 제작에 사용되었다.[18]
6. 3. 학술 및 연구 분야
텍스트 인코딩 이니셔티브(TEI)는 인문학 분야의 텍스트를 디지털 형태로 표현하기 위한 기술 표준을 설계, 유지 관리 및 개발하는 학술 컨소시엄이다.[1] DocBook은 기술 문서 작성을 위해 설계된 SGML 응용 프로그램으로 만들어진 마크업 언어이다.[2] LinuxDoc 또한 리눅스 패키지 설명서에 사용되는 SGML DTD이다.[6] 이 외에도 미국 출판 협회에서 정의한 과학 문서를 위한 문서 형식 정의인 AAP DTD와[7] 저자와 출판사 간의 문서 교환을 위한 국제 SGML 표준인 ISO 12083이 있다.[8] CERN(유럽 입자 물리 연구소)에서 제작, 개발 및 사용된 초기 SGML 문서 형식 정의인 SGMLguid도 존재한다.[9]7. 문제점과 한계
SGML은 다양한 기능을 제공했지만, 이로 인해 모든 기능을 구현하기 어려웠고 파서 알고리즘이 비교적 복잡해지는 문제가 있었다. 이러한 한계 때문에 SGML을 간략화하고 개선한 XML이 개발되어 널리 보급되었으며, SGML 문서는 점차 XML 문서로 변환되었다.[9]
7. 1. 복잡성
SGML은 다양한 기능을 제공했지만, 이로 인해 파서 구현이 복잡하고 어려워지는 문제가 있었다. SGML 문서를 사람이 읽을 수 있도록 레이아웃하여 표시하는 것은 '''SGML 파서'''라는 프로그램이 수행한다. SGML 파서는 구문 분석 및 레이아웃을 수행하는 프로그램이다. SGML 파서의 가장 초창기 시판 제품으로는 브뤼셀의 SOBEMAP사의 제품과 시카고의 데이터로직스(Datalogics, Inc.)사의 제품이 있었다.[1]7. 2. 파서 알고리즘의 복잡성
SGML의 태그 구조와 여러 선택적 기능들은 파서 알고리즘을 복잡하게 만드는 주요 원인이 되었다. 1980년대와 1990년대의 일반적인 형식적 오토마타 이론과 당시의 파서 기술로는 SGML의 많은 특징들을 설명하기 어려웠다. SGML 표준 자체에서도 이러한 점을 경고하고 있다.[9]초기 SGML 파서 구현 보고서에서는 SGML의 DTD 문법이 LL(1) 조건과 유사한 모호성 개념을 준수해야 한다고 언급하면서도, 여러 차이점을 명시하였다.[9] 완전한 SGML이 어떤 형식 문법 클래스에 속하는지에 대한 명확한 분류는 없지만, 트리 인접 문법이나 적응 문법 등이 가능한 클래스로 거론된다.
SGML 파싱은 동적으로 검색되는 엔티티 그래프를 탐색하고, 태그와 요소 구조를 찾거나 추론하며, 문법에 대해 태그를 검증하는 과정을 포함한다. SGML의 특이한 점은 문법(DTD)이 수동적으로 어휘 구조를 ''인식''하는 데 사용될 뿐만 아니라, 선택적으로 선언된 누락된 구조와 태그를 ''생성''하는 데도 능동적으로 사용된다는 것이다. 종료 태그와 시작 태그는 추론 가능하면 생략될 수 있었는데, 이는 문법에 단일 가능한 경로가 있을 경우에만 가능했다. 이러한 문법의 능동적인 사용이 SGML 파싱을 형식적으로 특징짓기 어렵게 만들었다.
SGML은 인식과 생성 모두에 ''검증''이라는 용어를 사용한다. 반면, XML은 구분 기호 맵을 변경하거나 파싱 모드에 정보를 제공하기 위해 문법을 사용하지 않으며, 태그 생략을 허용하지 않는다. 따라서 XML 검증은 SGML 검증만큼 능동적이지 않다.
7. 3. XML과의 비교
W3C의 XML은 전체 SGML 파서에 비해 파서 구현을 쉽게 하기 위해 설계된 SGML의 프로파일(하위 집합)이며, 주로 월드 와이드 웹에서 사용된다.[9] XML은 참조 구문에 존재하는 많은 SGML 옵션(태그 생략 및 중첩 하위 문서 등)을 비활성화하는 것 외에도 SGML 구문의 종류에 대한 여러 추가 제한 사항을 추가한다. 예를 들어, SGML 단축 태그 형식을 활성화했음에도 불구하고 XML은 닫히지 않은 시작 또는 종료 태그를 허용하지 않는다.[10] 또한 WebSGML 부록에서 추가된 많은 기능에 의존한다.현재 XML은 전체 SGML보다 더 널리 사용된다. XML은 유니코드를 기반으로 하는 가벼운 국제화를 지원한다. XML의 응용 분야로는 XHTML, XQuery, XSLT, XForms, XPointer, JSP, SVG, RSS, Atom, XML-RPC, RDF/XML, SOAP 등이 있다.[11][12][13]
SGML은 기능이 많아 그대로 모든 기능을 구현하기 어려웠고, 태그 구조 때문에 파서 알고리즘이 비교적 복잡해지는 문제도 있었다. 그래서 나중에 SGML을 간략화하고 개선한 형태의 XML이 개발되어 널리 보급되었다. SGML 문서는 XML 문서로 차례차례 변환 및 이전되었다.
8. 영향과 기여
1980년대, 군함이나 군용기 등 무기 체계 고도화에 따라 매뉴얼이 방대해지면서 전자화 필요성이 커졌다. 군용 장비는 장기간 사용되므로 데이터 보존 및 이용 기술이 중요했다.[3]
일반 워드 프로세서는 회사 문제로 데이터를 읽을 수 없게 될 위험이 있어, 특정 소프트웨어에 의존하지 않는 플레인 텍스트 기반 마크업 언어가 필요했다. 1979년 IBM 찰스 골드파브는 GML(Generalized Markup Language)을 발표, DCF(Document Composition Facility)로 상용화했다. 이후 SGML을 개발했다.[3]
1986년 SGML 규약은 베스트셀러가 되었고, ISO 승인 전부터 미국 국방부, EC 등에서 사용되었다. IBM, CERN, 에어버스, SNECMA, 프랑스군 등도 채택했다.[5]
일본 후생성은 신약 신청 데이터 형식으로 SGML을 채택, 제약 회사 중심으로 도입되었다. 특허청, 항공기 산업, 방위 산업, 자동차 산업 등도 정보 교환, 매뉴얼 전산화에 활용했다.[5]
SGML은 기능 과다, 복잡한 파서 알고리즘이 단점이었으나, XML 개발의 계기가 되었다. SGML은 XML, HTML의 기반으로, 인터넷 이용자들은 SGML의 혜택을 받는다.[22][23]
8. 1. XML과 HTML의 기반
W3C의 XML(Extensible Markup Language)은 SGML 파서 구현을 쉽게 하기 위해 설계된 SGML의 하위 집합이다. XML은 SGML 구문에 여러 제한을 추가하며, SGML 단축 태그 형식을 활성화해도 닫히지 않은 시작 또는 종료 태그를 허용하지 않는다. 현재 XML은 SGML보다 널리 사용된다. XML은 유니코드 기반의 가벼운 국제화를 지원한다. XML의 응용 분야로는 XHTML, XQuery, XSLT, XForms, XPointer, JSP, SVG, RSS, Atom, XML-RPC, RDF/XML, SOAP 등이 있다.[22]HTML(Hyper Text Markup Language)은 SGML과 부분적으로 독립적으로 개발되었지만, 개발자인 팀 버너스 리는 HTML이 SGML의 응용 프로그램이 되도록 의도했다. HTML 디자인은 SGML 태깅에서 영감을 받았지만, 명확한 확장 및 파싱 지침이 확립되지 않아 실제 HTML 문서 대부분은 유효한 SGML 문서가 아니다. HTML 4는 ISO 8879 - SGML을 완전히 준수하는 SGML 응용 프로그램이다.[14]
월드 와이드 웹 컨소시엄 HTML 작업 그룹은 SGML 파서가 '클래식 HTML'에 사용된다고 가정하지 않는다고 발표했다.[15] HTML 구문은 ''참조 구체적 구문''을 사용하여 SGML 구문과 매우 유사하지만, HTML5는 HTML을 SGML 응용 프로그램으로 정의하려는 시도를 포기하고 자체 파싱 규칙을 명시적으로 정의한다.[16] 그러나 XML을 준수하고 SGML도 준수하는 대안적인 XHTML 직렬화를 정의한다.[17] SGML 기반 응용 기술 중 하나가 HTML이다.[23] 웹 페이지를 기술하는 언어 HTML 없이는 현재의 폭발적인 인터넷 보급은 생각할 수 없다.
8. 2. 전자 문서 표준화 기여
1979년, IBM의 프로젝트 매니저였던 Charles Goldfarb|찰스 골드파브영어는 에드워드 모셔(Edward Mosher) 및 레이먼드 로리(Raymond Lorie)와 함께 "GML"(제너럴 마크업 언어)을 발표했으며, 이는 "DCF"(Document Composition Facility)라는 이름으로 상용화되었다. 이 성공으로 골드파브는 유명해졌고, IBM을 퇴사하여 GML의 후속 언어인 SGML을 개발하게 되었다.[3]SGML은 ISO에서 공식적으로 승인되기 전부터 이미 미국 국방부나 EC의 공식 출판 사무국 등 수많은 공공 기관에서 사용되기 시작했다. 골드파브의 옛 직장인 IBM에서도 도입되어 동사의 문서 시스템에 큰 변화를 일으켰다. 유럽에서도 CERN 등 널리 채택되었으며, 예를 들어 프랑스를 예로 들면 에어버스사, SNECMA(프랑스 국영 항공기 엔진 메이커) 및 프랑스군 등에서 채택되었다.[5]
일본에서는 후생성에 신약 신청 데이터 형식으로 SGML이 채택되었다. 이에 따라 제약 회사 및 그 관련 기업에서도 도입되었다. 그 외에도 특허청 등에서도 도입되었다. 항공기 산업·방위 산업, 자동차 산업에서도 해외와의 공동 개발 및 부품 공급 시의 정보 교환이나 매뉴얼·보고서의 전산화 등에 이용되게 되었다.[5]
SGML은 기능이 많아 그대로 모든 기능을 구현하기 어려웠다. 또한, 태그 구조 때문에 파서 알고리즘이 비교적 복잡해지는 것도 문제였다. 그래서 나중에 SGML을 간략화하고 개선한 형태의 XML이 개발되어 널리 보급되었다. SGML 문서는 XML 문서로 차례차례 변환 및 이전되었다.[6]
9. 오픈 소스 구현체
SGML의 주요 오픈 소스 구현체는 다음과 같다.
- ASP-SGML
- ARC-SGML
- SGMLS
- Project YAO
- SP and Jade
SP와 관련된 DSSSL 프로세서인 Jade는 https://sourceforge.net/projects/openjade/ OpenJade 프로젝트에서 유지보수하고 있으며, 리눅스 배포판의 일반적인 부분이다. SGML 소프트웨어 및 자료의 일반 아카이브는 [http://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/text-processing/sgml/ SUNET]에서 확인할 수 있다. Sun System의 Java 구현에 있는 원래 HTML 파서 클래스는 SGML 용어와 개념을 사용하는 제한적인 기능을 가진 SGML 파서이다.
SGML 문서를 사람이 읽을 수 있도록 레이아웃하여 표시하는 프로그램은 '''SGML 파서'''이다. SGML 파서는 구문 분석 및 레이아웃을 수행한다. SGML 파서의 가장 초창기 시판 제품으로는 브뤼셀의 SOBEMAP사의 제품과 시카고의 데이터로직스(Datalogics, Inc.)사의 제품이 있었다.
9. 1. 주요 오픈 소스 구현체
- https://web.archive.org/web/20160303175418/http://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/text-processing/sgml/ASP-SGML/ ASP-SGML
- https://web.archive.org/web/20160303192000/http://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/text-processing/sgml/ARC-SGML/ ARC-SGML: 1991년 Standard Generalized Markup Language Users'에서 제작, C 언어 사용.
- https://web.archive.org/web/20170704040108/http://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/text-processing/sgml/SGMLS/ SGMLS: 제임스 클라크가 1993년에 제작, C 언어 사용.
- https://web.archive.org/web/20040604085843/http://ftp.sunet.se/pub/text-processing/sgml/YAO/ Project YAO: 대만 위안쩌 공과대학교(Yuan-ze Institute of Technology)에서 찰스 골드파브와 함께 1994년에 제작.
- https://web.archive.org/web/20210514140108/http://www.jclark.com/ SP and Jade: 제임스 클라크가 제작, C++ 언어 사용.
SP와 관련된 DSSSL 프로세서인 Jade는 https://sourceforge.net/projects/openjade/ OpenJade 프로젝트에서 유지보수하고 있으며, 리눅스 배포판의 일반적인 부분이다.
참조
[1]
웹사이트
JTC 1/SC 34 – Document description and processing languages
http://www.iso.org/i[...]
ISO
2008-03-05
[2]
웹사이트
JTC 1/SC 34 – Document Description and Processing Languages
http://www.jtc1sc34.[...]
[3]
문서
ISO/IEC 10744 – Hytime
http://www1.y12.doe.[...]
[4]
뉴스
ISO/IEC TR 9573
http://webstore.iec.[...]
ISO
2017-12-05
[5]
웹사이트
The Roots of SGML – A Personal Recollection
http://www.sgmlsourc[...]
[6]
서적
The SGML Handbook
https://books.google[...]
Clarendon Press
[7]
웹사이트
Terms and Definitions of ISO 8879 draft
http://www1.y12.doe.[...]
[8]
웹사이트
SGML Declarations
http://xml.coverpage[...]
1998-07-21
[9]
웹사이트
The Implementation of the Amsterdam SGML Parser
http://cajun.cs.nott[...]
1989-12
[10]
웹사이트
CoParsing of RDF & XML
http://www.hpl.hp.co[...]
Hewlett-Packard
2001-11-26
[11]
웹사이트
SGML: Grammar Productions
http://xml.coverpage[...]
[12]
웹사이트
Re: Other whitespace problems was Re: Whitespace rules (v2)
http://lists.xml.org[...]
[13]
웹사이트
Compiler-Construction Tools and Techniques for SGML parsers: Difficulties and Solutions
http://xml.coverpage[...]
[14]
웹사이트
HTML 4–4 Conformance: requirements and recommendations
http://www.w3.org/TR[...]
[15]
웹사이트
HTML Working Group Charter
http://www.w3.org/20[...]
2009-02-06
[16]
웹사이트
HTML5 — Parsing HTML documents
http://www.w3.org/TR[...]
2014-10-28
[17]
웹사이트
HTML 5, one vocabulary, two serializations
http://www.w3.org/QA[...]
W3C
2008-01-15
[18]
간행물
LEXX—A programmable structured editor
IBM
[19]
문서
HTML에서의 스타일의記述は Cascading Style Sheets (Cascading Style Sheets) による。
[20]
URL
http://www.datalogics.com/
http://www.datalogic[...]
[21]
문서
주:SGMLパーサは、SGML文書の文法が規則に適合しているか検証する機能も持っており、そうした機能のためにだけ使われることもある。出典 https://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/sgml/intro.html#h-19.1
[22]
문서
SGMLとXMLの対応(比較)については、ジェームズ・クラーク (ソフトウェア技術者)による「Comparison of SGML and XML」というタイトルの、1997年12月15日に議論のためにまとめられた(何らかの公式のものではない)ノートがあり、それによればSGML (ISO 8879) とXMLの関係はスーパーセットともサブセットとも結論付けられてはいない。XML 1.0のAppendix CではNon-Normative(参考)として、XMLはSGMLのサブセットとなる'''べく'''設計され(designed to be)、全てのXML文書は同時にSGMLにもconforming(準拠)でもある'''べき'''(should)と書かれており、前述のノートを参照せよとされている。国際標準は ISO 8879:1986 であり、対応するJISとして JIS X 4151:1992 が存在する。
[23]
문서
HTML4までのHTMLはSGML応用系とされていたが、HTML5以降はSGML応用系ではない。
[24]
문서
ISO 8879:1986 Information processing—Text and office systems—Standard Generalized Markup Language (SGML)
[25]
문서
정보 기술 분야에서는 매우 오랜 기간이다.
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com