KR100800343B1 - 고성능 스키마 검증을 위한 xml 스키마의 주해된 자동인코딩 - Google Patents
고성능 스키마 검증을 위한 xml 스키마의 주해된 자동인코딩 Download PDFInfo
- Publication number
- KR100800343B1 KR100800343B1 KR1020057004546A KR20057004546A KR100800343B1 KR 100800343 B1 KR100800343 B1 KR 100800343B1 KR 1020057004546 A KR1020057004546 A KR 1020057004546A KR 20057004546 A KR20057004546 A KR 20057004546A KR 100800343 B1 KR100800343 B1 KR 100800343B1
- Authority
- KR
- South Korea
- Prior art keywords
- markup language
- xml
- validation
- delete delete
- token
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
- G06F40/154—Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/221—Parsing markup language streams
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
XML 스키마 검증을 위한 방법 및 시스템은, XML 문서를, XML 스키마 검증 파서를 구비하는 런타임 검증 엔진으로 로딩하는 단계; XML 스키마 정의에 대한 AAE를 XML 스키마 검증 파서로 로딩하는 단계; 및 AAE를 이용하는 XML 스키마 검증 파서에 의해 XML 문서를 XML 스키마 정의에 대해 검증하는 단계를 구비한다. 각각의 XML 스키마 정의는, XML 문서가 검증될 때마다 컴파일되는 것이 아니라, 한번에 AAE 포맷으로 컴파일됨으로써, 상당한 시간이 절감된다. 런타임 검증 엔진을 위한 코드는, 각각의 XML 스키마 정의에 대해 달라지는 것이 아니라, 고정되어 있으며 XML 스키마 정의에 따라 달라지지 않음으로써, 공간 오버헤드가 최소화된다. 성능을 손상시키지 않으면서, 검증 프로세스의 호환성이 제공된다.
XML, 스키마, 검증, AAE, 요소 내용, 속성, 데이터 유형
Description
본 발명은 XML(extensible mark-up language) 스키마들에 관한 것으로서, 보다 구체적으로는, XML 스키마에 따른 XML 문서들의 검증에 관한 것이다.
XML 스키마들은 업계에 널리 공지되어 있다. XML 스키마들로 인해, 사용자들은, 데이터베이스들에서의 데이터 저장 및 프로세싱에 있어서 XML 포맷의 광범위한 사용을 용이하게 하는 복잡한 구조의 XML 데이터 오브젝트들을 정의할 수 있다. 각각의 XML 문서가 제공됨에 따라, 이들을 데이터 저장 및 프로세싱에 사용하기에 앞서 적합성을 보장하기 위해, 이들은 XML 스키마 정의에 대해 검증되어야 한다.
통상적으로, XML 스키마 검증에는 2가지 주된 접근 방법들이 사용된다. 첫번째는 범용 스키마 검증 파서이다. 이러한 접근 방법에서는, 파서가 XML 스키마 정의 및 XML 문서를 입력으로서 수신하여, XML 문서를 트리 포맷(tree format)으로 파싱하고, XML 스키마 정의를 스키마 트리 포맷으로 파싱한 다음, XML 문서 트리를 XML 스키마 트리에 대해 검사하기 위해 XML 문서 트리를 트래버스한다. 동일한 범용 스키마 검증 파서가 많은 타 XML 스키마들에 사용된다. 이러한 접근 방법이, 많은 타 XML 스키마들에 대해 검증할 수 있다는 점에서 호환적이기는 하지만, 이러한 접근 방법은 통상적으로 불량한 성능을 가진다.
두번째 접근 방법은, 특정한 XML 스키마 정의에 기초해 XML 스키마 검증 파서를 생성하는 것이다. XML 스키마 검증 파서 코드는, 특정한 XML 스키마 정의에 대해 XML 문서를 검증하는데 사용되는 실행 가능한 코드로 컴파일된다. 이러한 접근 방법이 첫번째 접근 방법보다 좀더 빠를 수는 있지만, 다수의 XML 스키마 정의들이 존재할 경우에는, 다수의 검증 파서들이 존재하여 공간 오버헤드를 초래할 수 있다. 또한, 각각의 XML 스키마 검증 파서가 특정한 XML 스키마에 대해서만 검증할 수 있으므로, 비호환적이다.
따라서, XML 스키마 검증을 위한 향상된 방법 및 시스템에 대한 필요성이 존재한다. 향상된 방법 및 시스템은 높은 공간 오버헤드를 초래하지 않으면서 고성능을 제공해야 한다. 본 발명은 이러한 필요성을 해결하기 위한 것이다.
XML 스키마 검증을 위한 방법 및 시스템은, XML 문서를, XML 스키마 검증 파서를 구비하는 런타임(runtime) 검증 엔진으로 로딩하는 단계; XML 스키마 정의를 위한 AAE(annotated automation encoding;주해된 자동 인코딩)를 XML 스키마 검증 파서로 로딩하는 단계; 및 AAE를 이용하는 XML 스키마 검증 파서에 의해 XML 문서를 XML 스키마 정의에 대해 검증하는 단계를 구비한다. 각각의 XML 스키마 정의는, XML 문서가 검증될 때마다 컴파일되는 것이 아니라, 한번에 AAE 포맷으로 컴파일됨으로써, 상당한 시간이 절감된다. 런타임 검증 엔진을 위한 코드는, 각각의 XML 스키마 정의에 대해 달라지는 것이 아니라, 고정되어 있으며 XML 스키마 정의에 따라 달라지지 않으므로, 공간 오버헤드가 최소화된다.
성능을 손상시키지 않으면서 검증 프로세스의 호환성이 제공된다.
도 1은 본 발명에 따른 XML 스키마 검증 시스템의 바람직한 실시예를 도시한다.
도 2는 본 발명에 따른 XML 스키마 컴파일을 좀더 상세하게 도시한다.
도 3은 본 발명에 따른 XML 스키마 컴파일 프로세스의 바람직한 실시예를 도시하는 흐름도이다.
도 4는 예시적인 XML 스키마 정의를 도시한다.
도 5는, 본 발명에 따라 주해된 트리(annotated tree)로 표현된, 예시적 XML 스키마 정의에 대한 요소 구조의 계층 구조(element structure hierarchy)를 도시한다.
도 6은 본 발명에 따른 문맥 자유 문법(CFG;context-free grammar)의 XML 스키마 정의의 구조를 도시한다.
도 7은, 본 발명에 따른 시작 태그 토큰들 및 종료 태그 토큰들을 가진, 도 6의 문맥 자유 문법의 증대(augmentation)를 도시한다.
도 8은 본 발명에 따른 예시적 XML 스키마 정의에 대한 AAE의 주해 부분을 도시한다.
도 9는 본 발명에 따른 예시적 XML 스키마 정의에 대한 자동 인코딩 도표의 상태 전이 그래프를 도시한다.
도 10은 본 발명에 따른 런타임 검증 엔진을 보다 상세하게 도시한다.
도 11은 본 발명에 따른 런타임 검증 엔진에 의해 수행되는 런타임 검증 프로세스의 바람직한 실시예를 도시하는 흐름도이다.
도 12는 본 발명에 따른 시작 태그 이름의 프로세싱을 도시하는 흐름도이다.
도 13은 본 발명에 따른 속성 이름의 프로세싱을 도시하는 흐름도이다.
도 14는 본 발명에 따른 종료 태그 이름의 프로세싱을 도시하는 흐름도이다.
도 15a 내지 도 15e는 본 발명에 따른 런타임 검증 엔진에 의해 수행되는 런타임 검증 프로세스 동안의 스택 내용들을 도시한다.
도 16은 검증될 예시적 XML 문서를 도시한다.
도 17은 XML 스키마 정의를 위해 유도된 유형들의 일례를 도시한다.
본 발명은 XML 스키마 검증을 위한 향상된 방법 및 시스템을 제공한다. 다음 설명은, 당업자가 본 발명을 실시하고 사용하는 것을 가능하게 하기 위해 제시되며 특허 출원 및 그에 따른 요구 사항들의 맥락으로 제공된다. 바람직한 실시예에 대한 다양한 변경들이 당업자들에게는 쉽게 이해될 것이며 여기에서의 일반적 원리들이 다른 실시예들에 적용될 수도 있다. 이와 같이, 본 발명은 나타낸 실시예들로 한정되지 않으며 여기에서 설명된 원리들 및 특징들과 조화되는 가장 넓은 범위와 일치되어야 한다.
도입
본 발명에 따른 향상된 방법 및 시스템은 XML 스키마 정의들을, 디스크 또는 데이터베이스에 저장되는 AAE 포맷으로 컴파일한다. 각각의 XML 스키마 정의는 한번에 AAE 포맷으로 컴파일된다. XML 문서가 검증될 때, XML 문서 및 AAE 포맷의 적절한 XML 스키마 정의가 런타임 검증 엔진으로 로딩된다. 런타임 검증 엔진은 일반 XML 파서 및 런타임 스키마 검증 파서를 구비한다. 런타임 검증 엔진을 위한 코드는 고정되어 있으며 XML 스키마 정의에 따라 달라지지 않는다. 런타임 스키마 검증 파서가 AAE 포맷의 XML 스키마 정의에 대한 XML 문서의 고급 검증을 수행하는 동안, 일반 XML 파서는 저급 검증을 수행한다. 런타임 검증 엔진의 출력은 검증 통과 또는 실패이다.
본 발명의 특징들을 보다 구체적으로 설명하기 위해, 다음의 논의와 함께 도 1 내지 도 17을 참조한다.
도 1은 본 발명에 따른 XML 스키마 검증 시스템의 바람직한 실시예를 도시한다. 시스템은, XML 스키마 컴파일(102) 및 런타임 검증 엔진(104)의 2개의 논리 세트들을 구비한다.
XML 스키마 컴파일(102)은 입력으로서 XML 스키마 정의들(106)을 취하며 AAE 포맷의 XML 스키마(108) 각각을 출력으로 제공한다. AAE 포맷의 XML 스키마 정의들(108)은 차후의 용이한 검색을 위해 디스크 또는 데이터베이스(110)에 저장된다. AAE 포맷은 통상적으로 LALR(Look Ahead Left to Right;1) 파서 생성기로부터 획득되지만 주해들이 추가된 파싱 도표의 포맷을 구비한다. 주해들은 특정한 XML 스키마 정의에 대해 생성된 XML 스키마 트리의 요소 노드들에 대한 속성들 및 요소들과 속성들에 대한 데이터 유형 제약 사항들이다. XML 스키마 컴파일(102) 및 AAE 포맷 은 도 2 내지 도 9를 참조하여 추가적으로 후술된다.
런타임 검증 엔진(104)은 XML 문서(112) 및 그에 대응되는 AAE 포맷의 XML 스키마 정의(108)를 입력으로 취하며 검증 통과 또는 실패를 출력으로 제공한다. 런타임 검증 엔진(104)은 도 10 내지 도 14를 참조하여 추가적으로 후술된다.
XML 스키마 컴파일
도 2는 본 발명에 따른 XML 스키마 컴파일(102)을 보다 상세하게 도시한다. XML 스키마 컴파일(102)은 XML 스키마 컴파일러 프론트-엔드(202) 및 XML 스키마 컴파일러 백-엔드(204)를 구비한다. 도 3은 본 발명에 따른 XML 스키마 컴파일 프로세스의 바람직한 실시예를 도시하는 흐름도이다.
도 2 및 도 3 모두를 참조하면, XML 스키마 컴파일러 프론트-엔드(202)는, 단계 302를 통해, XML 스키마 정의(106)를 입력으로 수신한다. 그 다음, XML 스키마 컴파일러 프론트-엔드(202)는, 단계 304를 통해, 요소 구조의 계층 구조를 발생시키고 그것을 주해된 트리로 표현한다. 트리의 노드들은 요소 노드들이고 모서리들은 노드들 사이의 구조적 관계들이다. 주해들은 요소 노드들에 대한 속성들 및 요소 노드들과 속성들에 대한 데이터 유형 제약 사항들이다. 이러한 주해된 트리는 추가적으로 후술된다.
다음으로, XML 스키마 컴파일러 백-엔드(204)는, 단계 306을 통해, 주해된 트리를 인코딩하여 AAE를 생성한다. 그 다음, AAE는, 단계 308을 통해, 직렬화되어 디스크 또는 데이터베이스에 저장된다. AAE는 이와 같이 AAE 포맷의 XML 스키마 정의(108)이다.
도 4 내지 도 9는 본 발명에 따른 XML 스키마 컴파일(102)에 의해 구현된 방법의 일례를 도시한다. 도 4는 XML 스키마 정의(400)의 일례를 도시한다. XML 스키마 정의(400)는 디폴트 XML 이름 공간(402), 이름 공간 선언(404), 및 등록된 목표 이름 공간(405)을 구비한다. 보안을 위해, XML 스키마는 등록될 수 있고 등록된 XML 스키마 참조(404)에 의해 참조되는 다른 위치에서 액세스된다. XML 스키마 정의(400)는 또한 문서 목적들을 위한 주해들(406)을 구비한다. 이 예에서는, 주해(406)가 "xml:lang='en'"의 속성(410)을 가진 "documentation"이라고 명명된 요소(408)를 구비하는 것으로 정의된다.
XML 스키마 정의(400)는 추가적으로, personnel(412) 및 notes(426)와 같은, 글로벌 요소 선언들을 구비한다. personnel의 글로벌 요소(412)는 복잡한 유형(complex type)이며 employee(414)라고 명명된 하부-요소들의 시퀀스를 갖는 것으로 선언된다. employee 하부-요소(414)는 복잡한 유형이며 의미 제약 사항들(416)을 갖는 것으로 선언된다. employee 하부-요소(414) 자체는, 각각이 자신만의 구문 제약 사항들(420)을 갖는 하부-요소들(418)을 갖는 것으로 선언된다. 이 예에서, 이러한 하부-요소들은 lastname, firstname, 및 notes이고, 각각은 단순 유형(string)이다. employee 하부-요소(414)는 또한, 각각이 단순 유형(424)인 것으로 정의되는 수개의 속성들(422)을 갖는 것으로 선언된다. 이 예에서, 속성들(422)은 정수 유형의 serno, USERID_TYPE 유형의 userid, 및 스트링 유형의 department를 구비한다. 정수 및 스트링 유형들은 사전 정의되어 있다. USERID_TYPE 유형은 아니다. 이것의 정의는 428의 XML 스키마 정의에서 기술된다.
XML 스키마 컴파일러 프론트-엔드(202)는, 단계 302를 통해, 이러한 XML 스키마 정의(400)를 입력으로 수신한다. 그 다음, 이것은 XML 스키마 정의(400)에 대한 요소 구조의 계층 구조를 생성하고, 그것을 도 5에 도시되어 있는 주해된 트리(500)로 표현한다. 실선들은 트리(500)의 요소 노드들을 접속한다. 점선들은 요소 노드들을 속성 주해들에 접속시킨다.
예를 들어, 실선들은 personnel 노드(502)를 employee 노드(506)에 접속시키고, employee 노드(506)를 lastname(508), firstname(510), 및 notes(512) 노드들에 접속시킨다. 트리(500)는, notes 및 personnel이 글로벌 요소들이라는 것을 도시하며, 따라서, 이들은 노드들 중 제 1 레벨에 있다. employee는 personnel의 하부-요소이므로, employee 노드는 실선에 의해 제 2 레벨에서 personnel 노드로 접속된다. lastname, firstname, 및 notes는 employee의 하부-요소들이므로, 이들 노드들(508-512)은 제 3 레벨에서 실선들에 의해 employee 노드(506)에 접속된다. lastname(508), firstname(510), 및 notes(512) 노드들에 인접한 "string"이라는 점선형 타원들(514-518)은 그들 각각의 대응 노드들에 대한 데이터 유형들을 표현하는 데이터 유형 주해 노드들이다.
트리(500)는 추가적으로, employee 노드(506)가, serno 사각형(520), userid 사각형(522), 및 department 사각형(524)에 의해 표현된 속성들을 갖도록 정의되어 있다는 것을 도시한다. 사각형들에 인접한 USERID_TYPE(526), Integer(528), 및 String(530)의 점선형 타원들은 그들에 대응되는 유형 주해 노드들이다.
XML 스키마 정의(400)에 대해 주해된 트리(500)가 생성되고 나면, XML 스키 마 컴파일러 백-엔드(204)는, 단계 306을 통해, 주해된 트리(500)를 인코딩하여 AAE를 생성한다. 주해된 트리(500)의 인코딩시에, XML 스키마 컴파일러 백-엔드(204)는 먼저, 주해된 트리(500)의 요소 제약 사항들, 즉, 실선들에 의해 특정된 트리 구조를, 도 6에 도시된 바와 같은, CFG(context-free grammar)로 표현한다. 다음으로는, 도 7에 도시된 바와 같이, 각각의 요소에 대한 접두사로서 시작 태그 토큰을 부가하고 각각의 요소에 대한 접미사로서 종료 태그 토큰을 부가하는 것에 의해 CFG를 증대시킨다. 예를 들어, personnel 요소의 경우, 시작 태그 토큰 PS 및 종료 태그 토큰 PE이 부가된다. employee 요소의 경우, 시작 태그 토큰 ES 및 종료 태그 토큰 EE가 부가된다. 시작 태그 및 종료 태그 토큰들은 lastname, firstname, 및 notes 요소들에도 마찬가지로 부가된다. 다음으로는, LALR(1) 파서 생성기 알고리즘이 사용되어 파싱 도표 또는 상태 전이 도표를 생성한다. 다음으로는, 다른 알고리즘이 사용되어 도 5에 도시된 트리의 주해들로부터 주해 기록들을 구성한다. 예시적인 XML 스키마 정의(400)에 대해 얻어진 상태 전이 그래프의 주해 부분이 도 8에 도시되어 있다. 이러한 AAE를 생성하는 것에 의해, XML 데이터 오브젝트의 검증은, 시작 또는 종료 태그들의 시퀀스가 도 7에 도시된 문법을 충족시키는지를 검사하는 것과 관련된다.
도 8을 참조하면, 예시적 XML 스키마 정의(400)는 자동 인코딩 도표(801) 및 글로벌 요소들인 notes(802) 및 personnel(803)을 구비하는 글로벌 요소 맵을 구비한다. 도 9는 예시적 XML 스키마 정의(400)에 대한 자동 인코딩 도표(801)의 상태 전이 그래프를 도시한다. 간략화를 위해, 도 9는 정의(400)에 대한 SHIFT 모서리들 만을 도시하며 REDUCE 모서리들은 생략한다.
도 8로 돌아가면, 글로벌 요소 맵은 notes 요소의 이름(802) 및 personnel 요소의 이름(803)을 구비한다. 이들은 차례로 notes(802) 및 personnel(803) 요소들에 대한 주해 기록(843 및 809)으로의 포인터들을 각각 구비한다. personnel 요소 주해 기록(809)은 그것의 요소 내용 및 인수를 위한 스캐너 ID(804;<anyTypeID, null>), 그것의 시작 태그 토큰(805;PS), 그것의 종료 태그 토큰(806;PE), 속성 리스트(807), 및 후보 하부-요소 맵(808)을 구비한다. personnel 요소 주해 기록(809)에 대한 속성 리스트(807)는 널이다. 그것의 후보 하부-요소 맵(808)은 그것의 로컬 요소 맵으로의 포인터들을 구비한다. 로컬 요소 맵(810)은, employee 요소 주해 기록(816)으로의 포인터를 구비하는 employee 요소 이름을 구비한다.
employee 요소 주해 기록(816)은 그것의 요소 내용 및 인수를 위한 스캐너 ID(811;<anyTypeID, null>), 그것의 시작 태그 토큰(812;ES), 그것의 종료 태그 토큰(813;EE), 속성 리스트(814), 및 후보 하부-요소 맵(815)을 구비한다. XML 스키마 정의(400)에 따르면, 속성 리스트(814)는 serno, userid, 및 department의 3개 속성들을 구비한다. 이와 같이, 속성 리스트(814)는 serno 속성 이름(817) 및 그것의 값과 인수를 위한 스캐너 ID(818;<integerTypeID, null>), userid 속성 이름(819) 및 그것의 값과 인수를 위한 스캐너 ID(820;<anySimpleTypeID, [a-zA-Z][1][1-9a-zA-Z]>), 및 department 속성 이름(821) 및 그것의 값과 인수를 위한 스캐너 ID(822;<stringTypeID, null>)로의 포인터들을 구비한다.
employee 요소 주해 기록(816)을 위한 후보 하부-요소 맵(815)은, employee 요소의 하부-요소들에 대한 주해 기록들로의 포인터들을 구비하는 그것의 로컬 요소 맵으로의 포인터들을 구비한다. XML 스키마 정의(400)에 따르면, employee 요소의 하부-요소들은 lastname, firstname, 및 notes 요소들을 구비한다. 각각은 차례로 lastname 요소 주해 기록(829), firstname 요소 주해 기록(837), 및 notes 요소 주해 기록(843)을 각각 구비한다.
lastname 요소 주해 기록(829)은 그것의 내용과 인수를 위한 스캐너 ID(824;<stringTypeID, null>), 그것의 시작 태그 토큰(825;LS), 그것의 종료 태그 토큰(826;LE), 속성 리스트(827), 및 후보 하부-요소 맵(828)을 구비한다. XML 스키마 정의(400)에 따르면, lastname 요소는 속성들 및 하부-요소들을 갖지 않으므로, 그것의 속성 리스트(827) 및 그것의 후보 하부-요소 맵(828)은 널이다.
firstname 요소 주해 기록(837)은 그것의 내용과 인수를 위한 스캐너 ID(832;<stringTypeID, null>), 그것의 시작 태그 토큰(833;FS), 그것의 종료 태그 토큰(834;FE), 속성 리스트(835), 및 후보 하부-요소 맵(836)을 구비한다. XML 스키마 정의(400)에 따르면, firstname 요소는 속성들 및 하부-요소들을 갖지 않으므로, 그것의 속성 리스트(835) 및 그것의 후보 하부-요소 맵(836)은 널이다.
notes 요소 주해 기록(843)은 그것의 내용과 인수를 위한 스캐너 ID(838;<stringTypeID, null>), 그것의 시작 태그 토큰(839;NS), 그것의 종료 태그 토큰(840;NE), 속성 리스트(841), 및 후보 하부-요소 맵(842)을 구비한다. XML 스키마 정의(400)에 따르면, notes 요소는 속성들 및 하부-요소들을 갖지 않으므로, 그것의 속성 리스트(841) 및 그것의 후보 하부-요소 맵(842)은 널이다.
AAE(800)는, 다음에서 추가적으로 설명하는 바와 같이, XML 문서들을 XML 스키마 정의(400)에 대해 검증하는데 사용된다.
런타임 검증 엔진
도 10은 본 발명에 따른 런타임 검증 엔진(104)을 보다 상세하게 도시한다. 런타임 검증 엔진(104)은 XML 스캐너 풀(1002), 일반 XML 파서(1004), 및 런타임 스키마 검증 파서(1006)를 구비한다. XML 스캐너 풀(1002)은 일반 스캐너(1017) 및 특정한 단순 데이터 유형들을 위한 다른 스캐너들(1018-1020)을 구비한다. 일반 스캐너(1017)가 모든 어휘 토큰들을 스캐닝할 수는 있지만, 그것의 성능은 제한적이다. 특정한 데이터 유형들을 위한 스캐너들(1018-1020)은 더 큰 성능을 제공한다. 예를 들어, 정수 유형용 스캐너(1019) 및 스트링 유형용 스캐너(1020)는 XML 스캐너 풀(1002)의 일부일 수 있다. 바람직한 실시예에서는, AnySimpleType 스캐너(1018)가 임의의 단순 데이터 유형들에 대한 일반 스캐너로서 사용된다. 각각의 스캐너(1017-1020)는 고유한 스캐너 ID(0, 1, ..., n, n+1)를 가진다. 스캐너들은 입력 XML 문서(112)를 토큰화하기 위한 일반 XML 파서(1004)에 의해 호출된다. 어떤 스캐너를 호출할 것인지는, AAE 포맷의 XML 스키마(108)에 따라, 런타임 스키마 검증 파서(1006)에 의해 판정된다.
일반 XML 파서(1004)는 스캐너들로부터 토큰들을 수용하여 기본적인 XML 문법을 검사한다. 토큰이 요소 토큰, 즉, 시작 태그 이름 또는 종료 태그 이름이거나, 토큰이 속성 토큰이라면, 이들은 어휘로서 런타임 스키마 검증 파서(1006)로 전달된다. 런타임 스키마 검증 파서(1006)는 AAE 포맷의 XML 스키마 정의에 대해 요소 및 속성 어휘들을 검증한다. 이와 같이, 일반 XML 파서(1004)는 저급 검증을 수행하지만, 런타임 스키마 검증 파서(1006)는 CFG의 스키마 구조(도 6 참고)에 따라 고급 검증을 수행한다.
런타임 스키마 검증 파서(1006)는, AAE 포맷의 적절한 XML 스키마를 디스크 또는 데이터베이스(110)로부터 로딩하는 XML 스키마 로딩 모듈(1010)을 구비한다. 런타임 스키마 검증 파서(1006)는 또한, 실질적인 고급 검증 프로세스를 수행하는 XML 스키마 검증 모듈(1012)도 구비한다. 이 모듈(1012)은 요소 어휘들을 검증하기 위한 요소 검증 모듈(1014) 및 속성 어휘들을 검증하기 위한 속성 검증 모듈(1016)을 구비한다.
도 11 내지 도 14는 본 발명에 따른 런타임 검증 엔진에 의해 수행되는 런타임 검증 프로세스의 바람직한 실시예를 도시하는 흐름도들이다. 도 11을 참조하면, 먼저, XML 스키마 로딩 모듈(1010)은, 단계 1102를 통해, AAE 포맷(108)의 XML 스키마를 로딩하고 일반 스캐너(1017)를 현재 스캐너로서 설정한다. 또한, 엔티티 관리자(1008)는 확인을 위해 XML 문서 인스턴스에 의해 참조되는 XML 외부 엔티티들을 획득할 것이다. 단계 1104를 통해, XML 문서(112)가 로딩된다. 현재 스캐너는 XML 문서를 토큰화한다. 그 다음, 일반 XML 파서(1004)는, 단계 1106을 통해, 토큰을 획득하기 위해 현재 스캐너를 호출한다. 일반 XML 파서(1004)는, 단계 1108을 통해, 토큰이 성공적으로 리턴되는지를 검사한다. 토큰 스캔이 성공적이지 못하다면, 검증은, 단계 1110을 통해, "무효"로서 리턴되고, 프로세스는 종료된다. 토큰 스캔이 성공적이고, 일반 XML 파서(1004)가, 단계 1112를 통해, 토큰이 요소 또는 속성 토큰이라고 판정한다면, 토큰은, 단계 1114를 통해, 어휘로서 XML 스키마 검증 모듈(1012)로 입력된다. 어휘는 시작 태그 이름, 속성 이름, 또는 종료 태그 이름 중 하나일 수 있다. 어휘의 각 유형은, 단계 1118, 1120, 또는 1122을 통해, 상이한 방식으로 프로세싱된다. 토큰이 요소 또는 속성 토큰이 아니라면, 단계 1124를 통해, 토큰이 EOF(end of file) 토큰, 즉, XML 문서(112)의 끝인지가 판정된다. 아니라면, 프로세스는 단계 1106으로 복귀하여 후속 토큰에 대해 반복된다. 그렇다면, 단계 1125를 통해, 일반 XML 파서(1004) 및 요소 검증 모듈(1014) 모두가 "수용(accept)" 모드에 있는지, 즉, 파싱 및 검증이 완결되었는지가 판정된다. 그렇다면, XML 문서(112)의 검증은 성공적이므로, 단계 1126을 통해, "유효"가 리턴된다. 그렇지 않다면, 검증은 실패이므로, 단계 1127을 통해, "무효"가 리턴된다.
도 12는 본 발명에 따른 시작 태그 이름의 프로세싱을 도시하는 흐름도이다. 먼저, 이전의 주해 기록 및 시작 태그 이름에 기초해, XML 스키마 검증 모듈(1012)은, 단계 1202를 통해, 현재 주해 기록을 찾는다. 현재 주해 기록은 이전 주해 기록의 후보 하부-요소 맵에서 현재 태그 이름에 대응되는 맵 엔드리에 의해 포인팅되는 주해 기록이다. 이러한 현재 주해 기록은, 단계 1206을 통해, 스택으로 푸시된다. 다음으로, XML 스키마 검증 모듈(1012)은, 단계 1208을 통해, 현재 주해 기록으로부터 시작 태그 이름에 대응되는 토큰을 취하고 이 토큰을 요소 검증 모듈(1014)에 입력한다. 요소 검증 모듈(1014)은, 801과 같은, AAE의 파싱 도표 부분에 따라 LR 파싱을 수행한다. 단계 1210을 통해, 검증이 성공적이지 못하다면, 단계 1212를 통해, "무효"가 리턴된다. 단계 1210을 통해, 검증이 성공적이고, 단계 1214를 통해, 현재 주해 기록에 대한 속성 리스트가 공백이며 요소 내용이 단순 유형이라면, 단계 1216을 통해, 현재 스캐너 ID는 단순 유형을 위한 스캐너로 설정된다. 그 다음, 프로세스는 도 11에 도시된 단계 1106으로 계속된다.
도 13은 본 발명에 따른 속성 이름의 프로세싱을 도시하는 흐름도이다. 먼저, XML 스키마 검증 모듈(1012)은, 단계 1301을 통해, 현재 주해 기록을 취하고, 현재 주해 기록 및 속성 이름을 속성 검증 모듈(1016)로 전달한다. 속성 검증 모듈(1016)은, 단계 1302를 통해, 속성 이름을 위해 현재 주해 기록의 속성 리스트를 검색한다. 단계 1304를 통해, 현재 주해 기록에서 속성 이름이 발견되지 않으면, XML 문서(112)의 구조가 XML 스키마 정의(108)를 따르지 않는 것이므로, XML 문서(112)의 검증은 실패이고, 단계 1310을 통해, "무효"가 리턴된다. 단계 1304를 통해, 속성 이름이 발견된다면, XML 스키마 검증 모듈(1012)은, 단계 1312를 통해, 현재 스캐너 ID를 속성 값을 위한 단순 유형으로 설정한다. 그 다음, 프로세스는 도 11에 도시된 단계 1124로 계속된다.
도 14는 본 발명에 따른 종료 태그 이름의 프로세싱을 도시하는 흐름도이다. 먼저, 단계 1402를 통해, 현재 주해 기록이 스택으로부터 삭제된다. AAE 포맷에 따르면, 주해 기록의 종료 태그는 시작 태그 및 모든 속성들 이후에 프로세싱된다. 현재 주해 기록이 상기 단계들(1202-1204)에 따라 설정되기 때문에, 종료 태그 이름을 위한 현재 주해 기록은 시작 태그 이름을 위한 주해 기록이어야 한다. 종료 태그 이름은 프로세싱될 주해 기록의 마지막 토큰이므로, 그것의 주해 기록은 그것의 프로세싱과 함께 스택으로부터 삭제된다. 다음으로, XML 스키마 검증 모듈 (1012)은, 단계 1404를 통해, 현재 주해 기록으로부터 종료 태그 이름을 위한 토큰을 취하고 그것을 요소 검증 모듈(1014)로 입력한다. 단계 1406을 통해, 검증이 성공적이지 못하다면, 검증은 실패이므로, 단계 1410을 통해, "무효"가 리턴된다. 단계 1406을 통해, 검증이 성공적이라면, XML 스키마 검증 모듈(1012)은, 단계 1408을 통해, 현재 주해 기록에 대한 모든 속성들이 검증되었는지를 또는 속성 리스트가 공백인지를 판정한다. 아니라면, XML 문서(112)의 구조가 XML 스키마 정의(108)를 따르지 않는 것이므로, 검증은 실패이고, 단계 1410을 통해, "무효"가 리턴된다. 그렇다면, 프로세스는 도 11의 단계 1106으로 복귀하고 후속 토큰에 대해 반복된다.
XML 스키마 정의(400)의 employee 요소에 대한 것과 같이, 바람직한 실시예에서의 고유성 제약 사항들(430;uniqueness constraints)을 검사하기 위해, 해시 도표 또는 어레이를 사용해, employee serno를 이전에 맞닥뜨린 적이 있는지의 여부를 추적할 수 있다.
바람직한 실시예의 참조 집약성(referential integrity)을 검사하기 위해, XML 문서(112)가 스캔됨에 따라, 정의들의 리스트가 수집될 수 있다. 그 다음, 정의 리스트에 대해 참조들을 검사할 수 있다. 참조들이 정의 이전에 나타나는 경우에는, XML 문서(112) 전체가 스캐닝되어야 할 것이며 참조들은 참조 집약성을 검사하기 전에 상기된다.
예시적 검증
예를 들어, XML 문서(112)에 대한 XML 스키마 정의가 예시적인 XML 스키마 정의(400;도 4)라고 가정한다. 도 16은 검증될 예시적 XML 문서(1600)를 도시한다. XML 스키마 로딩 모듈(1012)은, 단계 1102를 통해, AAE 포맷의 XML 스키마를 로딩하고 일반 스캐너(1017)를 현재 스캐너로 설정한다. 단계 1104를 통해, XML 문서(1600) 또한 로딩된다. 일반 XML 파서(1004)는, 단계 1106을 통해, personnel 시작 태그 이름(1602)인 제 1 토큰을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가, 그것이 요소 토큰이라고 판정한다면, 단계 1114를 통해, 일반 XML 파서(1004)는 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 다음으로, XML 스키마 검증 모듈(1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 시작 태그 이름이므로, 프로세스 단계(1118)는 도 12에 도시된 바와 같이 수행된다.
Personnel 시작 태그 이름
XML 스키마 정의(400)를 위한 그래프(800)에 따르면, personnel 시작 태그 이름(803)을 위한 이전의 주해 기록은 personnel 요소 주해 기록(809)을 포인팅한다. 도 12를 참조하면, 따라서 personnel 요소 주해 기록(809)은, 단계 1202를 통해, 현재 주해 기록이고, 단계 1206을 통해, 스택으로 푸시된다. 스택의 내용들은 도 15a에 도시된 바와 같아진다. 다음으로, XML 스키마 검증 모듈(1012)은, 단계 1208을 통해, personnel 요소 주해 기록(809)으로부터 personnel 시작 태그 토큰(PS;805)을 취하고 이 토큰(805)을 요소 검증 모듈(1014)로 입력한다. 요소 검증 모듈(1014)은, 도 9에 도시된, 상태 전이들을 위한 파싱 도표를 사용하는 파서이다. 단계 1210을 통해, 검증은 성공적이다. 단계 1214를 통해, personnel 요소 주 해 기록(809)을 위한 속성 리스트(807)는 공백(널)이지만, 내용은 복잡한 유형(anyTypeID)이다. 따라서, 검증 프로세스는 도 11의 단계 1106으로 복귀하고 후속 토큰에 대해 반복된다.
Employee 시작 태그 이름
일반 XML 파서(1004)는, 단계 1106을 통해, 후속 토큰, employee 시작 태그 이름(1604)을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가 그것을 요소 토큰으로 판정한다면, 일반 XML 파서(1004)는, 단계 1114를 통해, 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 그 다음, XML 스키마 검증 모듈(1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 시작 태그 이름이므로, 프로세스 단계(1118)는 도 12에 도시된 바와 같이 수행된다.
도 12를 참조하면, personnel 요소 주해 기록(809)의 후보 하부-요소 맵(808), 즉, 이전 주해 기록은, 단계 1202를 통해, employee 요소 주해 기록(816), 즉, 현재 주해 기록을 포인팅하는 employee 시작 태그 이름(810)을 포인팅하며, 단계 1206을 통해 스택으로 푸시된다. 이제 스택의 내용들은 도 15b에 도시된 바와 같아진다. XML 스키마 검증 모듈(1012)은, 단계 1208을 통해, employee 요소 주해 기록(816)으로부터 employee 시작 태그 토큰(ES;812)을 취하고, 토큰(812)을 요소 검증 모듈(1014)로 입력한다. 단계 1210을 통해, 검증은 성공적이다. 단계 1214를 통해, employee 요소 주해 기록(816)에 대한 속성 리스트(814)가 공백이 아니므로, 프로세스는 도 11의 단계 1106으로 복귀하고 후속 토큰에 대해 반복된다.
Serno 속성 이름
일반 XML 파서는, 단계 1106을 통해, 후속 토큰, 속성 이름 serno(1606)를 위한 토큰을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가 그것을 속성 토큰으로 판정한다면, 일반 XML 파서(1004)는, 단계 1114를 통해, 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 그 다음, XML 스키마 검증 모듈(1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 속성 이름이므로, 프로세스 단계(1120)는 도 13에 도시된 바와 같이 수행된다.
도 13을 참조하면, XML 스키마 검증 모듈(1012)은, 단계 1301을 통해, 현재 주해 기록 및 serno 속성 이름을 속성 검증 모듈(1016)로 전달한다. 현재 주해 기록은 employee 요소 주해 기록(816)이다. 속성 검증 모듈(1016)은, 단계 1302를 통해, serno 속성 이름(817)을 위해 속성 리스트(814)를 검색한다. 단계 1304를 통해, 거기에서 serno 속성 이름(817)이 발견된다. 검증이 성공적이므로, XML 스키마 검증 모듈(1012)은, 단계 1312를 통해, 현재 스캐너 ID를 integerTypeID로 설정한다. 그 다음, 프로세스는 도 11의 단계 1106으로 복귀하고 후속 토큰에 대해 반복된다. IntegerType 스캐너(1019)는 serno 속성 이름들에 대한 속성 값으로서 정수 "12345"를 스캔한다. 현재 스캐너는 일반 스캐너로 재설정된다.
Userid 속성 이름
일반 XML 파서는, 단계 1106을 통해, 후속 토큰, 속성 이름 userid(1608)를 위한 토큰을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가 그것을 속성 토큰으로 판정한다면, 일반 XML 파서(1004)는, 단계 1114를 통해, 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 그 다음, XML 스키마 검증 모듈(1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 속성 이름이므로, 프로세스 단계(1120)는 도 13에 도시된 바와 같이 수행된다.
도 13을 참조하면, XML 스키마 검증 모듈(1012)은, 단계 1301을 통해, 현재 주해 기록 및 userid 속성 이름(819)을 속성 검증 모듈(1016)로 전달한다. 현재 주해 기록은 employee 요소 주해 기록(816)이다. 속성 검증 모듈(1016)은, 단계 1302를 통해, userid 속성 이름(819)을 위해 속성 리스트(814)를 검색한다. 단계 1304를 통해, 거기에서 userid 속성 이름(819)이 발견된다. 검증이 성공적이므로, XML 스키마 검증 모듈(1012)은, 단계 1312를 통해, 현재 스캐너 ID를 anySimpleTypeID로 설정한다. 그 다음, 프로세스는 도 11의 단계 1106으로 복귀하고 후속 토큰에 대해 반복된다. AnySimpleType 스캐너(1018)는 userid 속성 이름에 대한 속성 값으로서 "A1bc78D"를 스캔한다. 현재 스캐너는 일반 스캐너로 재설정된다.
Department 속성 이름
일반 XML 파서는, 단계 1106을 통해, 후속 토큰, 속성 이름 department(1610)를 위한 토큰을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가 그것을 속성 토큰으로 판정한다면, 일반 XML 파서(1004)는, 단계 1114를 통해, 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 그 다음, XML 스키마 검증 모듈 (1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 속성 이름이므로, 프로세스 단계(1120)는 도 13에 도시된 바와 같이 수행된다.
도 13을 참조하면, XML 스키마 검증 모듈(1012)은, 단계 1301을 통해, 현재 주해 기록 및 department 속성 이름(821)을 속성 검증 모듈(1016)로 전달한다. 현재 주해 기록은 employee 요소 주해 기록(816)이다. 속성 검증 모듈(1016)은, 단계 1302를 통해, department 속성 이름(821)을 위해 속성 리스트(814)를 검색한다. 단계 1304를 통해, department 속성 이름(821)이 거기에서 발견된다. 검증이 성공적이므로, XML 스키마 검증 모듈(1012)은, 단계 1312를 통해, 현재 스캐너 ID를 stringTypeID로 설정한다. 그 다음, 프로세스는 도 11의 단계 1106으로 복귀하고 후속 토큰에 대해 반복된다. StringType 스캐너(1020)는 department 속성 이름에 대한 속성 값으로서 "sales"를 스캔한다. 현재 스캐너는 일반 스캐너로 재설정된다.
Lastname 시작 태그 이름
일반 XML 파서(1004)는, 단계 1106을 통해, 후속 토큰, lastname 시작 태그 이름(1612)을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가 그것을 요소 토큰으로 판정한다면, 일반 XML 파서(1004)는, 단계 1114를 통해, 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 그 다음, XML 스키마 검증 모듈(1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 시작 태그 이름이므로, 프로세스 단계(1118)는 도 12에 도시된 바와 같이 수행된다.
도 12를 참조하면, employee 요소 주해 기록(816)의 후보 하부-요소 맵(815), 즉, 이전 주해 기록은, 단계 1202를 통해, lastname 요소 주해 기록(829), 즉, 현재 주해 기록을 포인팅하는 lastname 시작 태그 이름(823)을 포인팅하며, 단계 1206을 통해 스택으로 푸시된다. 이제 스택의 내용들은 도 15c에 도시된 바와 같아진다. XML 스키마 검증 모듈(1012)은, 단계 1208을 통해, lastname 요소 주해 기록(829)으로부터 lastname 시작 태그 토큰(LS;825)을 취하고, 토큰(825)을 요소 검증 모듈(1014)로 입력한다. 단계 1210을 통해, 검증은 성공적이다. 단계 1214를 통해, lastname 요소 주해 기록(829)에 대한 속성 리스트(814)가 공백이고 lastname 요소의 내용이 단순 유형(stringTypeID)이므로, 현재 스캐너 ID는, 단계 1216을 통해, stringType ID로 변경된다. 그 다음, 프로세스는 도 11의 단계 1106으로 복귀하고 후속 토큰에 대해 반복된다. 그 다음, StringType 스캐너(1020)가 호출되어 lastname 요소의 내용으로서 "White"를 스캔한다. 현재 스캐너는 일반 스캐너로 재설정된다.
Lastname 종료 태그 이름
일반 XML 파서는, 단계 1106을 통해, 후속 토큰, lastname 종료 태그 이름(1614)을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가 그것을 요소 토큰으로 판정한다면, 일반 XML 파서(1004)는, 단계 1114를 통해, 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 그 다음, XML 스키마 검증 모듈(1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 종료 태그 이름이므로, 프로세스 단계(1112) 는 도 14에 도시된 바와 같이 수행된다.
도 14를 참조하면, lastname 요소 주해 기록(829), 즉, 현재 주해 기록은, 단계 1402를 통해, 스택으로부터 삭제된다. 이제 스택의 내용들은 도 15b에 도시된 바와 같아진다. XML 스키마 검증 모듈(1012)은, 단계 1404를 통해, lastname 요소 주해 기록(829)으로부터 lastname 종료 태그 토큰(LE;826)을 취하고, 토큰(826)을 요소 검증 모듈(1014)로 입력한다. 단계 1406을 통해, 검증은 성공적이다. 단계 1408을 통해, lastname 요소 주해 기록(829)에 대한 속성 리스트(827)가 공백이므로, 프로세스는 도 11의 단계 1106으로 복귀하고 후속 토큰에 대해 반복된다.
Firstname 시작 태그 이름
일반 XML 파서는, 단계 1106을 통해, 후속 토큰, firstname 시작 태그 이름(1616)을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가 그것을 요소 토큰으로 판정한다면, 일반 XML 파서(1004)는, 단계 1114를 통해, 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 그 다음, XML 스키마 검증 모듈(1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 시작 태그 이름이므로, 프로세스 단계(1118)는 도 12에 도시된 바와 같이 수행된다.
도 12를 참조하면, employee 요소 주해 기록(816)의 후보 하부-요소 맵(815), 즉, 이전 주해 기록은, 단계 1202를 통해, firstname 요소 주해 기록(837), 즉, 현재 주해 기록을 포인팅하는 firstname 시작 태그 이름(830)을 포인팅하며, 단계 1206을 통해 스택으로 푸시된다. 이제 스택의 내용들은 도 15d에 도시된 바와 같아진다. XML 스키마 검증 모듈(1012)은, 단계 1208을 통해, firstname 요소 주해 기록(837)으로부터 firstname 시작 태그 토큰(FS;833)을 취하고, 토큰(833)을 요소 검증 모듈(1014)로 입력한다. 단계 1210을 통해, 검증은 성공적이다. 단계 1214를 통해, firstname 요소 주해 기록(837)에 대한 속성 리스트(835)가 공백이고 firstname 요소의 내용이 단순 유형(stringTypeID)이므로, 단계 1216을 통해, 현재 스캐너 ID는 stringType ID로 변경된다. 그 다음, 프로세스는 도 11의 단계 1106으로 복귀하고 후속 토큰에 대해 반복된다. 그 다음, StringType 스캐너(1020)가 호출되어 firstname 요소를 위한 내용으로서 "John"을 스캔한다. 현재 스캐너는 일반 스캐너로 재설정된다.
Firstname 종료 태그 이름
일반 XML 파서는, 단계 1106을 통해, 후속 토큰, firstname 종료 태그 이름(1618)을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가 그것을 요소 토큰으로 판정한다면, 일반 XML 파서(1004)는, 단계 1114를 통해, 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 그 다음, XML 스키마 검증 모듈(1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 종료 태그 이름이므로, 프로세스 단계(1112)는 도 14에 도시된 바와 같이 수행된다.
도 14를 참조하면, firstname 요소 주해 기록(837), 즉 현재 주해 기록은, 단계 1402를 통해, 스택으로부터 삭제된다. 이제 스택의 내용들은 도 15b에 도시된 바와 같아진다. XML 스키마 검증 모듈(1012)은, 단계 1404를 통해, firstname 요소 주해 기록(837)으로부터 firstname 종료 태그 토큰(SE;834)을 취하고, 토큰(834)을 요소 검증 모듈(1014)로 입력한다. 단계 1406을 통해, 검증은 성공적이다. 단계 1408을 통해, firstname 요소 주해 기록(837)에 대한 속성 리스트(827)가 공백이므로, 프로세스는 도 11의 단계 1106으로 복귀하며 후속 토큰에 대해 반복된다.
Notes 시작 태그 이름
일반 XML 파서는, 단계 1106을 통해, 후속 토큰, notes 시작 태그 이름(1620)을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가 그것을 요소 토큰으로 판정한다면, 일반 XML 파서(1004)는, 단계 1114를 통해, 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 그 다음, XML 스키마 검증 모듈(1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 시작 태그 이름이므로, 프로세스 단계(1118)는 도 12에 도시된 바와 같이 수행된다.
도 12를 참조하면, employee 요소 주해 기록(816)의 후보 하부-요소 맵(815), 즉, 이전 주해 기록은, 단계 1202를 통해, notes 요소 주해 기록(843), 즉, 현재 주해 기록을 포인팅하는 notes 시작 태그 이름(838)을 포인팅하며, 단계 1206을 통해 스택으로 푸시된다. 이제 스택의 내용들은 도 15e에 도시된 바와 같아진다. XML 스키마 검증 모듈(1012)은, 단계 1208을 통해, notes 요소 주해 기록(843)으로부터 notes 시작 태그 토큰(NS;839)을 취하고, 토큰(839)을 요소 검증 모듈(1014)로 입력한다. 단계 1210을 통해, 검증은 성공적이다. 단계 1214를 통해, notes 요소 주해 기록(843)에 대한 속성 리스트(835)가 공백이고 notes 요소의 내 용이 단순 유형(stringTypeID)이므로, 단계 1216을 통해, 현재 스캐너 ID는 stringType ID로 변경된다. 그 다음, 프로세스는 도 11의 단계 1106으로 복귀하며 후속 토큰에 대해 반복된다. 그 다음, StringType 스캐너(1020)가 호출되어 notes 요소를 위한 내용으로서 "regular"를 스캔한다. 현재 스캐너는 일반 스캐너로 재설정된다.
Notes 종료 태그 이름
일반 XML 파서는, 단계 1106을 통해, 후속 토큰, notes 종료 태그 이름(1622)을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가 그것을 요소 토큰으로 판정한다면, 일반 XML 파서(1004)는, 단계 1114를 통해, 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 그 다음, XML 스키마 검증 모듈(1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 종료 태그 이름이므로, 프로세스 단계(1112)는 도 14에 도시된 바와 같이 수행된다.
도 14를 참조하면, notes 요소 주해 기록(843), 즉, 현재 주해 기록은, 단계 1402를 통해, 스택으로부터 삭제된다. 이제 스택의 내용들은 도 15b에 도시된 바와 같아진다. XML 스키마 검증 모듈(1012)은, 단계 1404를 통해, notes 요소 주해 기록(843)으로부터 notes 종료 태그 토큰(NE;840)을 취하고, 토큰(840)을 요소 검증 모듈(1014)로 입력한다. 단계 1406을 통해, 검증은 성공적이다. 단계 1408을 통해, notes 요소 주해 기록(843)에 대한 속성 리스트(841)가 공백이므로, 프로세스는 도 11의 단계 1106으로 복귀하며 후속 토큰에 대해 반복된다.
Employee 종료 태그 이름
일반 XML 파서는, 단계 1106을 통해, 후속 토큰, employee 종료 태그 이름(1624)을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가 그것을 요소 토큰으로 판정한다면, 일반 XML 파서(1004)는, 단계 1114를 통해, 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 그 다음, XML 스키마 검증 모듈(1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 종료 태그 이름이므로, 프로세스 단계(1112)는 도 14에 도시된 바와 같이 수행된다.
도 14를 참조하면, employee 요소 주해 기록(816), 즉, 현재 주해 기록은, 단계 1402를 통해, 스택으로부터 삭제된다. 이제 스택의 내용들은 도 15a에 도시된 바와 같아진다. XML 스키마 검증 모듈(1012)은, 단계 1404를 통해, employee 요소 주해 기록(816)으로부터 employee 종료 태그 토큰(EE;813)을 취하고, 토큰(813)을 요소 검증 모듈(1014)로 입력한다. 단계 1406을 통해, 검증은 성공적이다. 단계 1408을 통해, employee 요소 주해 기록(816)에 대한 모든 속성들(817, 819, 및 821)이 검증되었으므로, 프로세스는 도 11의 단계 1106으로 복귀하며 후속 토큰에 대해 반복된다.
예시적 XML 문서(1600)에서의 personnel 요소 하부의 나머지 employee 요소들에 대해서도 유사한 검증 프로세스가 수행된다.
Personnel 종료 태그 이름
일반 XML 파서는, 단계 1106을 통해, 후속 토큰, personnel 종료 태그 이름 (1626)을 취하기 위해 현재 스캐너를 호출한다. 단계 1108을 통해, 토큰 스캔이 성공적이고, 단계 1112를 통해, 일반 XML 파서(1004)가 그것을 요소 토큰으로 판정한다면, 일반 XML 파서(1004)는, 단계 1114를 통해, 그것을 어휘로서 XML 스키마 검증 모듈(1012)로 입력한다. 그 다음, XML 스키마 검증 모듈(1012)은, 단계 1116을 통해, 어휘 유형을 판정한다. 어휘가 종료 태그 이름이므로, 프로세스 단계(1112)는 도 14에 도시된 바와 같이 수행된다.
도 14를 참조하면, personnel 요소 주해 기록(809), 즉, 현재 주해 기록은, 단계 1402를 통해, 스택으로부터 삭제된다. XML 스키마 검증 모듈(1012)은, 단계 1404를 통해, personnel 요소 주해 기록(809)으로부터 personnel 종료 태그 토큰(PE;806)을 취하고, 토큰(806)을 요소 검증 모듈(1014)로 입력한다. 단계 1406을 통해, 검증은 성공적이다. 단계 1408을 통해, personnel 요소 주해 기록(809)에 대한 속성 리스트(807)가 공백이므로, 프로세스는 도 11의 단계 1106으로 복귀하며 후속 토큰에 대해 반복된다. 다음으로는, EOF 토큰이 리턴된다. 단계 1125를 통해, 일반 XML 파서(1004) 및 요소 모듈(1014) 모두가 "수용" 모드 상태에 있으므로, 프로세스는 XML 문서(1600)의 검증을 완결짓는다. 따라서, 단계 1126을 통해, "유효"가 리턴된다.
발전된 특징들
예시적 XML 스키마 정의로 바람직한 실시예를 상술하였지만, 일부 발전된 특징들이 본 발명에 의해 지원될 수도 있다. 예를 들어, 유도된 유형들(derived types)을 가진 요소의 선언, 또는 추상적 유형 및/또는 추상적 요소들과 대체 그룹 들이 지원될 수도 있다.
유형 유도로 인해, 기본 유형들을 사용해 새로운 유형들을 정의할 수 있다. 유도된 유형들을 가진 유형의 요소를 선언할 때, 그 선언은 추상적일 수 있는 기본 유형만을 참조한다. 요소가 유도된 유형들을 가진 유형으로 선언되면, xsi:type 속성을 사용해 추상적 유형의 어떤 유도 유형이 XML 인스턴스에 사용되는지를 판정해야 한다. 다시 말해, 요소의 데이터 유형이 요소의 이름만으로는 판정될 수 없다. 그러나, XML 스키마 정의가 컴파일될 때, 추상적 유형에 의해 어떤 요소가 선언되는지는 알 수 있다. 따라서, 이 정보는 추상적 유형 필드에 의해 글로벌 및 로컬 요소 맵들로 인코딩된다. 런타임 검증 엔진(104)이, 실행시에 요소가 추상적 유형을 사용해 선언된다는 것을 알게 되면, xsi:type이 발견될 때까지, 런타임 검증 엔진(104)은 이 요소의 속성들에 대한 검증을 연기할 것이다.
예를 들어, 도 17은 XML 스키마 정의를 위한 예시적인 유도 유형 정의들의 일부를 도시한다. 이 예에서는, employee 요소에 대한 단일 유형 대신에, employeeType, regularEmployee, 및 tempEmployee의 3가지 유형들이 정의된다. employee 요소의 선언은 기본 유형 "employeeType"을 참조한다.
본 발명에 따른 XML 스키마 검증에서 유도 유형들을 지원하기 위해, XML 스키마 컴파일(102)은 CFG의 employee 요소에 대해 OR("|")를 사용한다.
employee: employeeType
| regularEmployee
| tempEmployee
regularEmployee 및 tempEmployee 양자에 대한 BNF는, 그들이 포함하는 모든 요소들을 포함하도록 확장될 것이다. 예를 들어, regularEmployee는 4개 요소들: lastname, firstname, notes, 및 salary 모두를 포함하도록 확장될 것이다. XML 스키마 권고에 의한 XML 스키마들에 대한 제약 사항들에 따르면, XML 스키마가 합법적이기 위해서는 결과적 CFG들에 대해 어떤 예견 능력(look ahead)도 요구되어서는 안된다. 이것은 결과적 CFG가 SLR 또는 LALR(1)의 능력내에 있어야 한다는 것을 의미하며, 그렇지 않으면, XML 스키마 정의는 오류 상태가 된다. 스키마 컴파일의 나머지는 동일할 것이다.
런타임 검증 엔진(104)의 경우, employee 요소의 검증은 2가지 다른 방법으로 실현될 수 있다. 첫번째 방법에서는, 역추적 메커니즘(backtracking mechanism)이 사용된다. 런타임 검증 엔진(104)이, 유도 유형들 중 하나일 수 있는 요소를 만날 경우, 런타임 검증 엔진(104)은 xsi:type 속성들을 위한 시작 태그를 스캔한다. 이러한 속성값들에 기초해, 런타임 검증 엔진(104)은 런타임 스키마 검증 파서(1006)를 위한 대응 어휘를 생성한다. 그 다음, 런타임 검증 엔진(104)은 태그 이름 이후의 시작 태그를 재스캔할 것이다. 예를 들어, 다음의 시작 태그를 만난다면:
<employee xsi:tyoe = "regularEmployee">
regularEmployee 어휘가 고급 검증 파서로 전달된다.
두번째 방법에서는, 일반 XML 파서(1004)가 전체 시작 태그를 총체적으로 취급하며 검증 파서(1006)는 그 내용들을 검증한다. 일반 XML 파서(1004)는 xsi:type의 값을 알고 있으며 런타임 스키마 검증 파서(1006)를 위한 적절한 토큰을 생성한다. 그 다음, 런타임 스키마 검증 파서(1006)는 전체 시작 태그를 검증한다.
추상적 요소 및 요소들의 대체 그룹들에 대해, 유사한 메커니즘이 XML 스키마 컴파일(102)에 의한 스키마 컴파일에 적용될 수 있다. 그러나, 추상적 유형들과 달리, 요소 이름으로부터 요소의 유형을 알 수 있다. 따라서, xsi:type 속성을 위해 스캔할 필요는 없다.
XML 스키마들의 맥락에서 본 발명을 상술하였지만, 당업자라면, 본 발명의 정신 및 범위를 벗어나지 않으면서, 본 검증 프로세스가 스키마들을 이용하는 다른 태그형 및/또는 마크업 언어들에도 사용될 수 있다는 것을 알 수 있을 것이다.
결론
XML 스키마 검증을 위한 향상된 방법 및 시스템이 개시되었다. 본 방법 및 시스템은 XML 스키마 정의들을, 디스크 또는 데이터베이스에 저장되는 AAE 포맷으로 컴파일한다. 각각의 XML 스키마 정의는 한번에 AAE 포맷으로 컴파일된다. XML 문서가 검증될 때, XML 문서 및 AAE 포맷의 적당한 XML 스키마 정의가 런타임 검증 엔진으로 로딩된다. 런타임 검증 엔진은 일반 XML 파서 및 런타임 스키마 검증 파서를 구비한다. 런타임 검증 엔진을 위한 코드는 고정되어 있으며 XML 스키마 정의에 따라 달라지지 않는다. 일반 XML 파서는 저급 검증을 수행하는 한편, 런타임 스키마 검증 파서는 AAE 포맷의 XML 스키마 정의에 대한 XML 문서의 고급 검증을 수행한다. 런타임 검증 엔진의 출력은 검증 통과 또는 실패이다.
AAE 포맷의 XML 스키마 정의는, XML 문서가 검증될 때마다 컴파일되는 것이 아니라, 한번에 컴파일되어 저장되기 때문에, 검증 프로세스의 수행시 상당한 시간이 절감된다. 또한, 런타임 검증 엔진 코드는, 각각의 XML 스키마 정의에 따라 달라지는 것이 아니라, 고정적이기 때문에, 다수의 XML 스키마 정의들이 존재하는 경우라 하더라도, 공간 오버헤드가 최소화된다. 또한, 성능을 손상시키지 않으면서 검증 프로세스의 호환성이 제공된다.
나타낸 실시예들에 따라 본 발명이 설명되기는 했지만, 당업자라면, 실시예들을 변형할 수 있으며 그러한 변형들 또한 본 발명의 정신 및 범위내라는 것을 쉽게 알 수 있을 것이다. 따라서, 첨부된 청구항들의 정신 및 범위를 벗어나지 않으면서, 당업자에 의해 많은 변경들이 수행될 수 있다.
Claims (37)
- 마크업 언어 스키마 정의에 대하여 마크업 언어 문서를 검증하기 위한 방법으로서,상기 마크업 언어 문서를, 마크업 언어 스키마 검증 파서(parser)를 포함하는 런타임 검증 엔진으로 로딩하는 단계와,상기 마크업 언어 스키마 정의에 대응하는 AAE(annotated automation encoding)를 상기 마크업 언어 스키마 검증 파서로 로딩하는 단계와,상기 마크업 언어 스키마 검증 파서가 상기 AAE를 이용하여, 상기 마크업 언어 스키마 정의에 대해 상기 마크업 언어 문서를 검증하는 단계로서, 상기 마크업 언어 문서가 상기 마크업 언어 스키마 정의에 의해 특정되는 포맷에 부합함을 보장하는 것을 포함하는, 상기 마크업 언어 문서의 검증 단계를 포함하는, 마크업 언어 문서의 검증 방법.
- 제1항에 있어서,상기 마크업 언어는 XML(Extensible Markup Language)을 포함하는 것인, 마크업 언어 문서의 검증 방법.
- 제1항에 있어서, 상기 AAE는 요소 노드를 포함하고, 상기 요소 노드는 하나 이상의 속성들을 포함하며, 상기 요소 노드 또는 상기 하나 이상의 속성들은 하나 이상의 데이터 유형 제약 사항들과 관련되는 것인, 마크업 언어 문서의 검증 방법.
- 제3항에 있어서, 상기 AAE는 상기 요소 노드에 대한 요소 주해 기록을 포함하고,상기 요소 주해 기록은,요소 내용 및 인자에 대한 스캐너 ID와,시작 태그 토큰과,종료 태그 토큰과,속성 리스트와,하부-요소 이름으로의 포인터를 포함하는 후보 하부-요소 맵 중 하나 이상을 포함하는 것인, 마크업 언어 문서의 검증 방법.
- 제1항에 있어서,상기 마크업 언어 스키마 정의를 수신하는 단계와,상기 마크업 언어 스키마 정의에 대한 요소 구조의 계층 구조를 생성하고 상기 요소 구조의 계층 구조를 주해된 트리로 표현하는 단계와,상기 주해된 트리를 인코딩하여 상기 마크업 언어 스키마 정의에 대응하는 AAE를 생성하는 단계로서, 상기 AAE를 직렬화하는 것을 포함하는, 상기 AAE 생성 단계와,상기 AAE를 저장하는 단계를 더 포함하는, 마크업 언어 문서의 검증 방법.
- 제1항에 있어서,상기 마크업 언어 문서를 토큰화하여 토큰을 생성하는 단계와,상기 런타임 검증 엔진과 연관되는 일반 XML 파서에 의해 상기 토큰의 제1 검증을 수행하는 단계와,상기 마크업 언어 스키마 검증 파서에 의해, 상기 토큰이 요소 토큰 또는 속성 토큰인 경우에 대응하여 상기 토큰에 대한 제2 검증을 수행하는 단계를 더 포함하는 것인 마크업 언어 스키마 검증 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 마크업 언어 스키마 정의에 대하여 마크업 언어 문서를 검증하기 위한 시스템으로서,마크업 언어 스키마 정의에 대응하는 AAE를 생성하기 위한 마크업 언어 스키마 컴파일과,마크업 언어 스키마 검증 파서를 구비하는 런타임 검증 엔진을 구비하고,상기 런타임 스키마 검증 파서는 상기 마크업 언어 문서 및 상기 AAE를 입력으로서 수신하고, 상기 런타임 검증 엔진과 연관된 상기 마크업 언어 스키마 검증 파서는 상기 마크업 언어 문서를 상기 마크업 언어 스키마 정의에 대해 검증하며, 상기 마크업 언어 스키마 정의에 대한 검증은 상기 마크업 언어 문서가 상기 마크업 언어 스키마 정의에 의해 특정되는 포맷에 부합함을 보장하는 것을 포함하는 것인, 마크업 언어 문서 검증 시스템.
- 제13항에 있어서, 상기 마크업 언어는 XML(Extensible Markup Language)을 포함하는 것인 마크업 언어 스키마 검증 시스템.
- 제13항 또는 제14항에 있어서, 상기 AAE는 요소 노드를 포함하고, 상기 요소 노드는 하나 이상의 속성들을 포함하며, 상기 요소 노드 또는 상기 하나 이상의 속성들은 하나 이상의 데이터 유형 제약 사항들과 관련되는 것인 마크업 언어 스키마 검증 시스템.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 청구항 제1항 내지 제6항 중 어느 한 항에 따른 각각의 단계를 수행하게 하는 각각의 프로그램 명령어가 기록된 컴퓨터 판독 가능 매체.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US41867302P | 2002-10-15 | 2002-10-15 | |
US60/418,673 | 2002-10-15 | ||
US10/418,658 | 2003-04-16 | ||
US10/418,658 US7493603B2 (en) | 2002-10-15 | 2003-04-16 | Annotated automaton encoding of XML schema for high performance schema validation |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20050053671A KR20050053671A (ko) | 2005-06-08 |
KR100800343B1 true KR100800343B1 (ko) | 2008-02-04 |
Family
ID=32073519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020057004546A KR100800343B1 (ko) | 2002-10-15 | 2003-10-11 | 고성능 스키마 검증을 위한 xml 스키마의 주해된 자동인코딩 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7493603B2 (ko) |
EP (1) | EP1573519B1 (ko) |
JP (1) | JP4487290B2 (ko) |
KR (1) | KR100800343B1 (ko) |
AU (1) | AU2003274322A1 (ko) |
CA (1) | CA2500422C (ko) |
TW (1) | TWI239458B (ko) |
WO (1) | WO2004036417A2 (ko) |
Families Citing this family (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7225467B2 (en) * | 2000-11-15 | 2007-05-29 | Lockheed Martin Corporation | Active intrusion resistant environment of layered object and compartment keys (airelock) |
US7213265B2 (en) * | 2000-11-15 | 2007-05-01 | Lockheed Martin Corporation | Real time active network compartmentalization |
CA2359831A1 (en) * | 2001-10-24 | 2003-04-24 | Ibm Canada Limited-Ibm Canada Limitee | Method and system for multiple level parsing |
US7493603B2 (en) | 2002-10-15 | 2009-02-17 | International Business Machines Corporation | Annotated automaton encoding of XML schema for high performance schema validation |
US20070061884A1 (en) * | 2002-10-29 | 2007-03-15 | Dapp Michael C | Intrusion detection accelerator |
US7146643B2 (en) * | 2002-10-29 | 2006-12-05 | Lockheed Martin Corporation | Intrusion detection accelerator |
US7080094B2 (en) * | 2002-10-29 | 2006-07-18 | Lockheed Martin Corporation | Hardware accelerated validating parser |
US20040083466A1 (en) * | 2002-10-29 | 2004-04-29 | Dapp Michael C. | Hardware parser accelerator |
US7194462B2 (en) * | 2003-02-27 | 2007-03-20 | Bea Systems, Inc. | Systems and methods for implementing an XML query language |
EP1604277A2 (en) * | 2003-02-28 | 2005-12-14 | Lockheed Martin Corporation | Hardware accelerator personality compiler |
JP3982623B2 (ja) * | 2003-03-25 | 2007-09-26 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理装置、データベース検索システム及びプログラム |
US20040230602A1 (en) * | 2003-05-14 | 2004-11-18 | Andrew Doddington | System and method for decoupling data presentation layer and data gathering and storage layer in a distributed data processing system |
US7366722B2 (en) * | 2003-05-15 | 2008-04-29 | Jp Morgan Chase Bank | System and method for specifying application services and distributing them across multiple processors using XML |
US7792866B2 (en) | 2003-08-25 | 2010-09-07 | International Business Machines Corporation | Method and system for querying structured documents stored in their native format in a database |
US8250093B2 (en) | 2003-08-25 | 2012-08-21 | International Business Machines Corporation | Method and system for utilizing a cache for path-level access control to structured documents stored in a database |
US7519574B2 (en) | 2003-08-25 | 2009-04-14 | International Business Machines Corporation | Associating information related to components in structured documents stored in their native format in a database |
US8150818B2 (en) * | 2003-08-25 | 2012-04-03 | International Business Machines Corporation | Method and system for storing structured documents in their native format in a database |
US8775468B2 (en) * | 2003-08-29 | 2014-07-08 | International Business Machines Corporation | Method and system for providing path-level access control for structured documents stored in a database |
US7587667B2 (en) * | 2003-09-04 | 2009-09-08 | Oracle International Corporation | Techniques for streaming validation-based XML processing directions |
CA2446082A1 (en) * | 2003-10-22 | 2005-04-22 | Ibm Canada Limited - Ibm Canada Limitee | Single file serialization for physical and logical meta-model information |
US8166053B2 (en) * | 2003-10-30 | 2012-04-24 | Ntt Docomo, Inc. | Method and apparatus for schema-driven XML parsing optimization |
US7313756B2 (en) * | 2003-12-15 | 2007-12-25 | Microsoft Corporation | Schema editor extensions |
US7454469B2 (en) * | 2003-12-22 | 2008-11-18 | International Business Machines Corporation | Method and system for instant messaging Bots specification using state transition methodology and XML |
US7437374B2 (en) * | 2004-02-10 | 2008-10-14 | International Business Machines Corporation | Efficient XML schema validation of XML fragments using annotated automaton encoding |
US20050177578A1 (en) * | 2004-02-10 | 2005-08-11 | Chen Yao-Ching S. | Efficient type annontation of XML schema-validated XML documents without schema validation |
US7603654B2 (en) * | 2004-03-01 | 2009-10-13 | Microsoft Corporation | Determining XML schema type equivalence |
US7653874B2 (en) * | 2004-06-30 | 2010-01-26 | Alcatel-Lucent Usa Inc. | Methods and devices for generating XML expressed management transactions |
US7693850B2 (en) * | 2004-07-19 | 2010-04-06 | Rightorder, Inc. | Method and apparatus for adding supplemental information to PATRICIA tries |
US7747945B1 (en) * | 2004-09-22 | 2010-06-29 | International Business Machines Corporation | Data validation rules for acord documents |
JP2006139764A (ja) * | 2004-10-14 | 2006-06-01 | Hitachi Systems & Services Ltd | 階層構造情報生成装置 |
WO2006051712A1 (ja) * | 2004-11-12 | 2006-05-18 | Justsystems Corporation | 文書処理装置及び文書処理方法 |
JPWO2006051718A1 (ja) * | 2004-11-12 | 2008-05-29 | 株式会社ジャストシステム | 文書処理装置及び文書処理方法 |
US7562342B2 (en) * | 2004-12-02 | 2009-07-14 | International Business Machines Corporation | Method and apparatus for incrementally processing program annotations |
WO2006081428A2 (en) * | 2005-01-27 | 2006-08-03 | Symyx Technologies, Inc. | Parser for generating structure data |
US8996991B2 (en) | 2005-02-11 | 2015-03-31 | Fujitsu Limited | System and method for displaying an acceptance status |
US7500184B2 (en) * | 2005-02-11 | 2009-03-03 | Fujitsu Limited | Determining an acceptance status during document parsing |
US7996443B2 (en) * | 2005-02-28 | 2011-08-09 | Microsoft Corporation | Schema grammar and compilation |
US7756839B2 (en) | 2005-03-31 | 2010-07-13 | Microsoft Corporation | Version tolerant serialization |
US8458201B2 (en) * | 2005-04-08 | 2013-06-04 | International Business Machines Corporation | Method and apparatus for mapping structured query language schema to application specific business objects in an integrated application environment |
US8145653B2 (en) | 2005-04-08 | 2012-03-27 | International Business Machines Corporation | Using schemas to generate application specific business objects for use in an integration broker |
US20060230048A1 (en) * | 2005-04-08 | 2006-10-12 | International Business Machines Corporation | Method and apparatus for object discovery agent based mapping of application specific markup language schemas to application specific business objects in an integrated application environment |
WO2006110987A1 (en) * | 2005-04-18 | 2006-10-26 | Research In Motion Limited | System and method for efficient hosting of wireless applications by encoding application component definitions |
US7634515B2 (en) * | 2005-05-13 | 2009-12-15 | Microsoft Corporation | Data model and schema evolution |
US7680800B2 (en) * | 2005-05-20 | 2010-03-16 | International Business Machines Corporation | Algorithm to marshal/unmarshal XML schema annotations to SDO dataobjects |
US7562293B2 (en) * | 2005-05-27 | 2009-07-14 | International Business Machines Corporation | Method and apparatus for processing a parseable document |
US20070113221A1 (en) * | 2005-08-30 | 2007-05-17 | Erxiang Liu | XML compiler that generates an application specific XML parser at runtime and consumes multiple schemas |
US7774321B2 (en) * | 2005-11-07 | 2010-08-10 | Microsoft Corporation | Partial XML validation |
JP4236055B2 (ja) * | 2005-12-27 | 2009-03-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 構造化文書処理装置、方法、プログラム |
US7921358B2 (en) | 2006-01-17 | 2011-04-05 | Microsoft Corporation | Automatic package conformance validation |
US9495356B2 (en) * | 2006-03-30 | 2016-11-15 | International Business Machines Corporation | Automated interactive visual mapping utility and method for validation and storage of XML data |
US7992081B2 (en) * | 2006-04-19 | 2011-08-02 | Oracle International Corporation | Streaming validation of XML documents |
US7991799B2 (en) * | 2006-06-05 | 2011-08-02 | International Business Machines Corporation | Schema specific parser generation |
US7882429B2 (en) * | 2006-06-05 | 2011-02-01 | International Business Machines Corporation | High-level virtual machine for fast XML parsing and validation |
US8489574B2 (en) * | 2006-06-12 | 2013-07-16 | Zalag Corporation | Methods and apparatuses for searching content |
US8140511B2 (en) * | 2006-06-12 | 2012-03-20 | Zalag Corporation | Methods and apparatuses for searching content |
US9047379B2 (en) | 2006-06-12 | 2015-06-02 | Zalag Corporation | Methods and apparatuses for searching content |
US7788654B2 (en) * | 2006-08-21 | 2010-08-31 | International Business Machines Corporation | Method for construction of a linear-sized validation-plan of W3C XML schema grammars |
US7904963B2 (en) * | 2006-09-26 | 2011-03-08 | Microsoft Corporation | Generating code to validate input data |
KR100836736B1 (ko) * | 2006-09-27 | 2008-06-10 | 한국전자통신연구원 | 마크업 언어를 이용한 파서 장치 및 파싱 방법 |
US20080092037A1 (en) * | 2006-10-16 | 2008-04-17 | Oracle International Corporation | Validation of XML content in a streaming fashion |
US8954396B2 (en) | 2006-11-10 | 2015-02-10 | Microsoft Corporation | Validating and enabling validation of package structures |
US7801926B2 (en) | 2006-11-22 | 2010-09-21 | Microsoft Corporation | Programmable logic and constraints for a dynamically typed storage system |
KR100930108B1 (ko) * | 2006-12-05 | 2009-12-07 | 한국전자통신연구원 | XQuery 질의를 위한 스키마 기반 정적 검사 시스템및 방법 |
US20080154936A1 (en) * | 2006-12-22 | 2008-06-26 | International Business Machines Corporation | Event generation for xml schema components during xml processing in a streaming event model |
JP4429329B2 (ja) * | 2007-02-16 | 2010-03-10 | キヤノン株式会社 | 符号化装置及びその制御方法、復号装置及びその制御方法、プログラム、記憶媒体 |
US20090019313A1 (en) * | 2007-07-10 | 2009-01-15 | Ramesh Pokala | System and method for performing client-side input validation |
US20090083294A1 (en) * | 2007-09-25 | 2009-03-26 | Shudi Gao | Efficient xml schema validation mechanism for similar xml documents |
US8626720B2 (en) | 2008-02-11 | 2014-01-07 | International Business Machines Corporation | System and method of reconstructing complex custom objects |
US8875013B2 (en) * | 2008-03-25 | 2014-10-28 | International Business Machines Corporation | Multi-pass validation of extensible markup language (XML) documents |
US8522136B1 (en) * | 2008-03-31 | 2013-08-27 | Sonoa Networks India (PVT) Ltd. | Extensible markup language (XML) document validation |
US20100023924A1 (en) * | 2008-07-23 | 2010-01-28 | Microsoft Corporation | Non-constant data encoding for table-driven systems |
US20100251099A1 (en) * | 2009-03-26 | 2010-09-30 | David Makower | Schema Validation for Submissions of Digital Assets for Network-Based Distribution |
US8255372B2 (en) * | 2010-01-18 | 2012-08-28 | Oracle International Corporation | Efficient validation of binary XML data |
US8209361B2 (en) * | 2010-01-19 | 2012-06-26 | Oracle International Corporation | Techniques for efficient and scalable processing of complex sets of XML schemas |
US10048992B2 (en) | 2011-04-13 | 2018-08-14 | Microsoft Technology Licensing, Llc | Extension of schematized XML protocols |
US9092466B1 (en) * | 2011-06-30 | 2015-07-28 | Emc Corporation | Trait definitions |
JP5670859B2 (ja) * | 2011-10-21 | 2015-02-18 | 株式会社東芝 | 記述方法、exiデコーダおよびプログラム |
US20130254553A1 (en) * | 2012-03-24 | 2013-09-26 | Paul L. Greene | Digital data authentication and security system |
US9483240B1 (en) | 2015-05-27 | 2016-11-01 | Google Inc. | Data binding dependency analysis |
US10031766B2 (en) | 2016-03-08 | 2018-07-24 | Mastercard International Incorporated | Systems and methods for processing extensible markup language data during runtime |
US10102111B2 (en) * | 2016-08-05 | 2018-10-16 | International Business Machines Corporation | Prioritizing resiliency tests of microservices |
US10169220B2 (en) | 2016-08-05 | 2019-01-01 | International Business Machines Corporation | Prioritizing resiliency tests of microservices |
CN108319684A (zh) * | 2018-01-31 | 2018-07-24 | 国信优易数据有限公司 | 一种可扩展标记语言xml文件的存储方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020078406A1 (en) | 2000-10-24 | 2002-06-20 | Goh Kondoh | Structure recovery system, parsing system, conversion system, computer system, parsing method, storage medium, and program transmission apparatus |
WO2002050691A1 (en) * | 2000-12-19 | 2002-06-27 | Mediagate, Inc. | Software architecture for interaction with dynamic data sources and role based access control |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4864502A (en) | 1987-10-07 | 1989-09-05 | Houghton Mifflin Company | Sentence analyzer |
CA2048039A1 (en) * | 1991-07-19 | 1993-01-20 | Steven Derose | Data processing system and method for generating a representation for and random access rendering of electronic documents |
US6480865B1 (en) | 1998-10-05 | 2002-11-12 | International Business Machines Corporation | Facility for adding dynamism to an extensible markup language |
CA2255017A1 (en) | 1998-11-30 | 2000-05-30 | Christina P. Lau | Method and mechanism for a task oriented xml data model |
US6353896B1 (en) * | 1998-12-15 | 2002-03-05 | Lucent Technologies Inc. | Method and apparatus for testing event driven software |
US6418446B1 (en) | 1999-03-01 | 2002-07-09 | International Business Machines Corporation | Method for grouping of dynamic schema data using XML |
US6519617B1 (en) | 1999-04-08 | 2003-02-11 | International Business Machines Corporation | Automated creation of an XML dialect and dynamic generation of a corresponding DTD |
JP2001067348A (ja) | 1999-06-21 | 2001-03-16 | Fujitsu Ltd | 構造化文書の圧縮方法および圧縮装置並びに構造化文書圧縮プログラムを記録したコンピュータ読取可能な記録媒体 |
EP1210655A4 (en) | 1999-08-23 | 2006-06-14 | Devine Technology Ventures | METHOD FOR OBTAINING OVERVIEWS, FORMATTING AND AUTOMATIC MONITORING OF STRUCTURED ONLINE DOCUMENTS BASED ON VISIBLE PROGRAMMING OF DOCUMENTATION NAVIGATION AND TRANSFORMATION |
US6598015B1 (en) | 1999-09-10 | 2003-07-22 | Rws Group, Llc | Context based computer-assisted language translation |
US6966027B1 (en) | 1999-10-04 | 2005-11-15 | Koninklijke Philips Electronics N.V. | Method and apparatus for streaming XML content |
US20010054172A1 (en) * | 1999-12-03 | 2001-12-20 | Tuatini Jeffrey Taihana | Serialization technique |
US6549221B1 (en) | 1999-12-09 | 2003-04-15 | International Business Machines Corp. | User interface management through branch isolation |
US20020073091A1 (en) | 2000-01-07 | 2002-06-13 | Sandeep Jain | XML to object translation |
US6643652B2 (en) | 2000-01-14 | 2003-11-04 | Saba Software, Inc. | Method and apparatus for managing data exchange among systems in a network |
US6591260B1 (en) | 2000-01-28 | 2003-07-08 | Commerce One Operations, Inc. | Method of retrieving schemas for interpreting documents in an electronic commerce system |
US6675355B1 (en) * | 2000-03-16 | 2004-01-06 | Autodesk, Inc. | Redline extensible markup language (XML) schema |
US6604099B1 (en) | 2000-03-20 | 2003-08-05 | International Business Machines Corporation | Majority schema in semi-structured data |
DE10110039A1 (de) | 2000-04-12 | 2001-10-18 | Ibm | Ein Verfahren zur generischen Beschreibung und Manipulation beliebiger Datenstrukturen |
US6601075B1 (en) | 2000-07-27 | 2003-07-29 | International Business Machines Corporation | System and method of ranking and retrieving documents based on authority scores of schemas and documents |
US20020019837A1 (en) | 2000-08-11 | 2002-02-14 | Balnaves James A. | Method for annotating statistics onto hypertext documents |
RU2285354C2 (ru) | 2000-10-17 | 2006-10-10 | Конинклейке Филипс Электроникс Н.В. | Бинарный формат для экземпляров mpeg-7 |
AU2002243335A1 (en) | 2000-10-20 | 2002-06-18 | Polexis, Inc. | Extensible information system (xis) |
US6912538B2 (en) | 2000-10-20 | 2005-06-28 | Kevin Stapel | System and method for dynamic generation of structured documents |
JP3809062B2 (ja) * | 2000-11-21 | 2006-08-16 | 富士通株式会社 | マルチレベル不完全ブロック分解による前処理を行う処理装置 |
US20020099738A1 (en) * | 2000-11-22 | 2002-07-25 | Grant Hugh Alexander | Automated web access for back-end enterprise systems |
US20020129059A1 (en) | 2000-12-29 | 2002-09-12 | Eck Jeffery R. | XML auto map generator |
WO2002080457A1 (en) | 2001-03-29 | 2002-10-10 | Sphere Software Corporation | Layering enterprise application services using semantic firewalls |
US7500017B2 (en) * | 2001-04-19 | 2009-03-03 | Microsoft Corporation | Method and system for providing an XML binary format |
US20020169565A1 (en) | 2001-04-25 | 2002-11-14 | Westbrook John D. | System and method for data deposition and annotation |
JP3832807B2 (ja) | 2001-06-28 | 2006-10-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データ処理方法及びその手法を用いたエンコーダ、デコーダ並びにxmlパーサ |
US6918107B2 (en) * | 2001-07-02 | 2005-07-12 | Bea Systems, Inc. | Programming language extensions for processing data representation language objects and related applications |
US20050086584A1 (en) * | 2001-07-09 | 2005-04-21 | Microsoft Corporation | XSL transform |
JP2003084987A (ja) | 2001-09-11 | 2003-03-20 | Internatl Business Mach Corp <Ibm> | Xml文書の妥当性を検証するためのオートマトンの生成方法、xml文書の妥当性検証方法、xml文書の妥当性を検証するためのオートマトンの生成システム、xml文書の妥当性検証システムおよびプログラム |
US20030093471A1 (en) | 2001-10-18 | 2003-05-15 | Mitch Upton | System and method using asynchronous messaging for application integration |
JP2003150422A (ja) | 2001-11-12 | 2003-05-23 | Nippon Telegr & Teleph Corp <Ntt> | コンテキストデータ生成・利用方法及びプログラム |
US6944864B2 (en) | 2001-12-06 | 2005-09-13 | Ncr Corporation | Dynamic architecture integration technique |
US20030110279A1 (en) | 2001-12-06 | 2003-06-12 | International Business Machines Corporation | Apparatus and method of generating an XML schema to validate an XML document used to describe network protocol packet exchanges |
US20030115548A1 (en) | 2001-12-14 | 2003-06-19 | International Business Machines Corporation | Generating class library to represent messages described in a structured language schema |
US7962925B2 (en) | 2002-02-22 | 2011-06-14 | Oracle International Corporation | System and method for XML data binding |
CA2483423A1 (en) * | 2002-04-24 | 2003-11-06 | Sarvega, Inc. | System and method for processing of xml documents represented as an event stream |
US7493603B2 (en) | 2002-10-15 | 2009-02-17 | International Business Machines Corporation | Annotated automaton encoding of XML schema for high performance schema validation |
US7596748B2 (en) | 2003-09-12 | 2009-09-29 | International Business Machines Corporation | Method for validating a document conforming to a first schema with respect to a second schema |
US7165216B2 (en) | 2004-01-14 | 2007-01-16 | Xerox Corporation | Systems and methods for converting legacy and proprietary documents into extended mark-up language format |
US7437374B2 (en) * | 2004-02-10 | 2008-10-14 | International Business Machines Corporation | Efficient XML schema validation of XML fragments using annotated automaton encoding |
-
2003
- 2003-04-16 US US10/418,658 patent/US7493603B2/en active Active
- 2003-10-09 TW TW092128090A patent/TWI239458B/zh not_active IP Right Cessation
- 2003-10-11 JP JP2005501312A patent/JP4487290B2/ja not_active Expired - Fee Related
- 2003-10-11 AU AU2003274322A patent/AU2003274322A1/en not_active Abandoned
- 2003-10-11 CA CA2500422A patent/CA2500422C/en not_active Expired - Lifetime
- 2003-10-11 KR KR1020057004546A patent/KR100800343B1/ko not_active IP Right Cessation
- 2003-10-11 EP EP03758311.9A patent/EP1573519B1/en not_active Expired - Lifetime
- 2003-10-11 WO PCT/GB2003/004434 patent/WO2004036417A2/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020078406A1 (en) | 2000-10-24 | 2002-06-20 | Goh Kondoh | Structure recovery system, parsing system, conversion system, computer system, parsing method, storage medium, and program transmission apparatus |
WO2002050691A1 (en) * | 2000-12-19 | 2002-06-27 | Mediagate, Inc. | Software architecture for interaction with dynamic data sources and role based access control |
Also Published As
Publication number | Publication date |
---|---|
CA2500422A1 (en) | 2004-04-29 |
CA2500422C (en) | 2011-03-29 |
AU2003274322A1 (en) | 2004-05-04 |
EP1573519A2 (en) | 2005-09-14 |
TW200421121A (en) | 2004-10-16 |
WO2004036417A2 (en) | 2004-04-29 |
US20040073870A1 (en) | 2004-04-15 |
EP1573519B1 (en) | 2015-04-08 |
WO2004036417A3 (en) | 2006-05-04 |
KR20050053671A (ko) | 2005-06-08 |
JP4487290B2 (ja) | 2010-06-23 |
TWI239458B (en) | 2005-09-11 |
JP2006515092A (ja) | 2006-05-18 |
AU2003274322A8 (en) | 2004-05-04 |
US7493603B2 (en) | 2009-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100800343B1 (ko) | 고성능 스키마 검증을 위한 xml 스키마의 주해된 자동인코딩 | |
US20050177543A1 (en) | Efficient XML schema validation of XML fragments using annotated automaton encoding | |
US7383255B2 (en) | Common query runtime system and application programming interface | |
KR101129083B1 (ko) | 표현 그룹화 및 평가 | |
US7627589B2 (en) | High performance XML storage retrieval system and method | |
EP2771756B1 (en) | Pre-parsed headers for compilation | |
KR101110988B1 (ko) | 구조적 데이터 변환을 위한 장치 | |
US8201083B2 (en) | Simple one-pass W3C XML schema simple type parsing, validation, and deserialization system | |
US20070050707A1 (en) | Enablement of multiple schema management and versioning for application-specific xml parsers | |
US20060212859A1 (en) | System and method for generating XML-based language parser and writer | |
KR20050000348A (ko) | 중간 언어 표현 방법 및 시스템 | |
CN111913739B (zh) | 一种服务接口原语定义方法和系统 | |
KR20060131753A (ko) | 고성능의 구조적 데이터 변환을 위한 하드웨어/소프트웨어파티션 | |
Brabrand et al. | Dual syntax for XML languages | |
Pacheco et al. | BiFluX: A bidirectional functional update language for XML | |
US20070050705A1 (en) | Method of xml element level comparison and assertion utilizing an application-specific parser | |
Lempsink et al. | Type-safe diff for families of datatypes | |
Zemke | XMLQuery | |
Schwerdfeger et al. | Verifiable parse table composition for deterministic parsing | |
US20080313620A1 (en) | System and method for saving and restoring a self-describing data structure in various formats | |
CN100414502C (zh) | 置标语言模式确认的方法及系统 | |
Gajda et al. | Fast XML/HTML for Haskell: XML TypeLift | |
Kempa et al. | V-DOM and P-XML—towards a valid programming of XML-based applications | |
Kim et al. | Validation of XML document updates based on XML schema in XML databases | |
Rose et al. | Phantom XML |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
G170 | Publication of correction | ||
FPAY | Annual fee payment |
Payment date: 20101210 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |