명세서와 특허청구범위에 걸쳐, 문맥에 의해 다른 뜻을 나타내는 것이 명백한 경우를 제외하고, 이하의 용어들은 다음과 같은 의미를 갖는다.
"마크업 언어" 또는 "ML"은 문서의 일부가 애플리케이션에 의해 어떻게 해석되는지를 상술하는 문서의 특별 코드에 대한 언어를 나타낸다. 워드 프로세서 파일에서, 마크업 요소는 요소의 내용이 어떻게 표시되거나 진열되는지를 상술하는 특정 포맷과 연관될 수 있다. 다른 문서에서는, 마크업은 표현을 고려함이 없이 데이터를 설명하는 것에 관한 것일 수 있다.
"원시 마크업 언어" 또는 "원시 XML"은 워드 프로세서 애플리케이션과 연관된 마크업 언어 요소와 워드 프로세서 애플리케이션과 연관된 스키마를 나타낸다.
"비원시 마크업 언어" 또는 "비원시 XML"은 사용자 또는 다른 애플리케이션이 생성하고, 원시 XML 스키마와 다른 스키마를 따르는 마크업 언어 요소를 나타낸다.
"요소"는 XML 문서의 기본 단위를 나타낸다. 요소는 XML 문서에 대한 속성, 다른 요소, 내용 및 다른 설계 블록을 포함할 수 있다.
"태그"는 XML 문서 내의 요소를 묘사하는 문서에 삽입된 명령을 나타낸다. 각각의 요소는 단지 두 개의 태그(개시 태그와 종료 태그)만을 가질 수 있다. 하나의 태그가 인정되는 경우에는 빈 요소(내용이 없는)를 가질 수 있다.
태그 사이의 내용은 요소의 "자식"(또는 후손)으로서 고려된다. 따라서, 요소의 내용에 내장된 다른 요소는 "자식 요소" 또는 "자식 노드" 또는 요소로 불린다. 요소의 내용에 직접 내장된 텍스트는 요소의 "자식 텍스트 노드"로 고려된다. 동시에, 요소 내의 자식 요소와 텍스트는 그 요소의 "내용"을 구성한다.
"속성"은 특정 값으로 설정되고 요소와 연관된 추가적인 특성을 나타낸다. 요소는 하나도 없는 것을 포함하여 요소와 연관된 속성 세팅의 임의의 수를 가질 수도 있다. 속성은 추가적인 정보를 요소의 내용에 포함되지 않은 요소와 연관시키는데 사용된다.
예시적인 운영 환경
도 1과 관련하여, 본 발명을 구현하는 예시적인 시스템은 컴퓨팅 장치(100)와 같은 컴퓨팅 장치를 포함한다. 아주 기본적인 구성에서, 컴퓨팅 장치(100)는 전형적으로 적어도 하나의 프로세싱 유닛(102)과 시스템 메모리(104)를 포함한다. 컴퓨팅 장치의 정확한 구성과 유형에 따라, 시스템 메모리(104)는 (RAM과 같은) 휘발성, (ROM, 플래시 메모리 등과 같은) 비휘발성 또는 이 둘의 결합일 수 있다. 시스템 메모리(104)는 전형적으로 운영 시스템(105), 하나 이상의 애플리케이션(106)을 포함하고, 프로그램 데이터(107)를 포함할 수 있다. 실시예에서, 애플리케이션(106)은 XML 에디터(122)를 더 포함하는 워드 프로세서 애플리케이션(120)을 포함할 수 있다. 이러한 기본 구성은 파선(108) 내의 구성 성분에 의해 도 1에 도시된다.
컴퓨팅 장치(100)는 추가적인 특성이나 기능을 가질 수 있다. 예컨대, 컴퓨팅 장치(100)는 또한 예를 들어 자기 디스크, 광 디스크 또는 테이프와 같은 추가적인 데이터 저장 장치(이동식 및/또는 비이동식)를 포함할 수 있다. 이러한 추가적인 저장 장치는 이동식 저장 장치(109)와 비이동식 저장 장치(110)에 의해 도 1에 도시된다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보 저장을 위한 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함할 수 있다. 시스템 메모리(104), 이동식 저장 장치(109) 및 비이동식 저장 장치(110)는 컴퓨터 저장 매체의 모든 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 자기 저장 장치 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨팅 장치(100)에 의해 액세스될 수 있는 어느 다른 매체에 제한되지는 않지만, 이런 매체들을 포함한다. 이러한 컴퓨터 저장 매체는 장치(100)의 일부일 수 있다. 컴퓨팅 장치(100)는 또한 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등과 같은 입력 장치(112)를 가질 수 있다. 표시 장치, 스피커, 프린터 등과 같은 출력 장치(114)도 또한 포함될 수 있다. 이러한 장치들은 그 기술분야에 잘 알려져 있고 여기서 상세히 설명할 필요가 없다.
컴퓨팅 장치(100)는 또한 네트워크를 통해서와 같이, 장치가 다른 컴퓨팅 장치(118)와 통신하도록 하는 통신 접속부(116)를 포함할 수 있다. 통신 접속부(116)는 통신 매체의 일례이다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 반송파(carrier wave)나 다른 전송 메커니즘과 같은 피변조 데이터 신호의 다른 데이터에 의해 구현될 수 있고, 정보 전송 매체를 포함한다. "피변조 데이터 신호"는 신호의 정보를 인코딩하기 위한 방식으로 설정되거나 변형된 특성 중 하나 이상을 갖는 신호이다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크나 직접 회선 접속과 같은 유선 매체와 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 여기서 사용된 바와 같이, 컴퓨터 판독가능 매체는 저장 매체와 통신 매체를 모두 포함한다.
워드 프로세서 파일 구조
도 2는 본 발명을 실시하기 위한 예시적인 환경을 도시하는 블록도이다. 도 2에 도시된 예시적인 환경은 워드 프로세서(120), 혼합 XML 파일(210), 비원시 XML 스키마(215), 병렬 XML 트리(220) 및 XML 검증 엔진(225)을 포함하는 워드 프로세서 환경(200)이다. 혼합 XML 파일(210)은 원시 XML(211)과 비원시 XML(212)을 모두 포함한다.
실시예에서, 워드 프로세서(120)는 워드 프로세서(120)와 연관된 문서에 사용하기 위해 정의된 스키마의 세트와 그 자신의 네임스페이스를 갖는다. 워드 프로세서(120)에 대한 스키마에 의해 정의된 태그와 속성의 세트는 그 자신의 마크업 언어인 원시 XML로 간주될 정도로 문서의 포맷을 정의할 수 있다. 원시 XML은 워드 프로세서(120)에 의해 지원되고, 그 자신의 규칙을 더 생성하는 동안 다른 마크업 언어의 규칙에 따를 수 있다. 원시 XML은 사용자가 표시 정보에 대응하는 스키마를 생성하는데 시간을 소비할 필요없이 요청할 수 있는 풍부한 표시 정보를 포함하는 마크업 언어를 제공한다.
원시 XML(211)과 비원시 XML(212)은 혼합 XML 파일(210)에서 서로 혼합된다. 본 발명에 따라, 비원시 XML(212) 요소는 원시 XML(211) 요소에 중첩될 수 있고, 원시 XML(211) 요소는 비원시 XML(212) 요소에 중첩될 수 있다. 따라서, 워드 프로세서(120)가 혼합 XML 파일(210)의 원시 XML(211)을 내부적으로 검증할 때, 내부 검증 프로세스는 비원시 XML(212) 요소와 직면하게 된다. 예시적인 혼합 XML 파일(210)은 이하 도 2의 설명에서 더 설명된다.
비원시 XML 스키마(215)는 비원시 XML(212) 요소와 연관된다. 비원시 XML(212) 요소가 검증될 때, 비원시 XML 요소가 비원시 XML 스키마(215)를 따르는 지에 관하여 검사된다. 전술한 바와 같이, 스키마는 어떤 태그와 속성이 XML 문서의 내용을 설명하는데 사용되는지, 각각의 태그가 어디에서 인정되는지, 어떤 태그가 다른 태그에 나타날 수 있는지를 말해 주고, 문서화가 동일한 방식으로 구조화됨을 보장한다. 따라서, 비원시 XML(212)은 비원시 XML 스키마(215)에서 설명되듯이 구조화될 때 유효하다. 비원시 XML(212)의 검증은 이하 도 5의 설명에서 더 설명된다.
검증 전에, 비원시 XML(212) 요소는 병렬 XML 트리(220)에 저장된다. 병렬 XML 트리(220)는 이하 도 4의 설명에서 더 설명된다. 병렬 XML 트리(220)는 비원시 XML(212)을 검증하기 위해 XML 검증 엔진(225)에 보내진다. XML 검증 엔진(225)은 XML 문서에 대해 이용가능한 다른 검증 엔진과 유사하게 동작한다. XML 검증 엔진(225)은 비원시 XML 스키마(215)의 구조로 된 XML인가를 평가한다. 실시예에서, 더 많은 수의 검증 엔진이 더 많은 수의 마크업 언어 구조를 검증하기 위해 워드 프로세서(120)와 연관될 수 있다.
도 3은 본 발명에 따른 예시적인 혼합 XML 파일을 도시한다. 혼합 XML 파일(210)은 원시 XML 요소와 비원시 XML 요소를 모두 포함한다. 마크업 언어의 요소는 보통 개시 태그("<"와 ">"로 나타냄), 소정의 내용, 종료 태그("</"와 ">"로 나타냄)를 포함한다. 원시 XML과 연관된 태그는 워드 프로세서의 네임스페이스(워드 프로세서 네임스페이스)와 연관된 것으로 간주된다. 대조적으로, 비원시 XML과 연관된 태그는 다른 네임스페이스, 이 예에서는 "재개(resume)" 네임스페이스와 연관된 것으로 간주된다. 혼합 XML 파일(210)의 요소는 내용을 더 포함한다. 예컨 대, "워크(work)"는 "객체(objective)" 요소에 포함되고, "123 메인(123 main)"은 "스트리트(street)" 요소에 포함된다. "스트리트" 요소는 "어드레스(address)" 요소에 포함된다. 이러한 요소는 사용자나 다른 애플리케이션에 의해 이전에 제공되었던 재개(resume) 네임스페이스(예컨대, 재개(resume) 스키마)에 대응하는 비원시 XML 스키마에 따라 정의된다.
혼합 XML 파일(210)을 검사할 때, 파일은 원시 XML 요소에 중첩된 비원시 XML 요소와, 비원시 XML 요소에 중첩된 원시 XML 요소를 포함한다. 따라서, 혼합 XML 파일(210)이 워드 프로세서에 의해 내부적으로 검증되거나, 트리로서 검증 엔진으로 전송될 때, 혼합 XML 파일(210)을 검증하는 애플리케이션은 두개의 다른 스키마에 대응하는 중첩된 요소와 직면하게 된다. 검증 애플리케이션에 연관된 규칙에 따라, 비원시 XML 스키마가 원시 XML을 참작하지 않는다면, 혼합 XML 파일(210)은 유효하지 않은 것으로 밝혀질 것이다. 예컨대, 혼합 XML 파일(210)이 전체적으로 다른 XML 검증 엔진에 전송되었다면, 파일은 마찬가지로 유효하지 않은 것으로 밝혀질 가능성이 높다. XML 스키마는 전형적으로 제1 네임스페이스의 요소가 제2 네임스페이스의 요소에 중첩되지 않도록 한다. 실시예에서, 본 발명은 다른 비원시 XML 스키마와 연관된 임의의 요소가 중첩되도록 하는 워드 프로세서와 연관된 원시 XML 스키마를 구비함으로써, 이러한 제한을 극복한다. 유효한 혼합 XML 파일을 획득하기 위한 예시적인 프로세스가 도 5와 도 6의 설명에서 더 설명된다.
도 4는 본 발명에 따른 예시적인 혼합 XML 파일과 예시적인 병렬 XML 트리 사이의 연관의 예시적인 블록도를 나타낸다.
워드 프로세서(120)(도 1 및 도 2에 도시됨)가 혼합 XML 파일(210)을 내부적으로 검증하는 동안 문서를 생성할 때에 병렬 XML 트리(220)가 생성된다. 내부 검증은 워드 프로세서(120)가 그 자신의 일련의 규칙에 따라 각각의 요소를 평가하도록 한다. 비원시 XML 요소가 원시 XML 요소에 중첩될 때, 노드(예컨대, 402)는 그 요소에 대응하는 병렬 XML 트리(220) 내에 생성된다. 병렬 XML 트리(220)의 노드의 위치는 다른 요소에 비례하여 혼합 XML 문서(210)의 대응하는 요소의 위치에 의해 결정된다. 따라서, 혼합 XML 파일(210)의 각각의 비원시 XML 요소는 병렬 XML 트리(220)의 노드(예컨대, 402)에 의해 표현된다. 직접적인 부모-자식 관계가 병렬 XML 트리(220)에 표현된 XML 요소 사이에 설정되고, 이중 일부는 개재하는 원시 XML 마크업으로 인하여 혼합 XML 파일(210)에 처음부터 존재하지 않았을 수도 있다. 예시적인 비원시 XML 트리(220)에 대한 노드를 생성하는 것과 연관된 예시적인 프로세스가 도 6과 관련하여 더 설명된다. 병렬 XML 트리(220)는 혼합 XML 파일(210)을 내부적으로 검증할 때 워드 프로세스(120)가 비원시 XML 요소를 본질적으로 무시하게 한다. 그후, 병렬 XML 트리(220)는 이하 도 5와 관련하여 더 설명하는 바와 같이, 혼합 XML 파일(210)로부터 분리되어 검증될 수 있다.
혼합 XML 파일 요소의 처리
도 5는 본 발명에 따른 혼합 XML 문서를 생성하기 위한 예시적인 프로세스의 논리적인 흐름도이다. 프로세스(500)는 혼합 XML 파일이 도 1에 도시된 워드 프로세서(120)와 유사한 워드 프로세서 애플리케이션의 사용자에 의해 이전에 생성되었던 블록(501)에서 시작한다. 프로세스는 블록(502)에서 계속된다.
블록(502)에서, 혼합 XML 파일의 요소가 처리된다. 각각의 요소를 처리할 때에, 요소가 원시 XML 요소인지, 비원시 XML 요소인지가 결정된다. 각각의 요소가 어떻게 처리되는지는 요소의 유형에 달려 있다. 요소가 비원시 XML 요소일 때, 그 요소에 대응하는 노드가 도 6과 관련하여 더 설명하는 바와 같이, 병렬 XML 트리에 삽입된다. 각각의 요소를 처리하기 위한 예시적인 프로세스가 도 6과 관련하여 더 설명된다. 일단 요소가 처리되면, 프로세스는 결정 블록(503)으로 이동한다.
결정 블록(503)에서, 혼합 XML 파일에 포함된 요소 각각이 처리되었는지가 결정된다. 혼합 XML 파일로부터 문서를 생성하는 경우 워드 프로세서가 혼합 XML 파일의 최종 종료 태그에 도달했다면 각각의 요소가 처리된 것이다. 추가 요소(further element)가 아직 처리되지 않았다면, 프로세스는 블록(502)으로 되돌아가, 추가 요소를 처리하기 시작한다. 모든 요소가 처리되었다면, 프로세스는 블록(504)에서 계속된다.
블록(504)에서, 병렬 XML 트리가 검증된다. 병렬 XML 트리는 워드 프로세서에 의해 도 2에 도시된 XML 검증 엔진(225)과 유사한 XML 검증 엔진으로 전송된다. XML 검증 엔진은 도 2에 도시된 비원시 XML 스키마(215)와 유사한 연관 스키마에 따라 병렬 XML 트리를 검사하도록 동작한다. 연관 스키마는 어떤 태그와 속성이 최종적인 XML 문서의 내용을 설명하는데 사용되는지, 각각의 태그가 어디에서 인정되는지, 어떤 요소가 다른 요소에 나타날 수 있는지를 말해 준다. 병렬 XML 트리는 연관 스키마를 따를 때 유효하다. 일단 병렬 XML 트리가 검증되면, 프로세스는 블록(505)에서 계속된다.
블록(505)에서, 혼합 XML 파일에 대응하는 문서가 워드 프로세서에 의해 생성된다. 실시예에서, 문서가 워드 프로세서에 의해 제공된 원시 XML 스키마에 따라 포맷되고, 혼합 XML 파일의 비원시 XML 요소와 연관된 태그를 표시한다. 프로세스는 블록(506)으로 진행하여, 프로세스가 끝난다.
실시예에서, 프로세스(500)는 내부적으로 원시 XML을 검증하거나 비원시 XML을 검증한 결과에 의해 변경될 수 있다. 예컨대, 원시 XML와 비원시 XML 중 어느 하나가 유효하지 않는지가 결정될 수 있다. 결과적으로, 프로세스(500)가 중단되거나, 에러 메시지가 보고되거나, 프로그램이 XML을 수정하는 것을 돕기 시작하거나, 또는 후속 동작이 활성화된다.
도 6은 본 발명에 따른 혼합 XML 문서의 요소를 처리하는 예시적인 프로세스의 논리적인 흐름도이다. 도 5에 도시된 프로세스(500)가 블록(502)에 들어설 때, 프로세스(600)는 블록(601)에 들어선다. 프로세스는 블록(602)에서 계속된다.
블록(602)에서, 처리되는 요소가 원시 XML 요소에 대응하는지, 비원시 XML 요소에 대응하는지가 결정된다. 요소의 유형은 각각의 요소의 개시 태그를 검사함으로써 결정될 수 있다. 각각의 요소의 개시 태그는 그 요소에 대응하는 스키마로의 참조(reference)를 포함한다(도 3 참조). 각각의 스키마는 원시 XML와 비원시 XML 중 어느 하나와 연관된다. 일단 요소의 유형이 결정되면, 프로세스는 결정 블록(603)으로 이동한다.
결정 블록(603)에서, 요소가 비원시 XML 요소인지가 결정된다. 전술한 바와 같이, 각각의 요소가 요소의 유형에 따라 다르게 처리된다. 요소가 비원시 XML 요소가 아니라면, 프로세스는 블록(604)에서 계속된다.
블록(604)에서, 요소가 워드 프로세서의 원시 포맷(예컨대, 원시 XML)에 따라 처리된다. 실시예에서, 워드 프로세서는 자신의 포맷의 요소에 자신의 내부 검증을 제공한다. 다시 말해서, 워드 프로세서는 원시 포맷(예컨대, 원시 XML)에 대응하는 요소를 검증하기 위해 XML 검증 엔진을 참조할 필요는 없다. 원시 포맷의 요소가 유효한지 않은지를 인식함으로써, 워드 프로세서는 프로세스가 계속함에 따라 이러한 요소에 대응하는 문서를 생성할 수 있다. 일단 원시 XML 요소는 원시 XML에 따라 처리되고, 프로세스는 블록(607)으로 진행하고, 프로세스는 도 5의 블록(503)으로 되돌아간다.
그러나, 요소가 비원시 XML 요소라면, 프로세스는 블록(605)에서 계속된다.
블록(605)에서, 비원시 XML 요소의 속성이나 개시 태그에 대응하는 노드가 병렬 XML 트리에 생성된다. 병렬 XML 트리는 XML 검증 엔진에 의해 유효성이 검사된다. XML 검증 엔진은 병렬 XML 트리가 연관된 비원시 XML 스키마를 따르는가를 결정한다. 병렬 XML 트리를 생성하고 분리하여 검증함으로써, 본 발명은 각각의 스키마의 요소가 서로에 임의로 중첩될 수 있는 둘 이상의 스키마와 연관된 요소를 갖는 혼합 XML 문서를 검증하기 위한 기능을 포함한다. 일단 병렬 트리에서 노드가 생성되면, 프로세스는 블록(606)에서 계속된다.
블록(606)에서, 비원시 XML 요소는 병렬 트리에서 생성된 노드로 맵핑된다. 실시예에서, 플레이스홀더(placeholder)는 혼합 XML 파일의 각각의 요소와 연관된 다. 플레이스홀더는 혼합 XML 파일의 각각의 비원시 XML 요소의 위치를 각각의 노드로 지정한다. 비원시 XML 요소를 대응하는 노드로 맵핑하는 것은 사용자에 의해 생성 및/또는 적용된 요소가 최종 XML 문서에 정확히 위치하는 것을 가능케 한다. 일단 비원시 XML 요소가 노드로 맵핑되면, 프로세스는 블록(506)으로 진행하고, 프로세스는 도 5의 블록(503)으로 되돌아간다.
실시예에서, 다중 비원시 XML 스키마가 동일한 혼합 XML 파일의 각각의 섹션에 포함될 수 있다. 병렬 XML 트리는 각각의 비원시 XML 스키마에 대응하는 각각의 요소에 대응하는 노드로 생성된다. 그러한 경우에, 마치 동일한 혼합 XML 파일의 각각의 섹션이 효과적으로 분리된 XML 파일인 것처럼 병렬 XML 트리가 검증될 때, 각각의 스키마에 대응하는 비원시 XML 요소가 검증된다. 그러나, 다중 비원시 XML 스키마가 서로를 참조한다면, 요소가 서로 혼합된다.
상술한 명세서, 실시예 및 데이터는 본 발명의 결합의 사용 및 제조의 완벽한 설명을 제공한다. 본 발명의 많은 실시예들이 본 발명의 정신 및 범위에서 벗어남이 없이 가능하기 때문에, 본 발명은 이후 첨부된 청구항에 속하게 된다.