KR101311123B1 - Programmability for xml data store for documents - Google Patents

Programmability for xml data store for documents Download PDF

Info

Publication number
KR101311123B1
KR101311123B1 KR1020087005522A KR20087005522A KR101311123B1 KR 101311123 B1 KR101311123 B1 KR 101311123B1 KR 1020087005522 A KR1020087005522 A KR 1020087005522A KR 20087005522 A KR20087005522 A KR 20087005522A KR 101311123 B1 KR101311123 B1 KR 101311123B1
Authority
KR
South Korea
Prior art keywords
data
change
document
xml
node
Prior art date
Application number
KR1020087005522A
Other languages
Korean (ko)
Other versions
KR20080043813A (en
Inventor
트리스탄 에이. 데이비스
알리 탈레가니
브라이언 엠. 존스
마킨 사위키
로버트 에이. 리틀
알누 알리
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/331,586 external-priority patent/US7752224B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080043813A publication Critical patent/KR20080043813A/en
Application granted granted Critical
Publication of KR101311123B1 publication Critical patent/KR101311123B1/en

Links

Images

Abstract

문서 내의 데이터 저장소와 상호작용하는 프로그램가능성 모드는 실시간 상호작용을 가능하게 해준다. 문서 메타데이터 등, 문서와 연관된 정보를 구조화하기 위한 데이터는 데이터 저장소에 유지되며, 여기에서 서로 다른 데이터 간의 관계는 문서의 표면 레벨 보기와 다른 위치에 유지된다. 데이터 저장소는 서로 다른 애플리케이션이 데이터들 중 하나 이상에 액세스하고 그를 처리할 수 있게 해주기 위해 데이터 저장소 내의 다양한 데이터에 대해 인터페이스를 노출시킨다. 이들 데이터는 XML(Extensible Markup Language) 등의 마크업 언어에 따라 구조화될 수 있으며, 데이터 저장소가 주어진 데이터와 연관된 XML 스키마에 기초하여 데이터에 적용된 구조를 검증할 수 있게 해주기 위해 XML 스키마가 각각의 데이터와 연관될 수 있다.Programmable modes of interacting with data repositories within documents allow for real-time interaction. Data for structuring information associated with the document, such as document metadata, is maintained in a data store, where relationships between different data are maintained at a different location than the surface level view of the document. The data store exposes an interface to various data within the data store to allow different applications to access and process one or more of the data. These data can be structured according to markup languages such as Extensible Markup Language (XML), and the XML schema allows each data schema to validate the structure applied to the data based on the XML schema associated with the given data. May be associated with

XML 스키마, 마크업 언어, 데이터 저장소, XSD XML Schema, Markup Language, Data Store, XSD

Description

문서의 XML 데이터 저장소에 대한 프로그램가능성{PROGRAMMABILITY FOR XML DATA STORE FOR DOCUMENTS}PROGRAMMABILITY FOR XML DATA STORE FOR DOCUMENTS}

컴퓨터 사용자는 글을 쓰고, 계산을 하며, 정리를 하고, 프리젠테이션을 준비하며, 전자 메일을 전송 및 수신하고, 작곡을 하며, 기타 등등을 하는 데 도움을 주는 사용하기 편리한 소프트웨어 애플리케이션에 익숙해져왔다. 예를 들어, 워드 프로세싱 애플리케이션은 사용자가 각종의 유용한 문서를 준비할 수 있게 해준다. 스프레드쉬트 애플리케이션은 사용자가 데이터를 입력, 조작 및 구성할 수 있게 해준다. 슬라이드 프리젠테이션 애플리케이션은 사용자가 텍스트, 그림, 데이터 또는 기타 유용한 객체를 포함하는 각종의 슬라이드 프리젠테이션을 생성할 수 있게 해준다.Computer users have become accustomed to easy-to-use software applications that help them write, calculate, organize, prepare presentations, send and receive e-mails, compose, and so on. . For example, word processing applications allow a user to prepare a variety of useful documents. Spreadsheet applications allow users to enter, manipulate, and organize data. Slide presentation applications allow a user to create a variety of slide presentations including text, pictures, data or other useful objects.

그렇지만, 이러한 애플리케이션에 의해 생성된 문서(예를 들어, 워드 프로세싱 문서, 스프레드쉬트, 슬라이드 프리젠테이션 문서)는 문서의 컨텍스트에 의해 요구되는 임의적인 메타데이터의 내용을 저장/전송하는 기능이 제한되어 있다. 예를 들어, 워드 프로세싱 문서 상에 작성된 솔루션은 문서의 여러가지 상태를 기술하는 작업 흐름 데이터, 예를 들어, 이전의 작업 흐름 승인 데이터(일자, 시간, 이름), 현재의 승인 상태, 완료 이전의 장래의 작업 흐름 상태, 문서 저작자의 이름 및 사무실 주소, 문서 변경, 기타 등등의 저장을 필요로 할 수 있다. 이 정보를 저장하는 옵션은 주로 문서 변수 또는 제한을 갖는 기존의 커스텀 OLE(object linking and embedding) 문서 속성의 사용으로 제한된다. 예를 들어, 계층적 데이터가 저장되지 않을 수 있으며, 문자 길이가 제한되고, 기타 등등이 있다. 이러한 메서드에 대한 속성이 단일의 저장소, 예를 들어, OLE 속성 저장소에 저장되며, 이는 속성이 충돌할 가능성이 있음을 의미한다. 게다가, 이러한 저장된 속성들은 데이터 검증을 받지 않는다. 이러한 애플리케이션 및 관련 문서의 사용자가 문서와 함께 임의적인 데이터를 저장하는 것(이는 많은 사용자의 공통된 요구임)이 어렵다.However, documents generated by such applications (eg word processing documents, spreadsheets, slide presentation documents) have limited ability to store / transmit the contents of arbitrary metadata required by the context of the document. . For example, a solution written on a word processing document may contain workflow data describing various states of the document, such as previous workflow approval data (date, time, name), current approval status, future before completion. May need to save the workflow status, document author's name and office address, document changes, and so forth. The option to store this information is limited primarily to the use of existing custom object linking and embedding (OLE) document attributes with document variables or restrictions. For example, hierarchical data may not be stored, character length is limited, and so forth. The properties for these methods are stored in a single store, for example, the OLE property store, which means that there is a potential for conflicting properties. In addition, these stored attributes are not subject to data verification. It is difficult for users of such applications and related documents to store arbitrary data with the documents (which is a common requirement of many users).

이 요약은 이하에서 상세한 설명에 더 기술되는 개념들 중 선택된 것을 단순화된 형태로 소개하기 위해 제공된 것이다. 이 요약은 청구된 발명 대상의 주요 특징 또는 필수적인 특징을 확인하기 위한 것이 아니며, 청구된 발명 대상의 범위를 결정하는 보조 수단으로서 사용되기 위한 것도 아니다.This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

하나 이상의 데이터 저장소는, 컴퓨터-생성 문서와 연관되어 있는 임의적인 데이터를 저장하고 관련지으며 또 그의 사용을 가능하게 해주기 위해, 문서 내의 기본 프리젠테이션 저장과 별도로 유지된다. 문서 메타데이터 등, 문서와 연관된 정보를 구조화하는 데이터가 데이터 저장소에 유지되며, 여기에 서로 다른 데이터들 간의 관계가 유지된다. 이 데이터 저장소는, 서로 다른 애플리케이션이 데이터들 중 하나 이상에 액세스하고 그를 처리할 수 있게 해주기 위해, 애플리케이션 프로그래밍 인터페이스(API)를 데이터 저장소 내의 각종의 데이터에 노출시킨다.One or more data repositories are maintained separately from the basic presentation store within a document to store, associate with, and enable use of any data associated with the computer-generated document. Data structuring information associated with the document, such as document metadata, is maintained in the data store, where relationships between different data are maintained. This data store exposes an application programming interface (API) to various data in the data store to allow different applications to access and process one or more of the data.

이들 데이터는 XML(Extensible Markup Language) 등의 마크업 언어에 따라 구조화될 수 있다. XML 스키마는 각각의 데이터와 연관될 수 있으며, 데이터 저장소는 주어진 데이터와 연관된 XML 스키마에 기초하여 데이터에 적용된 XML 구조를 검증할 수 있다. 문서가 편집되고 있는 동안에 XML 형태로 되어 있는 데이터에의 프로그램적 액세스가 제공된다. 다수의 클라이언트 애플리케이션은 동일한 문서 데이터에 액세스하여 이를 편집할 수 있고, 주어진 데이터에 대한 임의의 상충하는 변경이 해결된다. XSD(Standard XML schema)는 또한, 문서 데이터에 적용된 XML 데이터가 유효하도록 보장하기 위해, 문서 메타데이터와 연관된 커스텀 XML 데이터 중 임의의 것의 내용을 정의하는 데 사용될 수 있다.These data can be structured according to markup languages such as XML (Extensible Markup Language). An XML schema can be associated with each piece of data, and the data store can validate the XML structure applied to the data based on the XML schema associated with the given data. Programmatic access to data in XML form is provided while the document is being edited. Multiple client applications can access and edit the same document data, and any conflicting changes to the given data are resolved. Standard XML schema (XSD) can also be used to define the content of any of the custom XML data associated with document metadata to ensure that the XML data applied to the document data is valid.

도 1은 컴퓨터의 예시적인 컴퓨팅 아키텍처를 나타낸 도면.1 illustrates an exemplary computing architecture of a computer.

도 2는 하나 이상의 클라이언트 애플리케이션과 하나 이상의 데이터 저장소와 데이터 저장소(들)의 내용 간의 관계를 나타낸 블록도.2 is a block diagram illustrating a relationship between one or more client applications and one or more data stores and the contents of the data store (s).

도 3은 XML 데이터 저장소를 갖는 내부 및 외부 데이터 소비자 간의 상호작용을 나타낸 시스템도.3 is a system diagram illustrating interaction between internal and external data consumers having an XML data store.

도 4는 데이터 저장소와 연관되어 있는 이벤트를 핸들링하는 프로세스를 나타낸 도면.4 illustrates a process for handling events associated with a data store.

도 5는 본 발명의 측면들에 따른, 부수 효과를 포함하는 이벤트를 핸들링하는 프로세스를 나타낸 도면.5 illustrates a process for handling an event that includes an incidental effect, in accordance with aspects of the present invention.

이제부터, 유사한 참조 번호가 유사한 구성요소를 나타내고 있는 도면들을 참조하여, 본 발명의 여러가지 측면들에 대해 기술할 것이다. 상세하게는, 도 1 및 대응하는 서술은 본 발명의 실시예들이 구현될 수 있는 적당한 컴퓨팅 환경의 간략하고 전반적인 설명을 제공하기 위한 것이다.In the following, various aspects of the present invention will be described with reference to the drawings, wherein like reference numerals refer to like elements. In particular, FIG. 1 and corresponding description are intended to provide a brief, general description of a suitable computing environment in which embodiments of the invention may be implemented.

일반적으로, 프로그램 모듈은 특정의 태스크를 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 및 기타 유형의 구조를 포함한다. 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능 가전 제품, 미니컴퓨터, 메인프레임 컴퓨터, 기타 등등을 비롯한 기타 컴퓨터 시스템 구성도 사용될 수 있다. 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경도 사용될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 장치 둘다에 위치할 수 있다.Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Other computer system configurations may also be used, including handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. Distributed computing environments may also be used in which tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

도 1을 참조하면, 본 발명을 구현하는 한 예시적인 시스템은 컴퓨팅 장치(100) 등의 컴퓨팅 장치를 포함한다. 아주 기본적인 구성에서, 컴퓨팅 장치(100)는 통상적으로 적어도 하나의 처리 장치(102) 및 시스템 메모리(104)를 포함한다. 컴퓨팅 장치의 정확한 구성 및 유형에 따라, 시스템 메모리(104)는 휘발성(RAM 등), 비휘발성(ROM, 플래쉬 메모리, 기타 등등) 또는 이 둘의 어떤 조합일 수 있다. 시스템 메모리(104)는 통상적으로 운영 체제(105) 및 하나 이상의 애플리케이션(106)을 포함하며, 프로그램 데이터(107)를 포함할 수 있다. 일 실시예에서, 애플리케이션(106)은 워드 프로세서 애플리케이션(120)을 포함할 수 있다. 이 러한 기본적인 구성이 도 1에서 점선(108) 내의 컴포넌트들로 나타내어져 있다.Referring to FIG. 1, one exemplary system implementing the present invention includes a computing device, such as computing device 100. In a very basic configuration, computing device 100 typically includes at least one processing device 102 and system memory 104. Depending on the exact configuration and type of computing device, system memory 104 may be volatile (RAM, etc.), nonvolatile (ROM, flash memory, etc.) or some combination of the two. System memory 104 typically includes an operating system 105 and one or more applications 106, and may include program data 107. In one embodiment, the application 106 may include a word processor application 120. This basic configuration is shown in FIG. 1 by the components in dashed line 108.

컴퓨팅 장치(100)는 부가적인 특징 또는 기능을 가질 수 있다. 예를 들어, 컴퓨팅 장치(100)는, 예를 들어, 자기 디스크, 광 디스크, 또는 테이프 등의 부가적인 데이터 저장 장치(이동식 및/또는 비이동식)를 포함할 수 있다. 이러한 부가적인 저장 장치는 도 1에서 이동식 저장 장치(109) 및 비이동식 저장 장치(110)로 나타내어져 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 기타 데이터 등의 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함할 수 있다. 시스템 메모리(104), 이동식 저장 장치(109) 및 비이동식 저장 장치(110)는 모두 컴퓨터 저장 매체의 예들이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨팅 장치(100)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되지 않는다. 임의의 이러한 컴퓨터 저장 매체가 장치(100)의 일부일 수 있다. 컴퓨팅 장치(100)는 또한 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치, 기타 등등의 입력 장치(들)(112)를 가질 수 있다. 디스플레이, 스피커, 프린터, 기타 등등의 출력 장치(들)(114)도 포함될 수 있다. 이들 장치는 기술 분야에 공지된 것이며 여기에서 상세히 논의될 필요가 없다.Computing device 100 may have additional features or functionality. For example, computing device 100 may include additional data storage devices (removable and / or non-removable), such as, for example, magnetic disks, optical disks, or tapes. Such additional storage devices are shown in FIG. 1 as removable storage device 109 and non-removable storage device 110. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storing information such as computer readable instructions, data structures, program modules, or other data. System memory 104, removable storage 109 and non-removable storage 110 are all examples of computer storage media. Computer storage media may include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROMs, digital versatile disks or other optical storage devices, magnetic cassettes, magnetic tapes, magnetic disk storage devices or other magnetic storage devices, or And any other medium that can be accessed by computing device 100 and used to store desired information. Any such computer storage media may be part of the device 100. Computing device 100 may also have input device (s) 112 such as a keyboard, mouse, pen, voice input device, touch input device, and the like. Output device (s) 114 such as displays, speakers, printers, and the like may also be included. These devices are known in the art and need not be discussed in detail here.

컴퓨팅 장치(100)는 또한 장치가 네트워크를 통하는 등에 의해 다른 컴퓨팅 장치(118)와 통신할 수 있게 해주는 통신 연결(116)을 포함할 수 있다. 통신 연결(116)은 통신 매체의 일례이다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메카니즘 등의 피변조 데이터 신호에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 기타 데이터에 의해 구현될 수 있으며, 임의의 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는 신호에 정보를 인코딩하도록 그의 특성들 중 하나 이상이 설정 또는 변경된 신호를 말한다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크 또는 직접-배선 연결 등의 유선 매체, 및 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함한다. '컴퓨터 판독가능 매체'라는 용어는, 본 명세서에서 사용되는 바와 같이, 저장 매체 및 통신 매체 둘다를 포함한다.Computing device 100 may also include a communication connection 116 that enables the device to communicate with other computing devices 118, such as through a network. Communication connection 116 is one example of communication media. Communication media can typically be implemented by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier or other transmission mechanism, and includes any information delivery media. The term " modulated data signal " refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term 'computer readable medium', as used herein, includes both storage media and communication media.

미국 워싱턴주 레드몬드 소재의 MICROSOFT Corporation의 WINDOWS 운영 체제 등의 네트워크화된 퍼스널 컴퓨터의 동작을 제어하기에 적합한 운영 체제(105) 등의 다수의 프로그램 모듈 및 데이터 파일이 컴퓨팅 장치(100)의 시스템 메모리(104)에 저장될 수 있다. 시스템 메모리(104)는 또한 워드 프로세서 애플리케이션(120) 및 이하에 기술되는 다른 것들 등의 하나 이상의 프로그램 모듈을 저장할 수 있다. 워드 프로세서 애플리케이션(120)은 전자 문서를 생성, 편집 및 처리하는 기능을 제공하는 동작을 한다.A number of program modules and data files, such as operating system 105, suitable for controlling the operation of a networked personal computer, such as the WINDOWS operating system of MICROSOFT Corporation, Redmond, WA, may include system memory 104 of computing device 100. ) Can be stored. System memory 104 may also store one or more program modules, such as word processor application 120 and others described below. The word processor application 120 operates to provide functionality for creating, editing, and processing electronic documents.

본 발명의 일 실시예에 따르면, 워드 프로세서 애플리케이션(120)은 MICROSOFT Corporation의 WORD 프로그램을 포함한다. 그렇지만, 다른 제조업자의 워드 프로세서 애플리케이션 프로그램이 이용될 수 있다는 것을 잘 알 것이다. 워드 프로세싱 애플리케이션의 예시는 단지 예에 불과하며, 문서를 생성 및 처리할 수 있는 다른 유형의 애플리케이션을 제한하는 것이 아니다. 예를 들어, 다양한 형태의 컨텐츠(예를 들어, 텍스트, 이미지, 그림, 기타 등등)를 처리할 수 있는 다른 애플리케이션 프로그램(106)(스프레드쉬트 애플리케이션 프로그램, 데이터베이스 애플리케이션 프로그램, 슬라이드 프리젠테이션 애플리케이션 프로그램, 드로잉 또는 컴퓨터-보조 애플리케이션 프로그램, 기타 등등)이 똑같이 적용가능하다. 각종의 서로 다른 유형의 문서들을 생성 및 처리하는 예시적인 애플리케이션 프로그램(106)은 MICROSOFT Corporation의 OFFICE를 포함한다.According to one embodiment of the invention, the word processor application 120 includes a WORD program from MICROSOFT Corporation. However, it will be appreciated that other manufacturers' word processor application programs may be used. Examples of word processing applications are merely examples, and do not limit other types of applications that can generate and process documents. For example, other application programs 106 (spreadsheet application programs, database application programs, slide presentation application programs, drawings, etc.) that can handle various types of content (e.g., text, images, drawings, etc.). Or computer-assisted application programs, etc.) is equally applicable. Exemplary application program 106 for generating and processing various different types of documents includes OFFICE from MICROSOFT Corporation.

실시예들은 컴퓨터 프로세스, 컴퓨팅 시스템, 또는 컴퓨터 프로그램 제품이나 컴퓨터 판독가능 매체 등의 제조 물품으로 구현될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 시스템에 의해 판독가능하고 컴퓨터 프로세스를 실행하는 명령어들로 된 컴퓨터 프로그램을 인코딩하는 컴퓨터 저장 매체일 수 있다. 컴퓨터 프로그램 제품은 또한 컴퓨팅 시스템에 의해 판독가능하고 컴퓨터 프로세스를 실행하는 명령어들로 된 컴퓨터 프로그램을 인코딩하는 반송파 상으로 전파된 신호일 수 있다.Embodiments may be implemented as computer processes, computing systems, or articles of manufacture such as computer program products or computer readable media. A computer program product may be a computer storage medium that is readable by a computer system and encodes a computer program in instructions that execute a computer process. The computer program product may also be a signal propagated onto a carrier that is readable by the computing system and encodes a computer program of instructions that executes the computer process.

명세서 및 청구 범위 전체에 걸쳐, 이하의 용어들은, 그 용어의 문맥이 달리 말하고 있지 않는 한, 본 명세서에서 연관된 의미들을 갖는다.Throughout the specification and claims, the following terms have the associated meanings herein, unless the context of the term says otherwise.

용어 "데이터"는 단어, 문장, 단락, 기타 등등의 문서 표면 레벨 또는 프리젠테이션 레벨 정보는 물론 보충 정보, 예를 들어, 워드 프로세싱 문서와 함께 전달되거나, 그에 의해 참조되거나 또는 그에 의해 사용되는 메타데이터를 말한다. 이 정보는 종종 크고 문서의 프리젠테이션 계층 상에서 노출되지 않을 수 있다.The term "data" refers to document surface level or presentation level information, such as words, sentences, paragraphs, and the like, as well as supplemental information, such as metadata conveyed by, referenced by, or used by a word processing document. Say. This information is often large and may not be exposed on the presentation layer of the document.

용어 "프리젠테이션"은 문서가 인쇄된 경우에 나타나는 텍스트 및 레이아웃 등의 문서의 가시적 부분을 말한다.The term "presentation" refers to the visible part of a document such as text and layout that appears when the document is printed.

용어 "태그"는 XML 문서 내의 엘리먼트들을 구분지우는 문서에 삽입되는 문자를 말한다. 각각의 엘리먼트는 일반적으로 2개의 태그, 시작 태그(start tag)와 종료 태그(end tag)를 포함한다. 비어 있는 엘리먼트(컨텐츠가 없음)를 가질 수 있으며, 이 경우 하나의 태그가 허용된다.The term "tag" refers to a character inserted into a document that separates elements within an XML document. Each element typically contains two tags, a start tag and an end tag. It can have an empty element (no content), in which case one tag is allowed.

용어 "마크업 언어", 즉 "ML"은 문서의 일부가 애플리케이션에 의해 어떻게 해석되어야 하는지를 지정하는 문서 내의 특수한 코드를 위한 언어를 말한다. 워드 프로세서 파일에서, 마크업 언어는 텍스트가 어떤 형식 또는 레이아웃으로 되어야 하는지를 지정한다.The term "markup language", or "ML", refers to a language for special code within a document that specifies how portions of the document should be interpreted by the application. In a word processor file, the markup language specifies what format or layout the text should be.

용어 "엘리먼트"는 XML 문서의 기본 단위를 말한다. 이 엘리먼트는 XML 문서에 대한 애트리뷰트, 다른 엘리먼트, 텍스트 및 다른 컨텐츠 영역을 포함할 수 있다.The term "element" refers to the basic unit of an XML document. This element can contain attributes for XML documents, other elements, text, and other content areas.

용어 "구성 블록"은 사용자에 의해 입력되는 특정 유형의 컨텐츠에 대한 컨테이너로서 역할하는 문서 내의 경계있는 아마도 라벨 표시된 영역을 말한다.The term "building block" refers to a possibly labeled area within a document that serves as a container for a particular type of content entered by a user.

용어 "데이터 바인딩, 데이터 매핑, 및 데이터 필드"는 구성 블록의 컨텐츠가 저장되어 있어야 하는 경우 문서에 저장된 XML DOM에의 XPath를 결정하는 구성 블록에 대한 속성을 말한다.The term "data binding, data mapping, and data field" refers to an attribute for a building block that determines the XPath to the XML DOM stored in the document if the content of the building block should be stored.

태그들 간의 XML 컨텐츠는 엘리먼트의 "자식"(또는 자손)으로서 간주된다. 따라서, 엘리먼트의 컨텐츠 내에 내장된 다른 엘리먼트들은 "자식 엘리먼트" 또는 "자식 노드" 또는 엘리먼트라고 한다. 엘리먼트의 컨텐츠 내에 직접 내장된 텍스트는 엘리먼트의 "자식 텍스트 노드"로 간주된다. 자식 엘리먼트 및 엘리먼트 내의 텍스트는 함께 그 엘리먼트의 "컨텐츠"를 구성한다.XML content between tags is considered as the "child" (or descendant) of the element. Thus, other elements embedded within the content of an element are referred to as "child elements" or "child nodes" or elements. Text embedded directly within the content of an element is considered an "child text node" of the element. The child element and the text within the element together make up the "content" of that element.

용어 "애트리뷰트"는 특정의 값으로 설정되고 엘리먼트와 연관된 부가적인 속성을 말한다. 엘리먼트는 그와 연관되어 있는 임의의 수의 애트리뷰트 설정(없음을 포함함)을 가질 수 있다. 애트리뷰트는 부가적인 엘리먼트를 포함하거나 텍스트 노드로서 취급되지 않는 엘리먼트와 부가적인 정보를 연관시키는 데 사용된다.The term "attribute" refers to additional attributes that are set to specific values and associated with an element. An element can have any number of attribute settings (including none) associated with it. Attributes are used to associate additional information with elements that contain additional elements or that are not treated as text nodes.

"XPath"는 XML 문서에서 노드를 식별하기 위해 패턴 표현을 사용하는 연산자이다. XPath 패턴은 XML 문서를 통한 경로를 기술하는 자식 엘리먼트 이름들의 슬래쉬-분리된 리스트이다. 이 패턴은 경로와 일치하는 엘리먼트를 "선택"한다."XPath" is an operator that uses a pattern representation to identify nodes in an XML document. The XPath pattern is a slash-separated list of child element names that describe the path through the XML document. This pattern "selects" elements that match the path.

용어 "XML 데이터 저장소 또는 데이터 저장소"는 파일이 열려 있는 동안 문서에 저장된 (예를 들어, XML 형식의) 데이터의 저장 및 수정을 위해 액세스를 제공하는 워드 프로세서 문서, 스프레드쉬트 문서, 슬라이드 프리젠테이션 문서, 기타 등등의 문서 내의 컨테이너를 말한다. XML 데이터 저장소의 추가적인 정의는 도 2와 관련하여 이하에 제공된다.The term “XML data store or data store” is a word processor document, spreadsheet document, slide presentation document that provides access for storing and modifying data (eg, in XML format) stored in a document while the file is open. Container within a document, and so on. Further definitions of the XML data store are provided below in connection with FIG. 2.

도 2는 하나 이상의 클라이언트 애플리케이션과 하나 이상의 데이터 저장소와 데이터 저장소(들)의 컨텐츠 간의 관계를 나타낸 블록도이다. 일반적으로 서술하면, 컴퓨터-생성 문서와 연관되어 있는 임의적인 데이터를 저장하고, 이를 관련지우며 또 그의 사용을 허용하기 위해, 하나 이상의 데이터 저장소가 문서 내의 기본 프리젠테이션 저장과 별도로 유지된다. 문서 메타데이터 등의 문서와 연관된 정보를 구조화하는 데이터는 데이터 저장소에 유지되며, 이 데이터 저장소에 서로 다른 데이터들 간의 관계가 유지된다. 이 데이터 저장소는, 서로 다른 애플리케이션이 데이터들 중 하나 이상에 액세스하고 그를 처리할 수 있게 해주기 위해, 애플리케이션 프로그래밍 인터페이스(API)를 데이터 저장소 내의 다양한 데이터에 노출시킨다. 본 명세서에서 사용되는 바와 같이, 용어 "데이터 소비자", "애플리케이션" 및 "프로세스"는, 문맥이 명백하게 달리 말하고 있지 않는 한, 교환가능하게 사용될 수 있다.2 is a block diagram illustrating a relationship between one or more client applications and one or more data stores and the contents of the data store (s). Generally described, one or more data repositories are maintained separate from the basic presentation store within a document to store, associate with, and permit use of any data associated with the computer-generated document. Data structuring information associated with a document, such as document metadata, is maintained in a data store, where relationships between different data are maintained. This data store exposes an application programming interface (API) to various data in the data store to enable different applications to access and process one or more of the data. As used herein, the terms “data consumer”, “application” and “process” may be used interchangeably unless the context clearly dictates otherwise.

데이터들은 XML(Extensible Markup Language) 등의 마크업 언어에 따라 구조화될 수 있다. XML 스키마는 각각의 데이터와 연관될 수 있고, 데이터 저장소는 주어진 데이터와 연관된 XML 스키마에 기초하여 데이터에 적용되는 XML 구조를 검증할 수 있다. 데이터 저장소는 XML에 따라 구조화된 임의의 수의 임의적인 데이터 항목, 예를 들어, 메타데이터를 포함할 수 있다. 그에 따라, 문서 솔루션 제공자는 임의적인 메타데이터를 주어진 문서와 함께 XML으로서 저장할 수 있으며, 데이터가 제거되거나 또는 데이터 저장소로 로드될 때 및/또는 문서가 사용자에 의해 열리고/편집되며/저장될 때 등의 이벤트의 발생 시에 데이터에 액세스하는 주어진 솔루션에 의해 그 정보가 처리되게 한다.The data may be structured according to a markup language such as XML (Extensible Markup Language). An XML schema can be associated with each data, and the data store can validate the XML structure applied to the data based on the XML schema associated with the given data. The data store may include any number of arbitrary data items, eg metadata, structured according to XML. As such, the document solution provider can store arbitrary metadata as XML with a given document, when the data is removed or loaded into the data store, and / or when the document is opened / edited / saved by the user, etc. The information is processed by a given solution that accesses the data upon the occurrence of an event.

문서가 편집되고 있는 동안에 XML 형태로 된 데이터에의 프로그램적 액세스도 제공될 수 있다. 일 실시예에 따르면, 솔루션 개발자에게 친숙한 표준 메카니즘(이를 통해 문서가 열려 있는 동안에 데이터가 프로그램적으로 액세스 및 수정될 수 있음)이 제공된다. 이러한 프로그램적 액세스는 표준의 XML 인터페이스를 흉내낸다. 데이터에의 프로그램적 액세스는 애플리케이션 프로그래밍 인터페이스를 통해 하나 이상의 편집 클라이언트 애플리케이션(예를 들어, 문서 편집 또는 생성 애플리케이션 및/또는 제3자 애플리케이션 애드-인 솔루션, 기타 등등)에 제공된다. 그에 따라, 다수의 클라이언트 애플리케이션이 동일한 문서 데이터에 액세스하여 편집할 수 있고, 주어진 데이터에 대한 임의의 상충하는 변경이 해결된다. 임의의 주어진 변경에 대한 "부수 효과"가 일어날 수 있다(예를 들어, 회사 이름을 "Microsoft"로 설정한 것에 응답하여, 주식 심볼을 "MSFT"로 변경하는 것). 그에 부가하여, 하나 이상의 변경의 실행 취소가 모든 관련된 변경을 무효시키도록 데이터에 대한 변경 및 임의의 연관된 부수 효과가 데이터 저장소에 의해 "번들링(buldle)"될 수 있다. 이것은 사용자가, 예를 들어, 실행 취소(Undo) 명령을 누름으로써 문서 표면으로부터 최초의 변경의 실행 취소를 개시할 때 모든 변경을 무효시키도록 보장하기 위해 솔루션 자체로부터 개발 부담을 없애는 데 도움을 준다.Programmatic access to data in XML form can also be provided while the document is being edited. According to one embodiment, a standard mechanism familiar to the solution developer is provided, through which data can be accessed and modified programmatically while the document is open. This programmatic access mimics the standard XML interface. Programmatic access to data is provided to one or more editing client applications (eg, document editing or generation applications and / or third party application add-in solutions, etc.) via an application programming interface. As such, multiple client applications can access and edit the same document data, and any conflicting changes to the given data are resolved. A "side effect" may occur for any given change (eg, changing the stock symbol to "MSFT" in response to setting the company name to "Microsoft"). In addition, changes to the data and any associated side effects can be "bulled" by the data store such that undoing one or more changes invalidates all related changes. This helps remove the development burden from the solution itself to ensure that the user invalidates all changes when initiating the first change from the document surface, for example by pressing the Undo command. .

표준의 XML 스키마(XSD)는 또한 문서 데이터에 적용된 XML 데이터가 유효하도록 보장하기 위해 문서 메타데이터와 연관된 커스텀 XML 데이터 중 임의의 것의 컨텐츠를 정의하는 데 사용될 수 있다. 이들 스키마는 문서에 저장된 XML 데이터의 임의의 인스턴스에 첨부될 수 있고, 데이터 저장소는 XML 데이터에 대한 어떤 변경도 허용하지 않으며, 이 결과 그 데이터의 XML 구조(즉, 그의 컨텐츠가 아닌 XML 태그)가 무효되지 않게 된다. 이것은 솔루션 개발자가 특정의 XML 메타데이터를 문서에 첨부할 수 있도록 보장하고 또 그 데이터를 수정하는 데 어느 데이터 소 비자(예를 들어, 애드-인)가 사용되는지에 상관없이 XML 데이터가 계속하여 연관된 스키마에 따라 구조적으로 "정확(correct)"하도록 보장하는 데 도움이 된다.The standard XML Schema (XSD) can also be used to define the content of any of the custom XML data associated with document metadata to ensure that the XML data applied to the document data is valid. These schemas can be attached to any instance of XML data stored in the document, and the data store does not allow any changes to the XML data, resulting in the XML structure of the data (ie, XML tags rather than its contents). It is not invalidated. This ensures that solution developers can attach specific XML metadata to documents and that XML data continues to be associated with whatever data consumer (eg, add-in) is used to modify that data. It helps to ensure that the schema is "correct" structurally.

이제 도 2를 참조하면, 문서 데이터(220)는 XML 구조 데이터 및 문서의 표면 또는 프리젠테이션 레벨 보기를 제공하는 연관된 문서 데이터를 포함한다. 예를 들어, 문서 데이터(220)는 XML 구조(예를 들어, heading 태그, body 태그, conclusion 태그) 및 워드 프로세싱 문서, 스프레드쉬트 문서, 슬라이드 프리젠테이션 문서, 기타 등등의 연관된 표면 보기 데이터(surface view data)(예를 들어, 단어, 문장, 단락)를 포함할 수 있다.Referring now to FIG. 2, document data 220 includes XML structured data and associated document data that provides a surface or presentation level view of the document. For example, document data 220 may contain XML structures (eg, heading tags, body tags, conclusion tags) and associated surface view data such as word processing documents, spreadsheet documents, slide presentation documents, and the like. data) (eg, words, sentences, paragraphs).

데이터 저장소(208)는 주어진 문서와 연관된 하나 이상의 유형의 데이터와 연관된 하나 이상의 구조화된 데이터를 저장하는 문서 데이터 저장소이다. 단 하나의 데이터 저장소가 나타내어져 있지만, 2개 이상의 데이터 저장소가 이용될 수 있다. 메타데이터 1(225)(구조화된 데이터 항목)는 XML 구조 데이터 및 문서와 연관된 제1 메타데이터에 대한 연관된 데이터를 포함할 수 있다. 예를 들어, 메타데이터 1(225)는 문서의 저작자, 문서 생성 날짜, 문서 마지막 변경/저장 날짜, 기타 등등을 열거하는 XML 구조 데이터(예를 들어, date 태그, name 태그, 기타 등등)를 포함할 수 있다. 메타데이터 2(230)(구조화된 데이터 항목)는 XML 구조 데이터(태그) 및 문서와 연관된 제2 메타데이터를 나타내는 연관된 메타데이터를 포함할 수 있다. 잘 알 것인 바와 같이, 메타데이터 1 및 메타데이터 2는 예시를 위한 것이고 주어진 문서와 관련하여 데이터 저장소(208)에 유지될 수 있는 서로 다른 유형의 데이터의 종류 및 수를 제한하는 것이 아니다. 예를 들어, 본 명세서에 기술된 바와 같이, 문서 데이터에 액세스하는 솔루션 제공자 또는 사용자에 의해 원하는 바에 따라, 임의적인 데이터가 하나 이상의 소프트웨어 애플리케이션에 의해 구조화되어 문서에 추가될 수 있다.Data store 208 is a document data store that stores one or more structured data associated with one or more types of data associated with a given document. Although only one data store is shown, more than one data store may be used. Metadata 1 225 (structured data item) may include XML structured data and associated data for first metadata associated with a document. For example, metadata 1 225 contains XML structured data (eg, date tag, name tag, etc.) that lists the author of the document, document creation date, document last changed / save date, etc. can do. Metadata 2 230 (structured data item) may include XML structured data (tags) and associated metadata representing second metadata associated with the document. As will be appreciated, metadata 1 and metadata 2 are for illustrative purposes and do not limit the type and number of different types of data that can be maintained in data store 208 in connection with a given document. For example, as described herein, arbitrary data can be structured and added to a document by one or more software applications as desired by a solution provider or user accessing the document data.

스키마 파일(240, 245)이 각각의 데이터(225, 230)에 적용되는 XML 데이터와 연관된 구문 및 검증 규칙을 강제하기 위해 데이터 저장소(208)에 저장된 각각의 데이터에 선택적으로 첨부될 수 있다. XML 스키마 파일은 XML 환경에서 데이터를 기술하고 검증하는 방법을 제공한다. 스키마 파일은, 애트리뷰트 및 엘리먼트를 비롯하여 어느 XML 마크업 데이터가 XML 문서 내의 컨텐츠를 기술하는 데 사용되는지를 기재하고 있으며, 스키마 파일은 각각의 엘리먼트가 어디에서 허용되는지, 엘리먼트 내에서 어느 유형의 컨텐츠가 허용되는지, 및 다른 엘리먼트 내에 어느 엘리먼트가 나타날 수 있는지를 비롯하여 XML 마크업 구문을 정의한다. 스키마 파일의 사용은 문서(또는 이 경우에 개개의 데이터)가 일관되고 예측가능한 방식으로 구조화되도록 보장한다. 스키마 파일(240, 245)은 사용자에 의해 생성될 수 있고 일반적으로 XML 등의 연관된 마크업 언어에 의해 지원될 수 있다.Schema files 240 and 245 may optionally be attached to each data stored in data store 208 to enforce syntax and validation rules associated with the XML data applied to each data 225 and 230. XML schema files provide a way to describe and validate data in an XML environment. The schema file describes which XML markup data, including attributes and elements, are used to describe the content in the XML document. The schema file describes where each element is allowed and what type of content within the element. Define XML markup syntax, including what is allowed and which elements can appear within other elements. The use of a schema file ensures that the document (or in this case individual data) is structured in a consistent and predictable manner. Schema files 240 and 245 can be generated by a user and generally supported by an associated markup language such as XML.

문서의 이러한 스키마화(schematization)는 데이터 저장소 레벨에서 주어진 스키마 파일을 위반하는 어떤 변경도 거부함으로써 데이터 저장소가 문서의 구조적 유효성을 "보장"해주는 기능을 제공할 수 있게 해준다. 일 실시예에 따르면, 데이터 저장소(208)는 연관된 스키마 파일과 대조하여 주어진 데이터에 추가된 XML 구조 또는 그에 행해진 변경을 검증하는 스키마 검증 모듈(260)을 이용한다. 예를 들어, 문서 생성자 또는 편집자가 주어진 데이터, 예를 들어, 메타데이터 1에 대해 XML 구조적 변경을 하는 경우(여기서 편집자는 주어진 XML 태그를 추가 또는 제거함), 데이터 저장소(208)는 연관된 스키마 파일과 대조하여 XML 구조적 변경을 검사하여 변경의 유효성을 보장하기 위해 스키마 검증 모듈을 이용한다. 변경이 유효하지 않은 경우, 에러가 발생되어 편집자에게 보내질 수 있다. 잘 알 것인 바와 같이, 주어진 데이터에 적용되는 XML 구조의 이러한 제어는 클라이언트 및 제3자 애플리케이션이 연관된 데이터와 상호작용할 수 있게 해주기 위해 특히 중요한 구조적 일관성 및 예측가능성을 고려하고 있다.This schematization of the document allows the data store to provide the ability to "guarantee" the structural validity of the document by rejecting any changes that violate a given schema file at the data store level. According to one embodiment, the data store 208 utilizes a schema validation module 260 that verifies the XML structure added to a given data or changes made to it in contrast to the associated schema file. For example, if a document creator or editor makes XML structural changes to a given data, for example metadata 1, where the editor adds or removes a given XML tag, the data store 208 is associated with the associated schema file. In contrast, the schema validation module is used to check the XML structural changes to ensure the validity of the changes. If the change is invalid, an error may be raised and sent to the editor. As will be appreciated, this control of the XML structure applied to a given data takes into account structural consistency and predictability, which is particularly important to allow clients and third party applications to interact with the associated data.

데이터 저장소(208)는 클라이언트 애플리케이션(205)(예를 들어, 워드 프로세싱 애플리케이션, 스프레드쉬트 애플리케이션, 슬라이드 프리젠테이션 애플리케이션, 기타 등등)은 물론 제3자 애플리케이션(210, 215)에 의해 각자의 애플리케이션(205, 210, 215)의 객체 모델(OM)을 통해 액세스될 수 있는 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)(270)를 제공한다. 이들 API는 클라이언트 애플리케이션 및 제3자 애플리케이션이 임의의 기존의 XML 파일을 주어진 문서의 데이터 저장소(208)로 로드할 수 있게 해주며, 따라서 그 데이터가 이제 문서의 일부이고 그의 수명 동안 (예를 들어, 열기/편집/저장/이름변경/기타 등등을 통해), 즉 데이터가 데이터 저장소로부터 삭제될 때까지 그 문서 내에서 이동하도록 보장해준다. 일 실시예에 따르면, 데이터 저장소 내의 데이터는, 주어진 데이터(225, 230)에 대한 소스 애플리케이션이 닫혀 있거나 다른 방식으로 이용가능하지 않을 때조차도, 그의 XML 형식으로 이용가능하다. 즉, 주어진 데이터(225, 230)가 (소스 애플리케이션 이외의) 다른 애플리케이션들에 의해 API(270)를 통해 액세스될 수 있 다. 이하에 기술된 바와 같이, API는 또한 클라이언트 및 제3자 애플리케이션이 데이터 항목(225, 230)에 적용되는 XML 마크업 데이터에 변경을 할 수 있게 해준다.The data store 208 is not limited to the client application 205 (eg, word processing application, spreadsheet application, slide presentation application, etc.) as well as the respective application 205 by the third party applications 210, 215. One or more application programming interfaces (APIs) 270 that can be accessed through the object model (OM) of 210, 215. These APIs allow client applications and third party applications to load any existing XML file into the data store 208 of a given document, so that the data is now part of the document and for its lifetime (eg , Open / edit / save / rename / etc.), I.e., move through the document until the data is deleted from the data store. According to one embodiment, the data in the data store is available in its XML format even when the source application for a given data 225, 230 is closed or otherwise not available. That is, given data 225, 230 may be accessed via API 270 by other applications (other than the source application). As described below, the API also allows client and third party applications to make changes to the XML markup data applied to the data items 225, 230.

XML 데이터(225, 230)가 문서(220)와 연관시키기 위해 데이터 저장소에 로드되면, 이는 XML 프로그래밍 표준에 대한 개발자의 기존의 지식을 이용하기 위해 기존의 XML 편집 인터페이스와 유사한 메서드를 제공하도록 설계된 데이터 저장소 인터페이스를 사용하여 표준 XML으로서 처리될 수 있다. 이것은 사용자가 문서의 데이터 저장소에 추가된 XML 데이터에 대해 표준 XML 동작(엘리먼트 및 애트리뷰트를 추가하는 것, 엘리먼트 및 애트리뷰트를 제거하는 것, 기존의 엘리먼트/애트리뷰트의 값을 변경하는 것, 및 연관된 XML 트리의 임의의 기존의 부분의 값을 읽는 것 등)을 수행할 수 있게 해준다. 이러한 XML 표준 동작을 사용하여, 솔루션은 데이터의 길이/크기 또는 데이터의 구조에 대한 이전의 제한들 어느 것도 받지 않는 문서와 함께 구조화된 복잡한 메타데이터를 저장할 수 있으며, 이는 이전의 솔루션보다 상당히 더 구조화된 솔루션에 대해 이 XML 데이터 저장소를 사용하는 것을 가능하게 해준다. 예를 들어, 각각의 문서에 대한 데이터 저장소(208)에 추가된 메타데이터 1(225)를 읽음으로써 다수의 문서로부터 문서 저작자 이름 및 문서 생성 일자를 찾아내어 추출하기 위해 제3자 애플리케이션(215)이 작성될 수 있다. 이 예시적인 제3자 애플리케이션은 주어진 조직에 의해 생성된 모든 문서에 대한 문서 저작자 이름 및 문서 생성 일자의 리스트를 만들도록 프로그램된 애플리케이션일 수 있다. 본 발명의 실시예들에 따르면, 제3자 애플리케이션은 원하는 데이터를 효율적으로 찾아내고 추출하기 위해 메타데이터 1에 적용된 XML 구조를 이용할 수 있다. 예를 들어, 메타데이터 1 파일의 XML 구조를 파싱하고 <docauthor> 및 <doccreationdate> 등의 XML 태그를 찾아내어 그 태그들과 연관된 데이터를 획득 및 사용하기 위해 제3자 애플리케이션이 작성될 수 있다. 잘 알 것인 바와 같이, 이상의 내용은 하나 이상의 애플리케이션이 데이터 저장소(208)를 통해 문서와 연관되어 있는 구조화된 데이터와 상호작용할 수 있는 많은 방법들 중 단지 한 예에 불과하다.Once the XML data 225, 230 is loaded into the data store to associate with the document 220, it is designed to provide methods similar to existing XML editing interfaces to take advantage of the developer's existing knowledge of XML programming standards. Can be treated as standard XML using the repository interface. This allows the user to add standard XML behavior (adding elements and attributes, removing elements and attributes, changing the values of existing elements / attributes, and associated XML trees) for XML data added to the document's data store. Reads the value of any existing part of. Using this XML standard behavior, the solution can store complex metadata structured with documents that do not accept any of the previous limitations on the length / size of the data or the structure of the data, which is considerably more structured than the previous solution. It is possible to use this XML data store for an existing solution. For example, third-party application 215 may be used to locate and extract document author names and document creation dates from multiple documents by reading metadata 1 225 added to data repository 208 for each document. This can be written. This example third party application may be an application programmed to create a list of document author names and document creation dates for all documents generated by a given organization. According to embodiments of the present invention, a third party application may use an XML structure applied to metadata 1 to efficiently find and extract desired data. For example, a third-party application can be written to parse the XML structure of the metadata 1 file, find XML tags such as <docauthor> and <doccreationdate>, and obtain and use the data associated with those tags. As will be appreciated, the above is only one example of the many ways in which one or more applications can interact with the structured data associated with the document through the data store 208.

그에 부가하여, 데이터 저장소(208)는 다수의 애플리케이션(205, 210, 215)이 동일한 데이터를 가지고 작업할 수 있게 해주기 위해 임의의 개개의 XML 데이터(220, 225, 230)(저장소 항목(store item)이라고도 함)에 임의의 수의 API 인터페이스(270)를 제공한다. 예를 들어, 클라이언트 애플리케이션(예를 들어, 워드 프로세싱 애플리케이션) 및 제3자 애플리케이션 솔루션(예를 들어, 상기한 애플리케이션) 등의 몇가지 솔루션은 동일한 일련의 문서 속성들(예를 들어, 메타데이터 2 (230) 파일에 포함된 속성들)을 가지고 작업할 수 있다. 데이터 저장소(208)를 사용하여, 이들 애플리케이션 각각은, 동일한 데이터에 액세스하는 다수의 데이터 소비자를 갖는 복잡함을 처리할 필요없이 각각의 애플리케이션이 그 자신의 OM을 통해 데이터와 통신할 수 있게 해주기 위해, 그 자신의 데이터 저장소 API 인터페이스(270)를 통해 원하는 XML 데이터(230)에의 개별적인 액세스를 수신한다.In addition, the data store 208 may include any individual XML data 220, 225, 230 (store item) to allow multiple applications 205, 210, 215 to work with the same data. ), Any number of API interfaces 270 may be provided. For example, some solutions, such as client applications (e.g., word processing applications) and third party application solutions (e.g., the applications described above), share the same set of document attributes (e.g., metadata 2 ( 230) you can work with the properties contained in the file. Using the data store 208, each of these applications allows each application to communicate with the data through its own OM without having to deal with the complexity of having multiple data consumers accessing the same data. Receive individual access to the desired XML data 230 via its own data store API interface 270.

이들 다수의 데이터 소비 애플리케이션(205, 210, 215)이 동일한 데이터에 액세스하는 것을 고려하기 위해, 데이터 저장소(208)는 XML 데이터의 임의의 부분 이 다른 애플리케이션에 의해 변경될 때 이들 애플리케이션 각각에 통지를 함으로써 주어진 애플리케이션이 그 변경에 응답할 수 있도록 한다(내부적으로 그 자신의 프로세스에 대해 또 외부적으로 동일한 데이터에 대한 다른 변경에 의해). 한 애플리케이션이 주어진 데이터 항목에 대한 변경을 요청할 때, 그 요청은 다른 애플리케이션들이 요청된 변경에 대해 어떻게 응답해야 하는지 또는 응답해야 하는지 여부를 결정할 수 있게 해주기 위해 자동적으로 모든 다른 애플리케이션으로 전송된다. 일 실시예에 따르면, 이것은, 주어진 애플리케이션 솔루션/프로그램이 그 자신의 논리와 관련된 그 메시지들만을 수신하도록, 각각의 애플리케이션이 XML 데이터의 임의의 부분(이 애플리케이션이 이에 대한 인터페이스를 가지고 있음)을 "리스닝(listen)"하도록 등록할 수 있게 해줌으로써 달성된다. 예를 들어, 한 유형의 애플리케이션(210)이 제3자 솔루션에 상세한 비지니스 논리 기능(business logic capabilities)을 제공하기 위해 주어진 XML 데이터에 행해진 모든 변경을 리스닝하도록 등록하고자 할 수 있지만, 다른 유형의 애플리케이션(215)은 동일한 데이터 내의 하나 또는 2개의 특정의 XML 엘리먼트에 대한 변경만을 리스닝하고자 할 수 있는데, 그 이유는 그의 논리가 XML 데이터의 임의의 다른 부분에 대한 변경에 신경을 쓰지 않기 때문이다. In order to allow these multiple data consuming applications 205, 210, 215 to access the same data, the data store 208 notifies each of these applications when any portion of the XML data is changed by another application. This allows a given application to respond to that change (by internally changing its own process and externally to another change to the same data). When an application requests a change for a given data item, the request is automatically sent to all other applications to allow other applications to determine how or whether to respond to the requested change. According to one embodiment, this means that each application has an arbitrary portion of the XML data (this application has an interface to it) so that a given application solution / program receives only those messages related to its own logic. This is accomplished by allowing you to register to "listen". For example, one type of application 210 may wish to register to listen for all changes made to a given XML data to provide detailed business logic capabilities to a third party solution, but another type of application. 215 may only want to listen for changes to one or two specific XML elements in the same data, because its logic does not care about changes to any other portion of the XML data.

이 실시예에 따르면, 다수의 애플리케이션(205, 210, 215)은 동일한 문서 데이터에 액세스하여 이를 편집할 수 있으며, 주어진 데이터에 대한 임의의 상충하는 변경이 해결된다. 예를 들어, 하나의 애플리케이션에 의한 하나의 변경이 다른 애플리케이션에 의한 부수 효과 변경을 야기할 때 임의의 주어진 변경에 대한 "부수 효과"가 일어난다. 예를 들어, 제1 애플리케이션(210)은 주어진 문서와 연관된 하나 이상의 데이터 항목(225, 230)으로부터 회사 이름을 추출하여, 이용가능한 경우, 주어진 문서에 관련된 회사 주식 심볼의 리스트를 컴파일하기 위해 그 이름들을 대응하는 주식 심볼로 변환하는 일을 맡을 수 있다. 제2 애플리케이션(215)이 주어진 메타데이터 내의 주어진 회사 이름을 추가 또는 변경되게 하는 경우, 예를 들어, 회사 이름을 "회사 ABC"에서 "회사 XYZ"로 변경하는 경우, 제1 애플리케이션은 "회사 ABC" 대신에 "회사 XYZ"에 대한 주식 심볼을 포함하도록 그의 주식 심볼 리스트를 자동적으로 갱신하기 위해 이 변경을 리스닝할 수 있다. 그에 부가하여, 하나 이상의 변경을 실행 취소하는 것이 모든 관련된 변경을 무효시키도록 이러한 변경 및 임의의 연관된 부수 효과가 데이터 저장소(208)에 의해 번들링될 수 있다.According to this embodiment, multiple applications 205, 210, and 215 can access and edit the same document data, and any conflicting changes to the given data are resolved. For example, a "side effect" for any given change occurs when one change by one application causes a side effect change by another application. For example, the first application 210 extracts a company name from one or more data items 225, 230 associated with a given document and, if available, the name to compile a list of company stock symbols associated with the given document. To convert them into the corresponding stock symbols. If the second application 215 causes the given company name in the given metadata to be added or changed, for example, if the company name is changed from "company ABC" to "company XYZ", then the first application is "company ABC". Instead, you can listen to this change to automatically update its stock symbol list to include the stock symbol for "Company XYZ". In addition, such changes and any associated side effects may be bundled by data store 208 such that undoing one or more changes invalidates all related changes.

도 3은 XML 데이터 저장소를 갖는 내부 데이터 소비자와 외부 데이터 소비자 간의 상호작용을 나타낸 시스템도를 나타낸 것이다. 도시된 바와 같이, 시스템(300)은 프리젠테이션 계층(304)을 포함하는 데이터 저장소(302), 각각이 에러 저장소 및 실행 취소 저장소를 포함하는 XML 저장소 1-N(306), 전역 변경 저장소(308), 선택적인 전역 실행 취소 저장소(310), 내부 데이터 소비자 1-N(314)에 연결된 내부 브로커(312), 및 외부 데이터 소비자 1-N(318)에 연결된 외부 브로커(316)를 포함한다.3 shows a system diagram illustrating the interaction between an internal data consumer with an XML data store and an external data consumer. As shown, the system 300 includes a data store 302 including a presentation layer 304, an XML store 1-N 306, each of which includes an error store and an undo store, a global change store 308. ), An optional global undo store 310, an internal broker 312 connected to an internal data consumer 1 -N 314, and an external broker 316 connected to an external data consumer 1 -N 318.

XML 데이터 저장소(들)(306)를 사용하여, (각각이 표준 XML 구문에 부합하는 한) 문서는 임의의 수의 임의적인 데이터 항목을 포함할 수 있다. 임의적인 메타데이터가 문서 내에 XML으로서 저장될 수 있고, 문서가 사용자에 의해 열기/편집/ 저장될 때 그 정보가 자동적으로 라운드-트립(round-trip)될 수 있다.Using the XML data store (s) 306, a document may contain any number of arbitrary data items (as long as each conforms to standard XML syntax). Any metadata can be stored as XML in the document, and the information can be automatically round-tripd when the document is opened / edited / saved by the user.

상기한 바와 같이, 이 데이터에의 프로그램적 액세스는 문서가 편집되고 있는 동안에 이용될 수 있는 API를 통해 제공되어, 솔루션 개발자에게 친숙한 표준 메카니즘(이를 통해 문서가 열려 있는 동안 정보가 프로그램적으로 액세스되어 수정될 수 있음)을 제공한다. 일 실시예에 따르면, 이 프로그램적 액세스는 표준 XML 인터페이스를 흉내내도록 설계되어 있다. API를 사용하여, 워드 프로세싱 애플리케이션 등의 애플리케이션이 실행되고 있는 동안에 데이터가 추가/제거될 수 있고, 데이터가 저장소 항목(데이터 저장소 내의 일부) 내에 채워질 수 있고, 데이터가 표준 XML 구성자(construct)를 사용하여 처리될 수 있으며, 스키마가 데이터 저장소 내의 임의적인 XML 데이터와 연관될 수 있고, 데이터 저장소 항목과 연관되면 스키마가 추가/제거/변경될 수 있으며, XML 변경이 임의의 리스닝 클라이언트에 이벤팅(event)될 수 있다. 도시된 바와 같이, API는 외부 데이터 소비자(318)에 대한 인터페이스를 제공하는 외부 브로커(316) 및 데이터 저장소(302)와 상호작용하는 임의의 내부 데이터 소비자(314)에 대한 인터페이스를 제공하는 내부 브로커(312)를 포함한다.As noted above, programmatic access to this data is provided through an API that can be used while the document is being edited, thereby providing a standard mechanism that is familiar to the solution developer, through which information is programmatically accessed while the document is open. May be modified). According to one embodiment, this programmatic access is designed to mimic a standard XML interface. Using the API, data can be added / removed while an application, such as a word processing application, is running, data can be populated within a repository item (part of the data store), and the data can use a standard XML constructor. Can be processed, the schema can be associated with arbitrary XML data in the data store, the schema can be added / removed / changed when associated with a data store item, and XML changes can be sent to any listening client. Can be As shown, the API provides an interface to an external broker 316 that provides an interface to an external data consumer 318 and an internal broker that provides an interface to any internal data consumer 314 that interacts with the data store 302. 312.

데이터 저장소(302)에 대한 조작이 실시간으로 일어날 수 있다. 상기한 바와 같이, 데이터 저장소(306)는 하나 이상의 유형의 데이터를 포함할 수 있다. 예를 들어, 회사는 하나의 데이터 저장소에 저장하고자 하는 서로 다른 유형의 데이터 전부를 저장하는 데 사용하고 있는 하나의 데이터 저장소를 가질 수 있는 반면, 다른 회사는 서로 다른 데이터 저장소들에 걸쳐 서로 다른 유형의 데이터를 저장하 고자 할 수 있다.Manipulations to the data store 302 can occur in real time. As noted above, data store 306 may include one or more types of data. For example, a company may have one data store that is used to store all of the different types of data that it wants to store in one data store, while another company may have a different type across different data stores. You may want to store your data.

데이터 소비자(318)는 데이터 저장소(306)에 관한 동작과 관련된 이벤트에 대해 등록을 할 수 있다. 예를 들어, 데이터 소비자는 하나 이상의 데이터 저장소에 임의의 유형의 변경이 행해질 때 이벤트를 수신하기 위해 등록을 할 수 있다. 다른 데이터 소비자는 데이터 저장소 내의 어떤 요소 또는 일련의 요소에 일어난 변경에 대해 등록을 할 수 있다. 통상의 이벤트는 데이터 저장소의 로드, 데이터 저장소에 추가 및 데이터 저장소로부터의 삭제를 포함한다. 이벤트가 일어날 때, 등록을 한 각각의 데이터 소비자는 변경에 반응할 수 있는 반면, 데이터 저장소의 상태가 일관성있게 유지된다. 여러번, 데이터 소비자는 변경이 행해질 때 어떤 동작도 수행하지 않는다. 다른 때에, 데이터 소비자는 이벤트에 응답하여 어떤 동작(들)을 수행한다. 예를 들어, 데이터 소비자는 타이틀 변경, 문서 내의 헤더의 갱신 등의 변경에 응답하여 데이터 저장소에 어떤 다른 변경을 할 수 있다. 데이터 소비자는 또한 문서에 영향을 주지 않는 어떤 다른 동작들을 수행할 수 있다. 예를 들어, 주식 종목 심볼(stock ticker symbol)이 삽입되면, 비록 검색된 데이터 전부가 프리젠테이션 계층에서 문서 내에 디스플레이되지 않을 수 있을지라도, 데이터 소비자는 그 주식 심볼과 연관되어 있는 데이터를 검색할 수 있다. 데이터 소비자는 또한 변경을 거부할 수 있다. 예를 들어, 데이터 소비자 1이 수락되지 않는 변경을 수신하는 경우, 그 데이터 소비자는 변경이 수락되지 않는다는 것을 나타내는 플래그를 브로커에게 반환할 수 있다. 변경이 수락되지 않을 때마다, 이 변경은 이 변경이 결코 일어나지 않도록 임의의 부수 효과와 함께 롤백된다. 각각 의 XML 저장소(306)는 그의 실행 취소 저장소를 이용하여 그가 행한 변경을 실행 취소할 수 있다. 다른 대안으로서, 전역적 실행 취소 저장소(310)가 데이터 저장소 전체에 걸쳐 행해진 변경을 실행 취소하는 데 이용될 수 있다. 문서 속성에 무슨 일이 일어나고 있는지에 관심이 있는 3개의 데이터 소비자가 있으며, 따라서 이들 데이터 소비자 각각이 속성의 변경에 관한 이벤트를 수신하기 위해 등록을 한 것으로 생각해보자. 변경이 행해질 때, 데이터 저장소는 등록을 한 각각의 데이터 소비자를 결정하고 이들 각각에 미리 정해진 순서로 변경을 통지한다. 각각의 데이터 소비자는 차례로 이 변경에 응답하여 어떤 동작을 수행할 수 있다. 이 변경 또는 이 변경의 결과로서 등록된 데이터 소비자에 의해 행해진 변경 중 임의의 것이 데이터 소비자 중 임의의 하나에 의해 수락되지 않을 때, 초기 변경에 관한 변경들 전부가 실행 취소된다.Data consumer 318 may register for events related to operations on data store 306. For example, a data consumer may register to receive an event when any type of change is made to one or more data stores. Other data consumers can register for changes that occur to any element or series of elements in the data store. Common events include loading a data store, adding to, and deleting from a data store. When an event occurs, each registered data consumer can react to the change, while the state of the data store remains consistent. Many times, a data consumer does not perform any action when a change is made. At other times, the data consumer performs some action (s) in response to the event. For example, a data consumer may make some other change to the data store in response to a change in title, update of a header in the document, and the like. The data consumer can also perform some other operations that do not affect the document. For example, if a stock ticker symbol is inserted, a data consumer can retrieve data associated with that stock symbol, even though not all of the retrieved data may be displayed in the document in the presentation layer. . The data consumer can also reject the change. For example, if data consumer 1 receives a change that is not accepted, the data consumer may return a flag to the broker indicating that the change is not accepted. Each time a change is not accepted, this change is rolled back with any side effects so that this change never happens. Each XML store 306 can use its undo store to undo the changes he made. As another alternative, global undo store 310 may be used to undo changes made throughout the data store. There are three data consumers interested in what's happening to the document attributes, so imagine each of those data consumers registered to receive events about changes to the attributes. When changes are made, the data store determines each data consumer that has registered and notifies each of them in a predetermined order. Each data consumer may in turn perform some action in response to this change. When any of this change or a change made by a registered data consumer as a result of this change is not accepted by any one of the data consumers, all of the changes regarding the initial change are undone.

외부 브로커 애플리케이션 프로그래밍 인터페이스 계층(316)은 외부 데이터 소비자(318)에 의한 데이터 저장소(302)에의 액세스를 제공하고, 애플리케이션과 연관되어 있는 내부 데이터 소비자가 데이터 저장소와 상호작용하는 것처럼, 제3자 클라이언트가 데이터 저장소(302)와 상호작용할 수 있게 해준다. 데이터 저장소(302) 내의 XML 데이터 저장소(306) 각각은 식별을 위해 고유의 ID를 제공받는다. 이것은 XML 데이터 저장소(306)를 찾아내는 데 도움이 된다.The external broker application programming interface layer 316 provides access to the data store 302 by the external data consumer 318, and the third party client, just as the internal data consumer associated with the application interacts with the data store. Allows the user to interact with the data store 302. Each XML data store 306 in the data store 302 is provided with a unique ID for identification. This helps to find the XML data store 306.

임의의 시점에서, 데이터 소비자는 데이터 저장소 내의 데이터를 검증하는 데 사용되는 스키마를 추가할 수 있다. 따라서, 이제 임의의 다른 제3자 코드가 나타나 데이터를 변경하려고 시도하면, 데이터 저장소가 하게 되는 첫번째 일은 그 변경이 제공된 스키마에 부합하는지를 판정한다. 스키마가 첨부되면, 브로커는 검증 객체가 된다.At any point in time, the data consumer may add a schema that is used to verify data in the data store. Thus, if any other third party code now appears and attempts to change the data, the first thing the data store will do is determine if the change conforms to the provided schema. When a schema is attached, the broker becomes a verification object.

데이터 저장소는 또한 한번에 2개 이상의 요소를 수신할 수 있다. 데이터(XML)를 하나의 특정의 스트림으로서 제공하는 것은 어떤 상황에서 스키마를 만족시키는 데 도움을 줄 수 있다. 예를 들어, 첨부된 스키마가 주식 데이터가 존재하는 경우 그 데이터가 적어도 2개의 회사를 가지고 있어야만 하는 것으로 되어 있다고 가정하자. 주식 데이터가 하나씩 추가되면, 이는 유효하지 않다.The data store can also receive more than one element at a time. Providing the data (XML) as one particular stream can help to satisfy the schema in some situations. For example, suppose the attached schema says that if stock data exists, the data must have at least two companies. If the stock data is added one by one, it is not valid.

데이터를 검증하는 데 단일 패스(single pass)가 사용된다. 2개의 패스를 행하는 것(이 결과 데이터 저장소에 변경이 일어날 수 있음) 대신에, 데이터가 데이터 저장소에 커밋되기 이전에 검증이 수행된다. 이것은 데이터 소비자가 데이터 저장소에 에러를 유입시키는 것을 방지하는 데 도움을 준다.A single pass is used to verify the data. Instead of doing two passes (which can result in changes to the data store), validation is performed before the data is committed to the data store. This helps to prevent data consumers from introducing errors into the data store.

도 4 및 도 5는 데이터 저장소에 관한 이벤트를 핸들링하는 프로세스를 나타낸 것이다. 본 명세서에 제공된 루틴에 대한 설명을 읽어보면, 다양한 실시예의 논리적 동작이 (1) 컴퓨터 시스템 상에서 실행되는 컴퓨터 구현 동작 또는 프로그램 모듈의 시퀀스로서 및/또는 (2) 컴퓨팅 시스템 내의 상호연결된 기계 논리 회로 또는 회로 모듈로서 구현된다는 것을 잘 알 것이다. 이 구현은 본 발명을 구현하는 컴퓨팅 시스템의 성능 요건에 따른 선택의 문제이다. 그에 따라, 본 명세서에 기술된 실시예들을 구성하는 예시된 논리적 동작들이 여러가지 이름으로 동작, 구조적 장치, 작용 또는 모듈이라고 말해진다. 이들 동작, 구조적 장치, 작용 및 모듈은 소프트웨어로, 펌웨어로, 특수 목적의 디지털 논리로, 이들의 임의의 조합으 로 구현될 수 있다.4 and 5 illustrate a process for handling events related to data storage. In reading the descriptions of the routines provided herein, the logical operations of the various embodiments are described as (1) a sequence of computer implemented operations or program modules executed on a computer system and / or (2) interconnected machine logic circuits within a computing system or It will be appreciated that it is implemented as a circuit module. This implementation is a matter of choice depending on the performance requirements of the computing system implementing the invention. As such, the illustrated logical acts that make up the embodiments described herein are referred to in various names as acts, structural devices, acts, or modules. These operations, structural devices, acts and modules may be implemented in software, firmware, special purpose digital logic, or any combination thereof.

도 4는 데이터 저장소와 연관되어 있는 이벤트를 핸들링하는 프로세스를 나타낸 것이다. 일반적으로, 데이터 저장소가 데이터 소비자로부터 변경 요청을 수신할 때, 그 변경이 등록된 데이터 소비자 전부로 전송되어 이들 소비자가 변경을 거부하거나 그 변경의 결과로서 부수 효과(다른 XML 변경)을 요청할 수 있게 해준다.4 illustrates a process for handling events associated with a data store. In general, when a data store receives a change request from a data consumer, the change is sent to all registered data consumers so that they can reject the change or request side effects (another XML change) as a result of the change. Do it.

시작 동작 이후에, 프로세스는 동작(410)으로 계속되어, 데이터 소비자가 수신하는 데 관심이 있는 임의의 이벤트(들)에 대해 등록을 한다. 이 이벤트는 데이터 저장소에 데이터를 추가하는 것, 데이터 저장소로부터 데이터를 제거하는 것, 데이터 저장소 내의 데이터에 변경을 하는 것, 기타 등등에 관한 것일 수 있다. 이 이벤트는 데이터 저장소들 중 하나 이상에 저장되어 있는 요소들에 대한 전역적 변경 또는 특정의 변경에 첨부될 수 있다. 예를 들어, 하나의 데이터 소비자는 임의의 변경이 언제 행해지는지를 알고 싶어 할 수 있는 반면에, 다른 클라이언트는 데이터 저장소 내의 한 특정의 값에 대한 변경에만 관심이 있을 수 있다.After the start operation, the process continues to operation 410 to register for any event (s) that the data consumer is interested in receiving. This event may be about adding data to the data store, removing data from the data store, making changes to the data in the data store, and so forth. This event can be attached to a global change or a specific change to elements stored in one or more of the data stores. For example, one data consumer may want to know when any change is made, while another client may only be interested in a change to one particular value in the data store.

결정 동작(420)으로 가서, 이벤트가 일어났는지에 관한 판정이 행해진다. 이 이벤트는 데이터 저장소에 대한 변경에 관한 것이다. 예를 들어, 상기한 바와 같이, 이벤트는 데이터 저장소에 대한 어떤 다른 변경을 추가, 제거 또는 그 변경을 행하는 것을 포함할 수 있다. 예를 들어, 변경은 노드를 데이터 저장소에 추가하는 것일 수 있다. 이벤트가 일어나지 않을 때, 이 프로세스는 결정 동작(420)으로 돌아간다. 이벤트가 일어나면, 프로세스는 동작(430)으로 간다.Proceeding to decision operation 420, a determination is made as to whether an event has occurred. This event is about changes to the data store. For example, as noted above, an event can include adding, removing, or making any other change to the data store. For example, the change may be adding a node to a data store. When no event occurs, the process returns to decision operation 420. If an event occurs, the process goes to operation 430.

동작(430)에서, 변경이 변경에 대해 등록을 한 데이터 소비자들 각각으로 중계된다. 일 실시예에 따르면, 각각의 데이터 소비자는 미리 정해진 순서로 통지를 받는다. 예를 들어, 이 순서는 데이터 소비자의 등록 순서에 기초할 수 있다.In operation 430, the change is relayed to each of the data consumers that registered for the change. According to one embodiment, each data consumer is notified in a predetermined order. For example, this order may be based on the registration order of the data consumer.

동작(440)으로 가서, 이벤트 통지를 수신한 데이터 소비자들 각각으로부터 응답이 획득된다. 클라이언트들 각각은 변경을 수락 또는 거부할 수 있다. 이 응답은 변경이 데이터 저장소에 커밋될 것인지를 결정한다.Going to operation 440, a response is obtained from each of the data consumers that received the event notification. Each of the clients can accept or reject the change. This response determines whether the change will be committed to the data store.

결정 동작(450)으로 가서, 임의의 데이터 소비자가 데이터 저장소에 대한 변경을 거부했는지에 관한 판정이 행해진다. 임의의 데이터 소비자에 의해 변경이 거부되었을 때, 프로세스는 블록(460)으로 가서, 변경에 응답하여 행해진 임의의 변경이 어떤 변경도 없었던 것처럼 롤백된다.Going to decision operation 450, a determination is made as to whether any data consumer has rejected the change to the data store. When a change is rejected by any data consumer, the process goes to block 460, and any changes made in response to the change are rolled back as if there were no changes.

통지받은 클라이언트들 전부가 변경을 수락하는 경우, 프로세스는 동작(470)으로 가서 변경이 선택적으로 검증되고 이어서 프로세스는 동작(480)으로 가서 변경이 적절한 데이터 저장소에 커밋된다.If all of the notified clients accept the change, the process goes to operation 470 and the change is optionally validated and the process then goes to operation 480 where the change is committed to the appropriate data store.

변경을 개시한 최초의 데이터 소비자는 이어서 변경이 수락되었다는 통지를 받는다(동작 490). 프로세스는 이어서 종료 블록으로 가서 다른 동작들을 처리하는 것으로 되돌아간다.The first data consumer that initiated the change is then notified that the change has been accepted (operation 490). The process then goes back to the end block and returns to processing other operations.

도 5는 부수 효과를 포함하는 이벤트를 핸들링하는 프로세스를 나타낸 것이다. 일반적으로, 데이터 저장소가 데이터 소비자로부터 변경 요청을 수신할 때, 그 변경은 등록된 클라이언트들 전부로 전송되어 이들이 변경을 거부하거나 변경의 결과로서 부수 효과(다른 XML 변경)를 요청할 수 있게 해준다. 예를 들어, 클라이 언트는 데이터 저장소 내의 하나의 항목에 대한 변경을 통지받을 수 있으며, 그 결과로서, 데이터 소비자는 데이터 저장소에 대해 다른 변경을 한다. 부수 효과로서 변경이 요청될 때, 이 프로세스는 도 4에 나타낸 프로세스와 약간 다르다.5 shows a process for handling events that include side effects. In general, when a data store receives a change request from a data consumer, the change is sent to all registered clients so that they can reject the change or request side effects (another XML change) as a result of the change. For example, a client can be notified of a change to one item in a data store, and as a result, the data consumer makes another change to the data store. When a change is requested as a side effect, this process is slightly different from the process shown in FIG.

시작 동작 이후에, 이 프로세스는 동작(510)으로 가서, 클라이언트가 현재 수락 또는 거부되고 있는 변경의 결과로서 데이터 저장소에 대한 부수 효과 변경을 시작한다.After the start operation, the process goes to operation 510 and initiates side effect changes to the data store as a result of the change the client is currently accepting or rejecting.

동작(520)으로 가서, 이 부수 효과 변경이 큐잉되지만 실행되지 않는다. 환언하면, 부수 효과 변경은 데이터 저장소 내에서 즉각 실행되지 않는다. 이 사실에 기초하여, 이벤트에 대한 대안은 이하의 것들을 포함한다.Going to operation 520, this minor effect change is queued but not executed. In other words, side effect changes are not immediately executed within the data store. Based on this fact, alternatives to the event include the following.

노드 동작(예를 들어, 추가, 대체)이 노드보다는 보이드(void)를 반환하도록 강요하고 그것이 동작이 아니라 요청임을 상세히 기록한다.Force a node action (eg, add, replace) to return a void rather than a node and record in detail that it is a request rather than an action. 노드 동작의 결과를 일관성있게 만든다.
방문 횟수(performance hit)가 없음
노드를 조작하고자 하는 경우 그의 AfterAdd 이벤트에서 그렇게 한다는 사실에 대한 클리어 스토리
Make the results of node operations consistent.
No performance hits
Clear story of doing so in his AfterAdd event if you want to manipulate a node
호출자가 변경을 하는 대신에 변경을 "요청"한다는 사실을 반영한다Reflects the fact that the caller "requests" the change instead of making the change. 노드 동작의 결과를 일관성있게 만든다
방문 횟수가 없음
Make the results of node actions consistent
No visits
각각의 호출자에 대한 필요한 변경을 수행하고, 이어서 호출자가 복귀할 때 이들을 실행 취소한다Make the necessary changes to each caller, then undo them when the caller returns 라이브 노드(live node)를 호출자로 반환한다Return live node to caller 이벤트에서 변경이 행해질 때 연결 해제됨을 반환한다(읽기: 아직 커밋된 노드가 아님)Returns disconnect when the change is made on the event (read: node not yet committed) 모든 경우에 변경으로부터 노드를 반환한다Return node from change in all cases OM 클라이언트에 대한 별도의 DOM을 유지한다Maintain a separate DOM for OM clients 호출자에게 라이브 노드를 반환한다Return live node to caller

결정 동작(530)으로 가서, 임의의 데이터 소비자가 데이터 저장소에 대한 최초의 변경을 거부했는지에 관한 판정이 행해진다.Going to decision operation 530, a determination is made as to whether any data consumer has rejected the first change to the data store.

임의의 데이터 소비자에 의해 변경이 거부되었을 때, 프로세스는 블록(540)으로 가서, 그 변경에 응답하여 행해진 임의의 변경 및 큐잉되어 있는 임의의 부수 효과 변경이, 어떤 변경도 일어나지 않았던 것처럼, 롤백된다.When a change is rejected by any data consumer, the process goes to block 540 and any changes made in response to the change and any queuing side effect changes queued are rolled back as if no changes had occurred. .

클라이언트가 최초의 변경을 수락했을 때, 프로세스는 동작(550)으로 가서, 변경이 선택적으로 검증되고, 이어서 프로세스는 동작(560)으로 가서, 최초의 변경이 적절한 데이터 저장소에 커밋된다.When the client accepts the first change, the process goes to operation 550, the change is optionally verified, and the process then goes to operation 560, where the first change is committed to the appropriate data store.

프로세스는 동작(570)으로 가서, 부수 효과 변경이 데이터 저장소 내에서 한번에 하나씩 실행된다. 각각의 부수 효과 변경이 이어서 임의의 등록된 클라이언트에 의해 수락 또는 거부된다. 임의의 부수 효과 변경이 거부될 때, 행해진 모든 변경이 어떤 변경도 일어나지 않은 것처럼 롤백된다.The process goes to operation 570, where minor effect changes are executed one at a time in the data store. Each minor effect change is then accepted or rejected by any registered client. When any side effect change is rejected, all changes made are rolled back as if no change occurred.

프로세스는 이어서 종료 블록으로 가서 다른 동작들을 처리하는 것으로 복귀한다.The process then goes back to the end block and returns to processing other operations.

이하는 데이터 저장소 OM을 통해 노출되는 통상의 기능 중 일부를 나타낸 예시적인 코드 세그먼트이다.The following is an example code segment showing some of the typical functionality exposed through the data store OM.

제1 예는 데이터 저장소에 스트림을 추가하는 것을 나타낸 것이다.The first example illustrates adding a stream to a data store.

Dim oStream As CustomXMLPartDim oStream As CustomXMLPart

Set oStream = Document.XMLStreams.AddSet oStream = Document.XMLStreams.Add

oStream.Load("c:\specSolution.xml")oStream.Load ("c: \specSolution.xml")

제2 예는 데이터 저장소를 찾아내는 것을 나타낸 것이다.The second example shows finding a data store.

Dim oStream As CustomXMLPartDim oStream As CustomXMLPart

Set oStream = Set oStream =

Document.XMLStreams("http://www.microsoft.com/office/12/specs")Document.XMLStreams ("http://www.microsoft.com/office/12/specs")

제3 예는 데이터 저장소에 서브트리를 추가하는 것을 나타낸 것이다.The third example illustrates adding a subtree to the data store.

oStream.SelectionNamespaces = oStream.SelectionNamespaces & oStream.SelectionNamespaces = oStream.SelectionNamespaces &

"xmlns:s='http://www.microsoft.com/office/12/specs'""xmlns: s = 'http: //www.microsoft.com/office/12/specs'"

oStream.SelectSingleNode("/s:spec/s:specBody/s:issues").AppendSubtree(oStream.SelectSingleNode ("/ s: spec / s: specBody / s: issues"). AppendSubtree (

"<s:issue><s:issueBy/><s:issueDate/><s:issueDesc/></s:issue>")"<s: issue> <s: issueBy /> <s: issueDate /> <s: issueDesc /> </ s: issue>")

일 실시예에 따르면, 이하는 API와 연관되어 있는 예시적인 함수이다.According to one embodiment, the following is an example function associated with an API.

Events on CustomXMLNodeEvents on CustomXMLNode

이벤트가 CustomXMLNode는 물론 단지 문서 레벨에서 행해질 수 있다.The event can be done at the document level as well as the CustomXMLNode.

AfterInsert(NewNode as CustomXMLNode, InUndoRedo as Boolean)AfterInsert (NewNode as CustomXMLNode, InUndoRedo as Boolean)

파라미터: NewNode: CustomXMLNode에 막 추가된 노드에 대응하는 CustomXMLNode 객체. 주의: (서브트리가 문서에 막 추가된 경우) 이 노드는 자식들을 가질 수 있다. InUndoRedo: 노드가 사용자에 의해 실행 취소/다시 실행의 일부로서 추가된 경우 TRUE를 반환하고 그렇지 않은 경우 FALSD를 반환하는 Boolean. Parameters: NewNode: The CustomXMLNode object that corresponds to the node just added to the CustomXMLNode. Note: This node can have children (if a subtree has just been added to the document). InUndoRedo: A Boolean that returns TRUE if the node was added as part of an undo / redo by the user and FALSD otherwise.

이 이벤트는 XML 노드가 현재 문서에 추가되어야 할 때마다 일어난다. 추가 동작이 XML 문서의 서브트리가 CustomXMLNode에 추가되는 것을 필요로 하는 경우, 이 이벤트는 변경에서 최상위 노드에 대해 한번 일어난다. 이 이벤트는 데이터 저장소에 메시지로 보내진 각각의 변경에 대해 한번 일어나고, 따라서 이 이벤트에 의해 표현된 변경의 부수 효과도 이벤트를 트리거한다.This event is raised whenever an XML node needs to be added to the current document. If the add operation requires the subtree of the XML document to be added to the CustomXMLNode, this event occurs once for the top node in the change. This event occurs once for each change sent as a message to the data store, so the side effect of the change represented by this event also triggers the event.

AfterDelete(OldNode as CustomXMLNode, OldParentNode as CustomXMLNode, OldNextSibling As CustomXMLNode, InUndoRedo as Boolean)AfterDelete (OldNode as CustomXMLNode, OldParentNode as CustomXMLNode, OldNextSibling As CustomXMLNode, InUndoRedo as Boolean)

파라미터: OldNode: CustomXMLPart로부터 이제 막 제거된 노드에 대응하는 CustomXMLNode 객체. 주의 #1: (서브트리가 문서로부터 제거되는 경우) 이 노드는 자식들을 가질 수 있다. 주의 #2: 이 노드는 이 노드로부터 아래로 질의가 행해지고 위로 올라갈 수 없다는 점에서 "연결 해제된" 노드가 된다 - 단독으로 존재하는 것처럼 보인다 - (즉, 이는 동일한 OwnerStream을 갖는 문서 요소이다). OldParentNode: OldNode의 이전의 부모 노드에 대응하는 CustomXMLNode 객체. OldNextSibling: OldNode의 이전의 그 다음 형제 노드에 대응하는 CustomXMLNode 객체. InUndoRedo: 노드가 사용자에 의해 실행 취소/다시 실행의 일부로서 추가된 경우 TRUE를 반환하고 그렇지 않은 경우 FALSE를 반환하는 Boolean.Parameters: OldNode: The CustomXMLNode object corresponding to the node just removed from the CustomXMLPart. Note # 1: (If the subtree is removed from the document) This node can have children. Note # 2: This node is a "disconnected" node in that it is queried down from this node and cannot go up-it appears to exist alone-(ie it is a document element with the same OwnerStream). OldParentNode: A CustomXMLNode object corresponding to the old parent node of the OldNode. OldNextSibling: CustomXMLNode object corresponding to previous next sibling node of OldNode. InUndoRedo: A Boolean that returns TRUE if the node was added as part of an undo / redo by the user and FALSE otherwise.

이 이벤트는 XML 노드가 데이터 저장소에서 현재 항목으로부터 삭제될 때마다 일어난다. 삭제 동작이 CustomXMLPart에서 XML 문서의 서브트리를 필요로 하는 경우, 변경에서 최상위 노드에 대해 한번 이 이벤트를 발생한다. 이 이벤트는 데이터 저장소에 메시지로 보내진 각각의 변동에 대해 한번 일어나며, 따라서 이 이벤트로 표현된 변경의 부수 효과도 이벤트를 트리거한다.This event occurs whenever an XML node is deleted from the current item in the data store. If the delete operation requires a subtree of XML documents in the CustomXMLPart, this event fires once for the top node in the change. This event occurs once for each change sent in a message to the data store, so the side effect of the change represented by this event also triggers the event.

AfterReplace(OldNode as CustomXMLNode, NewNode as CustomXMLNode, InUndoRedo as Boolean)AfterReplace (OldNode as CustomXMLNode, NewNode as CustomXMLNode, InUndoRedo as Boolean)

파라미터: OldNode: CustomXMLPart로부터 이제 막 제거된 노드에 대응하는 CustomXMLNode 객체. 주의 #1: (서브트리가 문서로부터 제거되는 경우) 이 노드는 자식들을 가질 수 있다. 주의 #2: 이 노드는 이 노드로부터 아래로 질의가 행해지고 위로 올라갈 수 없다는 점에서 "연결 해제된" 노드가 된다 - 단독으로 존재하는 것처럼 보인다 - (즉, 이는 동일한 OwnerStream을 갖는 문서 요소이다). NewNode: CustomXMLPart에 이제 막 추가된 노드에 대응하는 CustomXMLNode 객체. 주의: (서브트리가 문서에 추가되는 경우) 이 노드는 자식들을 가질 수 있다. InUndoRedo: 노드가 사용자에 의해 실행 취소/다시 실행의 일부로서 추가된 경우 TRUE를 반환하고 그렇지 않은 경우 FALSE를 반환하는 Boolean.Parameters: OldNode: The CustomXMLNode object corresponding to the node just removed from the CustomXMLPart. Note # 1: (If the subtree is removed from the document) This node can have children. Note # 2: This node is a "disconnected" node in that it is queried down from this node and cannot go up-it appears to exist alone-(ie it is a document element with the same OwnerStream). NewNode: CustomXMLNode object that corresponds to the node just added to the CustomXMLPart. Note: This node can have children (if a subtree is added to the document). InUndoRedo: A Boolean that returns TRUE if the node was added as part of an undo / redo by the user and FALSE otherwise.

이 이벤트는 XML 노드가 데이터 저장소에서 대체될 때마다 일어난다. 대체 동작이 CustomXMLPart에서 XML 문서의 서브트리를 필요로 하는 경우, 변경에서 최상위 노드에 대해 한번 이 이벤트를 발생한다. 이 이벤트는 데이터 저장소에 메시지로 보내진 각각의 변동에 대해 한번 일어나며, 따라서 이 이벤트로 표현된 변경의 부수 효과도 이벤트를 트리거한다.This event occurs whenever an XML node is replaced in the data store. If the replacement action requires a subtree of XML documents in the CustomXMLPart, this event fires once for the top node in the change. This event occurs once for each change sent in a message to the data store, so the side effect of the change represented by this event also triggers the event.

CustomXMLParts(): OLE 문서 속성 및 WSS 속성 스트림을 포함하는 파일에서 이용가능한 모든 데이터 저장소 항목의 집합체를 가리킨다.CustomXMLParts (): Refers to the collection of all data store items available in the file, including OLE document properties and WSS property streams.

CustomXMLPrefixMappings: 현재 부분에 대한 프리픽스 매핑 전부를 나타내는 객체.CustomXMLPrefixMappings: An object representing all of the prefix mappings for the current part.

AddNamespace(Prefix As String, NamespaceURI As String) As VoidAddNamespace (Prefix As String, NamespaceURI As String) As Void

파라미터: Prefix: 프리픽스 매핑 리스트에 추가할 프리픽스를 나타내는 String. NamespaceURI: 새로 추가된 프리픽스에 할당할 이름공간을 나타내는 String.Parameters: Prefix: a String indicating the prefix to add to the prefix mapping list. NamespaceURI: A String representing the namespace to assign to the newly added prefix.

이 항목을 질의할 때 개발자가 커스텀 이름공간/프리픽스 매핑을 추가할 수 있게 해준다. 프리픽스가 이미 관리자에 존재하는 경우, 이것은 그 프리픽스의 의미를 오버라이트하며, 다만 프리픽스가 데이터 저장소에 의해 내부적으로 추가/사 용되는 것일 때, 에러 "이 프리픽스가 이미 사용 중이며 수정될 수 없음"을 반환한다.Allows the developer to add custom namespace / prefix mappings when querying this item. If a prefix already exists in the manager, this overwrites the meaning of that prefix, except when the prefix is being added / used internally by the data store, the error "This prefix is already in use and cannot be modified". Returns.

Count As Long: 컬렉션에서의 프리픽스 매핑의 수를 반환한다.Count As Long: Returns the number of prefix mappings in the collection.

Item(Index as Long) As CustomXMLPrefixMappingItem (Index as Long) As CustomXMLPrefixMapping

파라미터: Index: 컬렉션에서 원하는 스키마의 인덱스를 나타내는 Long.Parameters: Index: Long that represents the index of the schema in the collection.

컬렉션으로부터 요청된 CustomXMLPrefixMapping을 반환한다. 이 객체의 디폴트 멤버.Returns a CustomXMLPrefixMapping requested from the collection. The default member of this object.

LookupNamespace(Prefix As String) As StringLookupNamespace (Prefix As String) As String

파라미터: Prefix: 프리픽스 매핑 리스트 내의 프리픽스를 나타내는 String. 개발자가 지정된 프리픽스에 대응하는 이름공간을 가져올 수 있게 해준다. 요청된 프리픽스에 이름공간에 할당되지 않은 경우, ""을 반환한다.Parameters: Prefix: a String representing the prefix in the prefix mapping list. Allows a developer to get a namespace that corresponds to a specified prefix. If the requested prefix is not assigned to a namespace, return "".

LookupPrefix(NamespaceURI As String) As StringLookupPrefix (NamespaceURI As String) As String

파라미터: NamespaceURI: 프리픽스 매핑 리스트 내의 프리픽스를 나타내는 String. Parameters: NamespaceURI: a String representing the prefix in the prefix mapping list.

개발자가 지정된 프리픽스에 대응하는 이름공간을 가져올 수 있게 해준다. 요청된 프리픽스에 이름공간에 할당되지 않은 경우, ""을 반환한다. 이름공간 관리자에 다수의 프리픽스가 지정되어 있는 경우, 제공된 이름공간과 일치하는 첫번째 것을 반환한다.Allows a developer to get a namespace that corresponds to a specified prefix. If the requested prefix is not assigned to a namespace, return "". If multiple prefixes are specified in the namespace manager, the first one that matches the provided namespace is returned.

CustomXMLPrefixMapping: 프리픽스 매핑을 나타내는 객체.CustomXMLPrefixMapping: An object representing prefix mapping.

Prefix As String: 이 프리픽스 매핑에 대한 프리픽스를 반환한다.Prefix As String: Returns the prefix for this prefix mapping.

NamespaceURI As String: 이 프리픽스 매핑에 대한 이름공간을 반환한다.NamespaceURI As String: Returns the namespace for this prefix mapping.

CustomXMLSchema: 스키마 컬렉션의 일부인 스키마를 나타내는 객체.CustomXMLSchema: An object that represents a schema that is part of a schema collection.

Delete As Void: 스키마 컬렉션으로부터 이 스키마를 삭제한다. 이미 검증되거나 스트림에 첨부되어 있는 컬렉션 내의 스키마에 대해 이것이 행해지면(여러 종류의 라이브 컬렉션), 에러 메시지 "스키마 컬렉션이 현재 사용 중이기 때문에, 이 스키마가 삭제될 수 없음"이라고 하여 실패한다.Delete As Void: Delete this schema from the schema collection. If this is done for a schema in a collection that has already been verified or attached to the stream (various types of live collections), it fails with the error message "This schema cannot be deleted because the schema collection is currently in use."

Location As String: 사용자의 기계 상에서의 이 스키마의 위치를 나타내는 문자열을 반환한다.Location As String: Returns a string indicating the location of this schema on the user's machine.

NamespaceURI As String: XSD에 의해 아무것도 지정되지 않은 경우 이 스키마의 타겟 이름공간 ""을 반환한다.NamespaceURI As String: Returns the target namespace "" of this schema if nothing is specified by the XSD.

Reload As Void: 디스크로부터 이 스키마를 재로드하고, 디스크 상의 이 스키마의 복사본을 리터치하여 (SL이 변경된 경우) 그의 위치를 찾아내고 그것이 여전히 유효한 스키마이도록 보장해준다. 이것이 이미 검증되거나 스트림(여러 종류의 라이브 컬렉션)에 연계되어 있는 컬렉션 내의 스키마에 대해 행해지는 경우, 에러 메시지 "스키마 컬렉션이 현재 사용 중이기 때문에 이 스키마는 재로드될 수 없음"이라고 하여 실패한다.Reload As Void: Reloads this schema from disk, relocates a copy of this schema on disk (if the SL has changed), locates it and ensures that it is still a valid schema. If this is done for a schema in a collection that has already been verified or associated with a stream (various types of live collections), it fails with the error message "This schema cannot be reloaded because the schema collection is currently in use."

CustomXMLSchemaCollection(): (스트림에 첨부되어 있고/첨부될) 스키마의 컬렉션을 나타내는 객체.CustomXMLSchemaCollection (): An object representing the collection of schemas (attached to / attached to the stream).

Add([NamespaceURI As String], [Alias As String], [FileName As String], [InstallForAllUsers As Boolean = False]) As CustomXMLSchemaAdd ([NamespaceURI As String], [Alias As String], [FileName As String], [InstallForAllUsers As Boolean = False]) As CustomXMLSchema

파라미터: NamespaceURI: 컬렉션에 추가될 스키마의 이름공간을 나타내는 String. 스키마가 스키마 라이브러리에 존재하는 경우, 그곳으로부터 그것을 검색한다. Alias: 컬렉션에 추가될 스키마의 별명을 나타내는 String. 이 별명이 SL에 존재하는 경우, 이 인수를 사용하여 그를 찾아낸다. FileName: 스키마가 발견될 수 있는 디스크 상의 위치를 나타내는 String. 이 파라미터가 지정되어 있는 경우, 스키마를 컬렉션에 추가할 뿐만 아니라 SL에도 추가한다. InstallForAllUsers: 스키마를 스키마 라이브러리에 추가하는 경우, SL 키가 (모든 사용자에 대한) HKLM에 기록되는지 (단지 현재 사용자에 대한) HKCU에 기록되는지를 나타내는 Boolean. 기본값은 False임(HKCU에 기록함).Parameters: NamespaceURI: A String representing the namespace of the schema to be added to the collection. If the schema exists in the schema library, retrieve it from there. Alias: A String representing the alias of the schema to add to the collection. If this alias exists in SL, this argument is used to find it. FileName: A String representing the location on disk where the schema can be found. If this parameter is specified, the schema is added to the collection as well as to the SL. InstallForAllUsers: Boolean indicating if the SL key is written to HKLM (for all users) or to HKCU (only for current user) when adding schemas to the schema library. Default is False (written to HKCU).

이 메서드는 개발자가 하나 이상의 스키마를 데이터 저장소에서 스트림에 추가될 스키마 컬렉션에 추가할 수 있게 해준다. 이는 이하의 일련의 파라미터로 호출될 수 있다(충돌의 경우에, 이하의 순서로 파라미터를 사용하도록 시도함): [NamespaceURI],[Alias],FileName,[InstallForAllUsers] (그 이름공간에 대해 스키마가 존재하지 않는 경우 스키마를 스키마 라이브러리에 추가함). 단지 NamespaceURI (스키마 라이브러리로부터 XSD를 탐색함). 단지 Alias (스키마 라이브러리로부터 XSD를 탐색함).This method allows a developer to add one or more schemas to the collection of schemas to be added to the stream from the data store. It can be called with the following set of parameters (in case of conflict, try to use the parameters in the following order): [NamespaceURI], [Alias], FileName, [InstallForAllUsers] (the schema for that namespace If it does not exist, add the schema to the schema library). Just NamespaceURI (search for XSD from schema library). Just Alias (search for XSD from schema library).

AddCollection(SchemaCollection As CustomXMLSchemas()) As VoidAddCollection (SchemaCollection As CustomXMLSchemas ()) As Void

파라미터: SchemaCollection: 현재 컬렉션 내로 가져오기될 스키마의 컬렉션을 나타내는 CustomXMLSchemas() 객체.Parameters: SchemaCollection: A CustomXMLSchemas () object representing the collection of schemas to be imported into the current collection.

이미 존재하는 컬렉션을 현재의 컬렉션에 추가한다. 가져오기 동안에 이름 공간들이 충돌하는 경우(예를 들어, a.xsd가 이미 "fooNamespace"에 링크되어 있지만 들어오는 컬렉션이 동일한 이름공간에 대해 b.xsd를 가지고 있는 경우), 들어오는 컬렉션이 우선한다.Appends an existing collection to the current collection. If namespaces conflict during import (for example, if a.xsd is already linked to "fooNamespace" but the incoming collection has b.xsd for the same namespace), the incoming collection takes precedence.

Count As Long: 컬렉션 내의 스키마의 수를 반환한다.Count As Long: Returns the number of schemas in the collection.

Item(Index as Variant) As CustomXMLSchemaItem (Index as Variant) As CustomXMLSchema

파라미터: Index: 컬렉션 내의 원하는 항목을 나타내는 변수. 이는 원하는 스키마의 타겟 이름공간을 나타내는 String 또는 컬렉션 내의 원하는 스키마의 인덱스를 나타내는 Long 중 어느 하나일 수 있다.Parameters: Index: a variable representing the desired item in the collection. This can be either a String representing the target namespace of the desired schema or a Long representing the index of the desired schema in the collection.

컬렉션으로부터 요청된 CustomXMLSchema을 반환한다. 이 객체의 기본 멤버.Returns a CustomXMLSchema requested from the collection. Default member of this object.

NamespaceURI(Index as Long) As StringNamespaceURI (Index as Long) As String

파라미터: Index: 컬렉션에서 스키마의 인덱스를 나타내는 Long.Parameters: Index: Long representing the index of the schema in the collection.

스키마 컬렉션의 지정된 멤버의 타겟 이름공간을 반환한다.Returns the target namespace of the specified member of the schema collection.

Validate As Boolean: 컬렉션 내의 스키마가 검증되었는지 여부를 나타내는 Boolean을 반환한다. 또한, 이것은 Include가 컬렉션 내의 각각의 스키마에 대해 순회되고 이들을 요청한 스키마에 이들을 추가할 때이다.Validate As Boolean: Returns a Boolean indicating whether the schema in the collection has been validated. Also, this is when the Include is traversed for each schema in the collection and adds them to the schema that requested them.

CustomXMLParts(): 일련의 CustomXMLPart 객체를 나타내는 컬렉션.CustomXMLParts (): a collection representing a series of CustomXMLPart objects.

Add([XML As String], [SchemaCollection as CustomXMLSchemaCollection()]) As CustomXMLPart Add ([XML As String], [SchemaCollection as CustomXMLSchemaCollection ()]) As CustomXMLPart

파라미터: XML: 새로 생성된 CustomXMLPart에 추가할 XML을 나타내는 선택적인 String. SchemaCollection: 이 스트림을 검증하는 데 사용되는 일련의 스키마 를 나타내는 선택적인 CustomDataSchemaCollection() 객체.Parameters: XML: An optional String representing the XML to add to the newly created CustomXMLPart. SchemaCollection: An optional CustomDataSchemaCollection () object that represents the set of schemas used to validate this stream.

사용자가 새로운 CustomXMLPart을 파일에 추가할 수 있게 해준다. XML 파라미터 내의 XML이 잘 형성되지 않은 경우, 실패하고 "이 스트림에 컨텐츠를 추가하기 위해서는, 그 컨텐츠가 유효하고 잘 형성된 XML이어야만 한다"는 에러를 던진다. 사용자가 SchemaCollection을 제공하는 경우, (그것이 아직 검증되지 않았다면) 그것을 검증한다. 수신된 임의의 MSXML 파싱 에러를 다시 OM 클라이언트로 던지로 스티림을 추가하지 못한다. XML 파라미터가 DOM에 로드될 수 있는지를 검사한다. 로드될 수 없는 경우, 실패하고 "스트림에 컨텐츠를 추가하기 위해서는, 그것이 유효하고 잘 형성된 XML이어야만 한다"는 에러를 던진다. 스키마 컬렉션을 DOM에 첨부하고 인스턴스 문서를 검증하려고 시도한다. 그것이 검증되지 않는 경우, 실패하고 OM 클라이언트에서 다시 수신된 XML 파싱 에러를 던지고 컬렉션에 스트림을 추가하지 않는다.Allows the user to add new CustomXMLParts to a file. If the XML in the XML parameter is not well formed, it fails and throws an error "In order to add content to this stream, the content must be valid and well formed XML". If the user provides a SchemaCollection, it validates it (if it hasn't been verified yet). Streaks cannot be added by throwing any MSXML parsing errors received back into the OM client. Check that an XML parameter can be loaded into the DOM. If it cannot be loaded, it fails and throws an error "To add content to the stream, it must be valid and well-formed XML". Attach a schema collection to the DOM and try to validate the instance document. If it is not verified, it fails and throws an XML parsing error received back from the OM client and does not add the stream to the collection.

사용자가 SchemaCollection을 제공하지 않는 경우, XML 파라미터가 DOM에 로드될 수 있는지를 검사한다. 로드될 수 없는 경우, 실패하고 "컨텐츠를 스트림에 추가하기 위해서는, 그것이 유효하고 잘 형성된 XML이어야만 한다"는 에러를 던진다. XML 파일에서 참조되는 이름공간들의 리스트를 본다. SL로부터 그 스키마들을 찾고 이들에 대한 스키마 컬렉션을 추론한다. 그 결과 얻어지는 스키마 컬렉션을 검증하려고 시도한다. 그것이 검증되지 않는 경우, 여전히 컬렉션에 스트림을 추가하지만, 어떤 스키마 컬렉션과도 연관되지 않으며 따라서 검증되지 않는다. 스키마 컬렉션을 DOM에 첨부하고 인스턴스 문서를 검증하려고 시도한다. 그것이 검증되지 않는 경우, 실패하고 OM 클라이언트에서 다시 수신된 XML 파싱 에러를 던지며, 스트림을 컬렉션에 추가하지 않는다. 그것이 검증되지 않는 경우, 여전히 스트림을 컬렉션에 추가하지만, 어떤 스트림 컬렉션과도 연관되지 않으며 따라서 검증되지 않는다. 비어 있는 SchemaCollection을 제공하는 것은 "이 스트림을 결코 검증하지 않는다"는 것을 의미하는 것으로 생각되는 명시적인 동작이 된다.If the user does not provide a SchemaCollection, check that XML parameters can be loaded into the DOM. If it cannot be loaded, it fails and throws an error "In order to add content to the stream, it must be valid and well-formed XML". View a list of namespaces referenced in the XML file. Find the schemas from the SL and infer the schema collection for them. Attempt to validate the resulting schema collection. If it is not verified, it still adds the stream to the collection, but it is not associated with any schema collection and therefore not verified. Attach a schema collection to the DOM and try to validate the instance document. If it is not verified, it fails and throws an XML parsing error received back from the OM client and does not add the stream to the collection. If it is not verified, it still adds the stream to the collection, but it is not associated with any stream collection and therefore not verified. Providing an empty SchemaCollection is an explicit behavior that is thought to mean "never validate this stream."

Count As Long: 컬렉션 내의 커스텀 데이터 스트림의 수를 반환한다.Count As Long: Returns the number of custom data streams in the collection.

Item(Index As Variant) As CustomXMLPartItem (Index As Variant) As CustomXMLPart

파라미터: Index: 이하의 2가지 유형, 컬렉션에서 원하는 CustomXMLPart의 인덱스를 나타내는 Long 또는 컬렉션에서 원하는CustomXMLPart의 루트 이름공간을 나타내는 String 중 하나일 수 있는 변수. 2개 이상의 부분이 이 루트 이름공간과 일치하는 경우, 인덱스 순서에서 첫번째 일치하는 것이 반환된다.Parameters: Index: A variable that can be one of the following two types: a Long representing the index of the desired CustomXMLPart in the collection or a String representing the root namespace of the desired CustomXMLPart in the collection. If two or more parts match this root namespace, the first match in the index order is returned.

이것은 CustomXMLParts 객체의 기본 멤버이고, 이는 요청된 객체에 대응하는 CustomXMLPart 객체를 반환한다.This is the default member of the CustomXMLParts object, which returns a CustomXMLPart object corresponding to the requested object.

SelectByID(ID As String) As CustomXMLPart SelectByID (ID As String) As CustomXMLPart

파라미터: ID: 컬렉션으로부터 반환되어야만 하는 데이터 저장소 항목에 대한 ID를 포함하는 String.Parameters: ID: a String containing the ID for the data store item that should be returned from the collection.

개발자가 그의 ID를 사용하여 데이터 저장소로부터 특정의 항목을 이용할 수 있게 해준다. 이 ID를 갖는 저장소 항목이 존재하지 않는 경우, 아무것도 반환하지 않는다.It allows a developer to use a particular item from the data store using his ID. If no repository entry with this ID exists, nothing is returned.

SelectByNamespace(NamespaceURI As String) As CustomXMLParts()SelectByNamespace (NamespaceURI As String) As CustomXMLParts ()

파라미터: NamespaceURI: 데이터 저장소의 컬렉션으로부터 원하는 항목들의 루트 이름공간을 나타내는 String.Parameters: NamespaceURI: A String representing the root namespace of the desired items from the collection of data stores.

요청된 엔트리와 일치하는 루트 이름공간을 갖는 데이터 저장소 항목들 전부를 반환한다. 이 루트 이름공간을 갖는 스트림이 존재하지 않는 경우, 비어있는 CustomXMLParts() 컬렉션을 반환한다.Returns all data store entries with a root namespace matching the requested entry. If no stream exists with this root namespace, an empty CustomXMLParts () collection is returned.

StreamAfterAdd(NewStream As CustomXMLPart)StreamAfterAdd (NewStream As CustomXMLPart)

파라미터: NewStream: 이제 막 추가된 스트림을 포함하는 CustomXMLPart 객체Parameters: NewStream: CustomXMLPart object containing the stream just added

이 이벤트는 새로운 스트림이 데이터 저장소에 추가될 때마다 일어난다. 다수의 스트림이 추가되는 경우, 이 이벤트가 각각의 새로운 스트림마다 한번씩 일어난다. (적절한 .Add 메서드를 사용하여) XML 컨텐츠를 갖는 스트림이 추가된 경우, 항목이 그 컨텐츠로 채워질 때까지 이 이벤트는 일어나지 않는다.This event occurs whenever a new stream is added to the data store. If multiple streams are added, this event occurs once for each new stream. If a stream with XML content is added (using the appropriate .Add method), this event does not occur until the item is filled with that content.

StreamBeforeDelete(OldStream As CustomXMLPart)StreamBeforeDelete (OldStream As CustomXMLPart)

파라미터: OldStream: 데이터 저장소로부터 삭제될 스트림을 포함하는 CustomXMLPart 객체Parameters: OldStream: A CustomXMLPart object containing the stream to be removed from the data store.

이 이벤트는 스트림이 데이터 저장소로부터 제거될 때마다 일어난다. 다수의 스트림이 제거되는 경우, 이 이벤트는 삭제된 각각의 스트림마다 한번씩 일어난다. 또한 이 스트림에 "삭제될 예정"이라는 플래그를 붙임으로써 그에 대한 읽기-전용 동작들(예를 들어, 노드에 대한 질의, 값의 검사, 기타 등등)이 유효하지만 쓰기 동작은 "이 동작이 삭제될 스트림에는 수행될 수 없음"이라는 에러 메시지로 실패한다. This event occurs whenever a stream is removed from the data store. If multiple streams are removed, this event occurs once for each stream deleted. You can also flag this stream as "to be deleted" so that read-only operations (e.g., querying the node, checking values, etc.) are valid, but the write operation is "deleted." Fail with the error message "Cannot be performed on stream."

CustomXMLPart: 데이터 저장소 내의 단일의 XML 스트림을 나타내는 객체CustomXMLPart: an object representing a single XML stream in the data store

AddNode([Name As String], [NamespaceURI As String], Parent As CustomXMLNode, [NextSibling As CustomXMLNode],[NodeType As msoCustomXMLNodeType], [Node Value As String]) As VoidAddNode ([Name As String], [NamespaceURI As String], Parent As CustomXMLNode, [NextSibling As CustomXMLNode], [NodeType As msoCustomXMLNodeType], [Node Value As String]) As Void

파라미터: Name: XML DOM에 추가될 노드의 기본 이름을 나타내는 String. Namespace: XML DOM에 추가될 노드의 이름공간을 나타내는 선택적인 String. 유형 msoCustomXMLNodeElement 또는 msoCustomXMLNodeAttribute의 노드를 추가하는 데 필요하며 그렇지 않은 경우에는 무시됨. Parent: 이 노드가 그 아래에 추가되어야 하는 노드를 나타내는 CustomXMLNode. 애트리뷰트를 추가하는 경우, 그 애트리뷰트가 추가되어야만 하는 엘리먼트를 표시함. NextSibling: 새로운 노드의 그 다음 형제가 되어야만 하는 노드를 나타내는 선택적인 CustomXMLNode. 지정되지 않은 경우, 이 노드는 부모 노드의 자식들의 끝에 추가된다. 유형 msoXMLNodeAttribute의 추가에 대해서는 무시됨. NextSibling이 부모의 자식이 아닌 경우, "그 다음 형제 노드가 부모 노드의 자식이 아니기 때문에 이 노드가 추가될 수 없음"이라는 에러를 반환한다. NodeType: 생성할 노드의 유형을 지정하는 선택적인 msoCustomXMLNodeType. 지정되지 않은 경우, msoCustomXMLNodeElement인 것으로 가정된다. NodeValue: 텍스트를 허용하는 노드들에 대한 노드의 값을 설정하는 데 사용되는 선택적인 String. 노드가 텍스트를 허용하지 않는 경우, 이 파라미터는 무시된다.Parameters: Name: a String representing the base name of the node to be added to the XML DOM. Namespace: an optional String representing the namespace of the node to be added to the XML DOM. Required to add a node of type msoCustomXMLNodeElement or msoCustomXMLNodeAttribute; otherwise it is ignored. Parent: CustomXMLNode that represents the node to which this node should be added below it. When adding an attribute, indicate the element to which the attribute should be added. NextSibling: an optional CustomXMLNode that represents the node that should be the next sibling of the new node. If not specified, this node is added to the end of the children of the parent node. Ignored for addition of type msoXMLNodeAttribute. If NextSibling is not a child of the parent, it returns the error "This node cannot be added because the next sibling is not a child of the parent node." NodeType: optional msoCustomXMLNodeType that specifies the type of node to generate. If not specified, it is assumed to be msoCustomXMLNodeElement. NodeValue: An optional String used to set the node's value for nodes that accept text. If the node does not allow text, this parameter is ignored.

XML 노드를 데이터 저장소 항목에 추가하는 일반적인 방법. 부모가 필요하고 NodeType의 기본값이 msoXMLNodeElement이다. 그 결과의 추가가 구조적으로 유효하지 않은 경우, "그 결과 구조적으로 유효하지 않은 데이터 스트림이 얻어지기 때문에 이 동작이 수행될 수 없음"이라는 에러로 실패한다. 이름공간이 스키마 참조 컬렉션 내에 있지 않은 경우, 실패하고 "이 요소를 추가하기 위해서는, 먼저 그의 스키마를 데이터 스트림에 첨부해야만 함"이라는 에러 메시지를 제공한다.Common way to add an XML node to a data store item. Requires parent and NodeType defaults to msoXMLNodeElement. If the addition of the result is not structurally valid, it fails with the error "This operation cannot be performed because the result is a structurally invalid data stream." If the namespace is not in the schema reference collection, it fails and gives the error message "To add this element, you must first attach its schema to the data stream."

DocumentElement As CustomXMLNodeDocumentElement As CustomXMLNode

스트림의 루트 요소를 가져온다. 스트림이 비어 있는 경우, 아무것도 반환하지 않는다.Get the root element of the stream. If the stream is empty, nothing is returned.

Delete As Void: 데이터 저장소로부터 현재의 CustomXMLPart를 삭제한다. 사용자가 핵심 속성 부분을 삭제하려고 시도하는 경우, "Office가 제대로 기능하기 위해 이 커스텀 XML 부분이 필요하고 삭제될 수 없다"는 에러로 실패한다.Delete As Void: Deletes the current CustomXMLPart from the data store. If the user tries to delete the core attribute part, it fails with the error "This custom XML part is required for Office to function properly and cannot be deleted".

ID As String: 현재의 CustomXMLPart에 할당된 GUID를 포함하는 문자열을 반환한다.ID As String: Returns a string containing the GUID assigned to the current CustomXMLPart.

Load(FilePath As String) As BooleanLoad (FilePath As String) As Boolean

파라미터: FilePath: 이 CustomXMLPart에 대한 XML이 그로부터 로드되어야만 하는 사용자의 기계(또는 네트워크, 기타 등등) 상의 파일에 대응하는 String 객체.Parameters: FilePath: a String object corresponding to a file on the user's machine (or network, etc.) for which XML for this CustomXMLPart should be loaded from it.

템플릿 저작자가 그의 기계 상의 이미 존재하는 파일로부터 CustomXMLPart를 채울 수 있게 해준다. 로드가 성공적인 경우 TRUE를 반환하고, 그렇지 않은 경우 (구조 시행(structure enforcement)이 온되고 XML이 구조적으로 유효하지 않은 경우 또는 XML이 유효하지 않고 및/또는 잘 형성되지 않은 경우를 포함함) FALSE를 반환한다. DOM이 로드되면, "이 DOM은 2번 로드될 수 없음"이라고 하여 실패한다.Allows template authors to populate CustomXMLParts from existing files on his machine. Returns TRUE if the load was successful, otherwise FALSE (including when structure enforcement is on and the XML is not structurally valid or the XML is invalid and / or poorly formed). Returns. When the DOM is loaded, it fails with "This DOM cannot be loaded twice."

LoadXML(XML As String) As BooleanLoadXML (XML As String) As Boolean

파라미터: XML: 이 CustomXMLPart에 로드되어야만 하는 XML에 대응하는 String 객체.Parameters: XML: a String object corresponding to the XML that should be loaded into this CustomXMLPart.

템플릿 저작자가 XML의 문자열로부터 CustomXMLPart를 채울 수 있게 해준다. 로드가 성공적이면 TRUE를 반환하고, 그렇지 않으면(구조적 시행이 온되어 있고 XML이 구조적으로 유효하지 않은 경우 또는 XML이 유효하지 않고 및/또는 잘 형성되지 않은 경우를 포함함) FALSE를 반환한다. DOM이 로드되면, "이 DOM이 2번 로드될 수 없음"이라고 하여 실패한다.Allows template authors to populate CustomXMLParts from strings of XML. Returns TRUE if the load was successful, otherwise returns FALSE (including if structural enforcement is on and the XML is not structurally valid or if the XML is invalid and / or poorly formed). When the DOM is loaded, it fails with "This DOM cannot be loaded twice".

NamespaceURI As String: 현재의 CustomXMLPart의 루트 노드에 대한 전체 이름공간 URI를 포함하는 문자열을 반환한다. 스트림이 비어 있는 경우(생성되지만 추가된 노드가 없는 경우), ""을 반환한다.NamespaceURI As String: Returns a string containing the full namespace URI for the root node of the current CustomXMLPart. If the stream is empty (created but no nodes have been added), it returns "".

SchemaCollection As CustomnXMLSchemaCollection(): 이 스트림에 첨부된 일련의 스키마를 나타내는 CustomXMLSchemaCollection() 컬렉션을 가져온다/설정한다. 사용자가 SchemaCollection을 제공하는 경우, (아직 검증되지 않은 경우) 이를 검증한다. 수신된 임의의 파싱 에러를 다시 클라이언트로 던지고 스트림을 추가하지 못하며, 스키마 컬렉션을 DOM에 첨부하고 인스턴스 문서를 검증하려고 시도한다. 그것이 검증되지 않는 경우, 실패하고 클라이언트에서 다시 수신된 파싱 에 러를 던지고 스트림에 대한 스키마 컬렉션을 변경하지 않는다.SchemaCollection As CustomnXMLSchemaCollection (): Gets / sets the CustomXMLSchemaCollection () collection that represents the set of schemas attached to this stream. If the user provides a SchemaCollection, verify it (if not yet verified). It throws any parsing errors received back into the client and fails to add a stream, attaches a schema collection to the DOM, and attempts to validate the instance document. If it is not verified, it fails and throws a parse error received back from the client and does not change the schema collection for the stream.

NamespaceManager As CustomXMLPrefixMappings()NamespaceManager As CustomXMLPrefixMappings ()

현재의 CustomXMLPart에 대해 사용되는 일련의 이름공간 프리픽스 매핑을 가져온다. 문서가 열릴 때, 이것은 자동적으로 데이터 저장소 항목에 내장된 프리픽스 매핑의 컨텐츠로 채워지지만, 템플릿 저작자에 의해 편집/추가/삭제될 수 없다. 그렇지만, 일 실시예에 따르면, 이 파라미터에 대한 변경이 문서와 함께 저장되지 않는다. Gets a set of namespace prefix mappings used for the current CustomXMLPart. When the document is opened, it is automatically populated with the content of the prefix mapping embedded in the data store item, but cannot be edited / added / deleted by the template author. However, according to one embodiment, changes to this parameter are not stored with the document.

SelectNodes(XPath As String) As CustomXMLNodes()SelectNodes (XPath As String) As CustomXMLNodes ()

파라미터: XPath: DOM과 대조하여 평가할 XPath 표현식을 포함하는 String. 이 XPath에 대한 프리픽스 매핑이 연관된 이름공간 관리자로부터 검색된다. XPath가 리졸브되지 않는 경우, 어느 에러가 발생되는지 간에 통과한다.Parameters: XPath: A String containing the XPath expression to evaluate against the DOM. The prefix mapping for this XPath is retrieved from the associated namespace manager. If the XPath is not resolved, it passes through which error occurs.

이 메서드는 개발자가 DOM 내부로부터 일련의 노드를 다시 가져올 수 있게 해준다.This method allows the developer to get back a set of nodes from inside the DOM.

SelectSingleNode(XPath As String) As CustomXMLNodeSelectSingleNode (XPath As String) As CustomXMLNode

파라미터: XPath: DOM과 대조하여 평가할 XPath 표현식을 포함하는 String. 이 XPath에 대한 프리픽스 매핑이 연관된 이름공간 관리자로부터 검색된다. XPath가 리졸브되지 않는 경우, 어느 에러가 발생하든 통과한다. Parameters: XPath: A String containing the XPath expression to evaluate against the DOM. The prefix mapping for this XPath is retrieved from the associated namespace manager. If the XPath is not resolved, then any error occurs.

이 메서드는 개발자가 DOM 내부로부터 하나의 노드를 다시 가져올 수 있게 해준다.This method allows the developer to get back a node from inside the DOM.

XML As String: 현재의 CustomXMLPart에 대한 XML 표현을 반환한다.XML As String: Returns an XML representation of the current CustomXMLPart.

NodeAfterInsert(NewNode as CustomXMLNode, InUndoRedo as Boolean)NodeAfterInsert (NewNode as CustomXMLNode, InUndoRedo as Boolean)

파라미터: NewNode: CustomXMLPart에 이제막 추가된 노드에 대응하는 CustomXMLNode 객체. (서브트리가 이제 막 문서에 추가된 경우) 이 노드는 자식들을 가질 수 있다. InUndoRedo: 노드가 사용자에 의한 실행 취소/다시 실행 동작의 일부로서 추가된 경우, TRUE를 반환하고 그렇지 않은 경우에 FALSE를 반환하는 Boolean.Parameters: NewNode: The CustomXMLNode object that corresponds to the node just added to the CustomXMLPart. This node can have children (if the subtree is just added to the document). InUndoRedo: A Boolean that returns TRUE if the node was added as part of an undo / redo action by the user, and FALSE otherwise.

이 이벤트는 XML 노드가 현재의 문서에 추가되려고 할 때마다 일어난다. 추가 동작이 XML 문서의 서브트리가 CustomXMLPart 내에 추가되는 것을 필요로 하는 경우, 변경에서의 최상위 노드에 대해 한번 이 이벤트를 발생한다. 이 이벤트는 데이터 저장소에 메시지로 보내진 각각의 변경에 대해 한번 발생되며, 따라서 이 이벤트에 의해 나타내어진 변경의 부수 효과도 역시 이벤트를 트리거한다.This event is raised whenever an XML node is about to be added to the current document. Raise this event once for the top node in the change if the add operation requires that the subtree of the XML document be added within the CustomXMLPart. This event is fired once for each change sent as a message to the data store, so the side effect of the change represented by this event also triggers the event.

NodeAfterDelete(OldNode as CustomXMLNode, OldParentNode as CustomXMLNode, OldNextSibling As CustomXMLNode, InUndoRedo as Boolean).NodeAfterDelete (OldNode as CustomXMLNode, OldParentNode as CustomXMLNode, OldNextSibling As CustomXMLNode, InUndoRedo as Boolean).

파라미터: OldNode: CustomXMLPart로부터 이제 막 제거된 노드에 대응하는 CustomXMLNode 객체. 주의 #1: (서브트리가 문서로부터 제거되고 있는 경우) 이 노드는 자식들을 가질 수 있다. 주의 #2: 노드로부터 아래로 질의가 행해질 수 있지만 위로 가지 않는다는 점에서 이 노드가 "연결 해제된" 노드가 된다 - 이 노드가 단독으로 존재하는 것처럼 보인다 (즉, 이는 동일한 OwnerStream을 갖는 문서 요소이다). OldParentNode: OldNode의 이전의 부모 노드에 대응하는 CustomXMLNode 객체. OldNextSibling: OldNode의 이전의 그 다음 형제에 대응하는 CustomXMLNode 객체. InUndoRedo: 사용자에 의해 실행 취소/다시 실행 동작의 일부로서 노드가 추가된 경우 TRUE를 반환하고 그렇지 않은 경우에 FALSE를 반환하는 BooleanParameters: OldNode: The CustomXMLNode object corresponding to the node just removed from the CustomXMLPart. Note # 1: This node can have children (if the subtree is being removed from the document). Note # 2: The query can be made down from the node, but in the sense that it does not go up, this node becomes a "disconnected" node-this node appears to exist alone (ie it is a document element with the same OwnerStream). ). OldParentNode: A CustomXMLNode object corresponding to the old parent node of the OldNode. OldNextSibling: CustomXMLNode object corresponding to the previous next sibling of OldNode. InUndoRedo: A Boolean that returns TRUE if the node was added as part of an undo / redo action by the user and FALSE otherwise.

XML 노드가 데이터 저장소에서 현재의 항목으로부터 삭제될 때마다 이 이벤트가 발생된다. 삭제 동작이 CustomXMLPart 내의 XML 문서의 서브트리를 수반하는 경우, 변경에서의 최상위 노드에 대해 한번 이 이벤트를 발생한다. 이 이벤트는 데이터 저장소에 메시지로 보내진 각각의 변경마다 한번씩 발생되며, 따라서 이 이벤트에 의해 표현된 변경의 부수 효과도 이벤트를 트리거한다.This event is raised whenever an XML node is deleted from the current item in the data store. If the delete operation involves a subtree of the XML document in the CustomXMLPart, this event is fired once for the top node in the change. This event is fired once for each change sent as a message to the data store, so the side effect of the change represented by this event also triggers the event.

NodeAfterReplace(OldNode as CustomXMLNode, NewNode as CustomXMLNode, InUndoRedo as Boolean)NodeAfterReplace (OldNode as CustomXMLNode, NewNode as CustomXMLNode, InUndoRedo as Boolean)

파라미터: OldNode: CustomXMLPart로부터 이제 막 제거된 노드에 대응하는 CustomaXMLNode 객체. 주의 #1 : (서브트리가 문서로부터 제거되고 있는 경우) 이 노드는 자식들을 가질 수 있다. 주의 #2: 질의가 이 노드로부터 아래로 행해질 수 있지만 위로 갈 수 없다는 점에서 이 노드는 "연결 해제된" 노드가 된다 - 이는 단독으로 존재하는 것처럼 보인다 (즉, 이는 동일한 OwnerStream을 갖는 문서 요소이다). NewNode: CustomXMLPart에 이제 막 추가된 노드에 대응하는 CustomXMLNode 객체. 주의: (서브트리가 문서에 이제 막 추가된 경우) 이 노드는 자식들을 가질 수 있다. InUndoRedo: 노드가 사용자에 의한 실행 취소/다시 실행 동작의 일부로서 추가된 경우 TRUE를 반환하고 그렇지 않은 경우 FALSE를 반환하는 Boolean.Parameters: OldNode: The CustomaXMLNode object corresponding to the node just removed from the CustomXMLPart. Note # 1: This node can have children (if the subtree is being removed from the document). Note # 2: This node becomes a "disconnected" node in that queries can be made down from this node but not up-it appears to exist alone (ie it is a document element with the same OwnerStream). ). NewNode: CustomXMLNode object that corresponds to the node just added to the CustomXMLPart. Note: This node can have children (if the subtree has just been added to the document). InUndoRedo: A Boolean that returns TRUE if the node was added as part of an undo / redo action by the user and FALSE otherwise.

이 이벤트는 데이터 저장소에서 XML 노드가 대체될 때마다 발생된다. 대체 동작이 CustomXMLPart에서의 XML 문서의 서브트리를 필요로 하는 경우, 이 이벤트 는 변경에서의 최상위 노드에 대해 한번 발생된다. 이 이벤트는 데이터 저장소에 메시지로 보내진 각각의 변경마다 한번씩 발생되며, 따라서 이 이벤트로 표현되는 변경의 부수 효과도 이벤트를 트리거한다.This event is raised whenever an XML node is replaced in the data store. If the fallback action requires a subtree of the XML document in the CustomXMLPart, this event is fired once for the top node in the change. This event is fired once for each change sent as a message to the data store, so the side effect of the change represented by this event also triggers the event.

CustomXMLNodes(): 현재의 문서 내의 일련의 CustomXMLNode 객체를 나타내는 컬렉션.CustomXMLNodes (): a collection representing a set of CustomXMLNode objects in the current document.

Count As Long: 컬렉션 내의 CustomXMLNode의 수를 반환한다.Count As Long: Returns the number of CustomXMLNodes in the collection.

Item(Index as Long) As CustomXMLNodeItem (Index as Long) As CustomXMLNode

파라미터: Index: 컬렉션 내의 원하는 CustomXMLNode의 인덱스를 나타내는 Long.Parameters: Index: a Long indicating the index of the desired CustomXMLNode in the collection.

이것은 CustomXMLNode 객체의 기본 멤버이고, 이는 컬렉션에서의 요청된 항목에 대응하는 CustomXMLNode 객체를 반환한다.This is the default member of the CustomXMLNode object, which returns a CustomXMLNode object that corresponds to the requested item in the collection.

CustomXMLNodeCustomXMLNode

AppendChildNode([Name As String], [NamespaceURI As String], [NodeType As msoCustomXMLNodeType],[Node Value As String]) As VoidAppendChildNode ([Name As String], [NamespaceURI As String], [NodeType As msoCustomXMLNodeType], [Node Value As String]) As Void

파라미터: Name: XML DOM에 추가될 요소의 기본 이름을 나타내는 선택적인 String. Namespace: XML DOM에 추가될 요소의 이름공간을 나타내는 선택적인 String. 유형 msoCustomXMLNodeElement 또는 msoCustomXMLNodeAttribute의 노드를 추가하기 위해 필요하며, 그렇지 않은 경우 무시된다. NodeType: 생성할 노드의 유형을 지정하는 선택적인 msoCustomXMLNodeType. 지정되지 않은 경우, msoCustomXMLNodeElement인 것으로 가정된다. NodeValue: 텍스트를 허용하는 노드 들에 대한 노드의 값을 설정하는 데 사용되는 선택적인 String. 노드가 텍스트를 허용하지 않는 경우, 이 파라미터는 무시된다.Parameters: Name: optional String representing the base name of the element to be added to the XML DOM. Namespace: an optional String representing the namespace of the element to be added to the XML DOM. Required to add a node of type msoCustomXMLNodeElement or msoCustomXMLNodeAttribute, otherwise it is ignored. NodeType: optional msoCustomXMLNodeType that specifies the type of node to generate. If not specified, it is assumed to be msoCustomXMLNodeElement. NodeValue: An optional String used to set the node's value for nodes that accept text. If the node does not allow text, this parameter is ignored.

컨텍스트 노드가 유형 msoXMLNodeElement인 경우, 개발자가 트리에서의 컨텍스트 엘리먼트 아래에 마지막 자식으로서 단일의 노드를 추가할 수 있게 해준다. 그렇지 않은 경우, 이 메서드는 "주석, 처리 명령어 또는 애트리뷰트에 자식을 첨부할 수 없음"이라는 에러로 실패한다.If the context node is of type msoXMLNodeElement, it allows the developer to add a single node as the last child under the context element in the tree. Otherwise, this method fails with the error "Cannot attach child to comment, processing instruction or attribute."

또한 추가될 노드가 이미 존재하는 애트리뷰트인 경우를 차단한다 "동일한 이름의 애트리뷰트가 이미 현재의 엘리먼트에 존재함".It also blocks the case where the node to be added is an already existing attribute. "An attribute with the same name already exists in the current element."

AppendChildSubtree(XML As String) As VoidAppendChildSubtree (XML As String) As Void

파라미터: XML: XML DOM에 추가될 서브트리를 나타내는 String. 이 XML은 잘 형성된 XML 문서(이름공간 선언, 단일 루트 노드, 기타 등등을 포함함)이어야만 한다. 그렇지 않은 경우, "XML 서브트리를 당신의 문서에 추가하기 위해서는, 그것이 유효하고 잘 형성된 XML을 포함해야만 한다"는 에러로 실패한다.Parameters: XML: A String representing the subtree to be added to the XML DOM. This XML must be a well-formed XML document (including namespace declarations, single root nodes, etc.). Otherwise, it fails with the error "In order to add an XML subtree to your document, it must contain valid and well-formed XML".

컨텍스트 노드가 유형 msoXMLNodeElement인 경우, 개발자가 기존의 잘 형성된 XML 서브트리를 DOM에서의 컨텍스트 엘리먼트 아래에 마지막 자식으로서 추가할 수 있게 해준다. 그렇지 않은 경우, "주석, 처리 명령어 또는 애트리뷰트에 자식을 첨부할 수 없음"이라는 에러로 실패한다.If the context node is of type msoXMLNodeElement, it allows the developer to add an existing well-formed XML subtree as the last child under the context element in the DOM. Otherwise, it fails with the error "Cannot attach child to comment, processing instruction or attribute".

Attributes As CustomXMLNodes(): 현재 엘리먼트에 관한 애트리뷰트를 나타내는 CustomXMLNodes 컬렉션을 반환한다.Attributes As CustomXMLNodes (): returns a Collection of CustomXMLNodes representing the attributes on the current element.

BaseName As String: 이것은 CustomXMLNode의 기본 멤버이다. 이는 이름공 간 프리픽스를 갖지 않는 노드의 기본 이름이 DOM에 존재하는 경우 이를 반환한다.BaseName As String: This is the base member of the CustomXMLNode. This returns the base name of a node that does not have a name space prefix if it exists in the DOM.

ChildNodes As CustomXMLNodes: 현재 노드의 자식인 엘리먼트들 전부를 포함하는 CustomXMLNodes 컬렉션을 반환한다.ChildNodes As CustomXMLNodes: Returns a Collection of CustomXMLNodes containing all of the elements that are children of the current node.

Delete As Void: XML DOM으로부터 현재 노드 (있는 경우, 그의 자식들 전부를 포함함)를 삭제한다. 그 결과의 삭제가 구조적으로 유효하지 않은 경우, "이 결과 구조적으로 유효하지 않은 DOM이 얻어지기 때문에 이 동작이 수행될 수 없음"이라는 에러 메시지로 실패한다.Delete As Void: Deletes the current node (including all its children, if present) from the XML DOM. If the deletion of the result is not structurally valid, it fails with the error message "This operation cannot be performed because this results in a structurally invalid DOM."

FirstChild As CustomXMLNode: 현재 노드의 첫번째 자식 엘리먼트에 대응하는 CustomXMLNode 객체를 반환한다. 이 노드가 엘리먼트 자식을 갖지 않는 경우(또는 그것이 유형 msoCustomXMLNodeElement 자체가 아닌 경우), 아무것도 반환하지 않는다.FirstChild As CustomXMLNode: Returns a CustomXMLNode object corresponding to the first child element of the current node. If this node has no element children (or it is not of type msoCustomXMLNodeElement itself), nothing is returned.

HasChildNodes As Boolean: 현재 노드가 자식 엘리먼트 노드를 갖는 경우 True이고 그렇지 않은 경우 False인 Boolean을 반환한다. 이것은 CustomXMLNode이 NodeType msoCustomXMLNodeElement가 아닐 때 false를 반환한다.HasChildNodes As Boolean: Returns a Boolean that is true if the current node has child element nodes; otherwise, False. This returns false when the CustomXMLNode is not a NodeType msoCustomXMLNodeElement.

InsertNodeBefore([Name As String], [NamespaceURI As String], [NodeType As msoCustomXMLNodeType], [NodeValue As String], [NextSibling as CustomXMLNode]) As VoidInsertNodeBefore ([Name As String], [NamespaceURI As String], [NodeType As msoCustomXMLNodeType], [NodeValue As String], [NextSibling as CustomXMLNode]) As Void

파라미터: Name: XML DOM에 추가될 엘리먼트의 기본 이름을 나타내는 String. Namespace: XML DOM에 추가될 엘리먼트의 이름공간을 나타내는 선택적인 String. 유형 msoCustomXMLNodeElement 또는 msoCustomXMLNodeAttribute의 노드를 추가하기 위해 필요하며, 그렇지 않은 경우 무시된다. NodeType: 생성할 노드의 유형을 지정하는 선택적인 msoCustomXMLNodeType. 지정되지 않은 경우, msoCustomXMLNodeElement인 것으로 가정된다. NodeValue: 텍스트를 허용하는 노드들에 대한 노드의 값을 설정하는 데 사용되는 선택적인 String. 노드가 텍스트를 허용하지 않는 경우, 이 파라미터가 무시된다. NextSibling: 그 앞에 새로운 XML 엘리먼트가 트리에 추가되어야 하는 노드를 지정하는 선택적인 CustomXMLNode 객체.Parameters: Name: a String representing the base name of the element to be added to the XML DOM. Namespace: an optional String representing the namespace of the element to be added to the XML DOM. Required to add a node of type msoCustomXMLNodeElement or msoCustomXMLNodeAttribute, otherwise it is ignored. NodeType: optional msoCustomXMLNodeType that specifies the type of node to generate. If not specified, it is assumed to be msoCustomXMLNodeElement. NodeValue: An optional String used to set the node's value for nodes that accept text. If the node does not allow text, this parameter is ignored. NextSibling: An optional CustomXMLNode object that specifies the node before which new XML elements should be added to the tree.

새로운 자식 노드를 지정된 위치에서 트리에 삽입한다. 유형 msoCustomXMLNodeElement, msoCustomXMLNodeComment, 또는 msoCustomXMLNodeProcessingInstruction의 노드를 추가할 때 BeforeNode가 존재하지 않는 경우, 이 노드는 리스트의 끝에 추가된다. 유형 msoCustomXMLNodeAttribute에 대해 추가되는 경우, 이는 무시된다. NextSibling이 컨텍스트 노드의 자식이 아닌 경우, 메서드는 "그 다음 형제 엘리먼트가 컨텍스트 엘리먼트의 자식이어야만 하기 때문에 이 XML 노드가 추가될 수 없음"이라는 에러로 실패한다. 그 결과의 추가가 구조적으로 유효하지 않은 경우(또한 스키마 시행이 온되는 경우), "이 결과 구조적으로 유효하지 않은 DOM이 얻어지기 때문에 이 동작이 수행될 수 없음"이라는 에러 메시지로 실패한다. 또한, 추가될 노드가 이미 존재하는 애트리뷰트인 경우를 차단한다 "동일한 이름의 애트리뷰트가 이미 현재의 엘리먼트에 존재한다".Inserts a new child node into the tree at the specified position. If a BeforeNode does not exist when adding a node of type msoCustomXMLNodeElement, msoCustomXMLNodeComment, or msoCustomXMLNodeProcessingInstruction, this node is added to the end of the list. If added for type msoCustomXMLNodeAttribute, it is ignored. If NextSibling is not a child of the context node, the method fails with the error "This XML node cannot be added because the next sibling element must be a child of the context element." If the addition of the result is structurally invalid (and also schema enforcement is on), it fails with the error message "This operation cannot be performed because this results in a structurally invalid DOM." It also blocks the case where the node to be added is an already existing attribute. "An attribute of the same name already exists in the current element."

InsertSubtreeBefore(XML As String, [NextSibling as CustomXMLNode]) As VoidInsertSubtreeBefore (XML As String, [NextSibling as CustomXMLNode]) As Void

파라미터: XML: XML DOM에 추가될 서브트리를 나타내는 String. 이 XML은 (이름공간 선언, 단일의 루트 노드, 기타 등등을 포함하는) 잘 형성된 XML 문서이어야만 한다. 그렇지 않은 경우, "XML 서브트리를 문서에 추가하기 위해서는, 그것이 유효하고 잘 형성된 XML을 포함하고 있어야만 함"이라는 에러로 실패한다. NextSibling: 새로운 XML 엘리먼트가 그 앞에서 트리에 추가되어야만 하는 노드를 지정하는 선택적인 CustomXMLNode 객체Parameters: XML: A String representing the subtree to be added to the XML DOM. This XML must be a well-formed XML document (including namespace declarations, a single root node, etc.). Otherwise, it fails with the error "In order to add an XML subtree to a document, it must contain valid and well-formed XML." NextSibling: an optional CustomXMLNode object that specifies the node where the new XML element should be added to the tree before it

지정된 XML 서브트리를 지정된 위치에서 자식 노드세트에 삽입한다. NextSibling이 컨텍스트 노드의 자식이 아닌 경우, 이 메서드는 "그 다음 형제가 컨텍스트 엘리먼트의 자식이어야만 하기 때문에 이 XML 노드가 추가될 수 없음"이라고 하여 실패한다. 그 결과의 추가가 구조적으로 유효하지 않은 경우, "이 결과 구조적으로 유효하지 않은 DOM이 얻어지기 때문에 이 동작이 수행될 수 없음"이라는 에러 메시지로 실패한다.Inserts the specified XML subtree into the set of child nodes at the specified position. If NextSibling is not a child of the context node, this method fails with "This XML node cannot be added because the next sibling must be a child of the context element." If the addition of the result is not structurally valid, it fails with the error message "This operation cannot be performed because this results in a structurally invalid DOM."

LastChild As CustomXMLNode: 현재 노드의 마지막 자식 엘리먼트에 대응하는 CustomXMLNode 객체를 반환한다. 노드가 자식 엘리먼트를 갖지 않는 경우(또는 유형 msoCustomXMLNodeElement 자체가 아닌 경우), 아무것도 반환하지 않는다.LastChild As CustomXMLNode: Returns a CustomXMLNode object corresponding to the last child element of the current node. If the node has no child elements (or not of type msoCustomXMLNodeElement itself), nothing is returned.

NamespaceURI As String [읽기 전용]NamespaceURI As String [read-only]

현재 노드의 이름공간에 대응하는 String을 반환한다. 노드가 유형 msoCustomXMLNodeComment, msoCustomXMLNodeProcessingInstruction인 경우, ""을 반환한다.Returns a String that corresponds to the namespace of the current node. If the node is of type msoCustomXMLNodeComment, msoCustomXMLNodeProcessingInstruction, it returns "".

NextSibling As CustomXMLNode: 현재 노드의 그 다음 형제 노드(엘리먼트, 주석, 또는 처리 명령어)를 반환한다. 노드가 그의 레벨에서 마지막 형제인 경우, 아무것도 반환하지 않는다.NextSibling As CustomXMLNode: Returns the next sibling node (element, comment, or processing instruction) of the current node. If the node is the last sibling in its level, nothing is returned.

NodeType As msoCustomXMLNodeType: 현재 노드의 유형을 나타내는 msoCustomXMLNodeType 상수를 반환한다.NodeType As msoCustomXMLNodeType: Returns the msoCustomXMLNodeType constant indicating the type of the current node.

Node Value As String: 텍스트만을 포함하는 노드(즉, 텍스트 노드, 주석, 처리 명령어, 애트리뷰트) 내부에 텍스트를 가져온다/설정한다. 엘리먼트의 경우, "엘리먼트 노드에 대해 노드 값을 설정할 수 없음"이라고 하여 실패한다.Node Value As String: Gets / sets text inside nodes that contain only text (ie text nodes, comments, processing instructions, attributes). For an element, it fails with "Unable to set node value for element node".

OwnerDocument As Variant: 이 노드와 연관된 워드 문서를 나타내는 문서/워크북/프리젠테이션 객체를 반환한다.OwnerDocument As Variant: Returns a document / workbook / presentation object that represents the word document associated with this node.

OwnerStream As CustomXMLPart: 이 노드와 연관된 데이터 저장소 항목을 나타내는 CustomXMLPart 객체를 반환한다.OwnerStream As CustomXMLPart: Returns a CustomXMLPart object representing the data store item associated with this node.

PreviousSibling As CustomXMLNode: 현재 노드의 이전의 형제 노드(엘리먼트, 주석 또는 처리 명령어)를 반환한다. 이 노드가 그의 레벨에서 첫번째 형제인 경우, 아무것도 반환하지 않는다.PreviousSibling As CustomXMLNode: Returns the previous sibling node (element, comment or processing instruction) of the current node. If this node is the first sibling in its level, nothing is returned.

ParentNode As CustomXMLNode: 현재 노드의 부모 엘리먼트 노드를 반환한다. 이 노드가 루트 레벨에 있는 경우, 아무것도 반환하지 않는다.ParentNode As CustomXMLNode: Returns the parent element node of the current node. If this node is at the root level, nothing is returned.

RemoveChild(Child As CustomXMLNode) As VoidRemoveChild (Child As CustomXMLNode) As Void

파라미터: Child: 삭제될 컨텍스트 노드의 자식 노드를 나타내는 CustomXMLNode 객체. 이 노드가 컨텍스트 노드의 자식이 아닌 경우, "현재 엘리먼 트의 자식이 아니기 때문에 이 노드가 삭제될 수 없음"이라는 에러 메시지로 실패한다.Parameters: Child: A CustomXMLNode object that represents the child nodes of the context node to be removed. If this node is not a child of the context node, it fails with the error message "This node cannot be deleted because it is not currently a child of the element."

스트림으로부터 지정된 자식 노드를 제거한다. 그 결과의 DOM이 구조적으로 유효하지 않은 경우, "구조적으로 유효하지 않은 DOM이 생기기 때문에 이 동작이 수행될 수 없음"이라는 에러 메시지로 실패한다.Remove the specified child node from the stream. If the resulting DOM is not structurally valid, it fails with the error message "This operation cannot be performed because a DOM that is structurally invalid" is encountered.

ReplaceChildNode(Name As String, [Namespace As String], [NodeType As msoCustomXMLNodeType], [Node Value As String], OldNode As CustomXMLNode) As VoidReplaceChildNode (Name As String, [Namespace As String], [NodeType As msoCustomXMLNodeType], [Node Value As String], OldNode As CustomXMLNode) As Void

파라미터: OldNode: 대체될 자식 노드를 나타내는 CustomXMLNode. Name: XML DOM에 추가될 엘리먼트의 기본 이름을 나타내는 String. Namespace: XML DOM에 추가될 엘리먼트의 이름공간을 나타내는 선택적인 String. 유형 msoCustomXMLNodeElement 또는 msoCustomXMLNodeAttribute의 노드를 추가하기 위해 필요하며, 그렇지 않은 경우 무시된다. NodeType: 생성할 노드의 유형을 지정하는 선택적인 msoCustomXMLNodeType. 지정되지 않은 경우, msoCustomXMLNodeElement인 것으로 가정된다. NodeValue: 텍스트를 허용하는 노드들에 대한 노드의 값을 설정하는 데 사용되는 선택적인 String. 이 노드가 텍스트를 허용하지 않는 경우, 이 파라미터가 무시된다.Parameters: OldNode: CustomXMLNode representing the child node to be replaced. Name: A String representing the base name of the element to be added to the XML DOM. Namespace: an optional String representing the namespace of the element to be added to the XML DOM. Required to add a node of type msoCustomXMLNodeElement or msoCustomXMLNodeAttribute, otherwise it is ignored. NodeType: optional msoCustomXMLNodeType that specifies the type of node to generate. If not specified, it is assumed to be msoCustomXMLNodeElement. NodeValue: An optional String used to set the node's value for nodes that accept text. If this node does not allow text, this parameter is ignored.

스트림으로부터 지정된 자식 노드(및 그의 서브트리)를 제거하고, 이를 동일한 위치에 지정된 노드로 대체한다. OldNode가 컨텍스트 노드의 자식이 아닌 경우, "OldNode가 현재 노드의 자식이어야 함"이라는 에러 메시지로 실패한다. 그 결과의 대체가 구조적으로 유효하지 않은 경우, "구조적으로 유효하지 않은 DOM이 생기기 때문에 이 동작이 수행될 수 없음"이라는 에러 메시지로 실패한다. 또한, 추가될 노드가 이미 존재하는 애트리뷰트인 경우를 차단한다 "동일한 이름의 애트리뷰트가 이미 현재 엘리먼트에 존재한다".Removes the specified child node (and its subtrees) from the stream and replaces it with the node specified at the same location. If OldNode is not a child of the context node, it fails with the error message "OldNode must be a child of the current node." If the replacement of the result is not structurally valid, it fails with the error message "This operation cannot be performed because a DOM that is not structurally valid" is encountered. It also blocks the case where the node to be added is an already existing attribute. "An attribute with the same name already exists in the current element."

ReplaceChildSubtree(XML As String, OldNode As CustomXMLNode) As VoidReplaceChildSubtree (XML As String, OldNode As CustomXMLNode) As Void

파라미터: OldNode: 대체될 자식 노드를 나타내는 CustomXMLNode. XML: XML DOM에 추가될 서브트리를 나타내는 String. 이 XML은 (이름공간 선언, 단일 루트 노드, 기타 등등을 포함하는) 잘 형성된 XML 문서이어야만 한다. 그렇지 않은 경우, "문서에 XML 서브트리를 추가하기 위해서는, 그것이 유효하고 잘 형성된 XML이어야만 함"이라는 에러로 실패한다.Parameters: OldNode: CustomXMLNode representing the child node to be replaced. XML: A String representing the subtree to be added to the XML DOM. This XML must be a well-formed XML document (including namespace declarations, single root nodes, etc.). Otherwise, it fails with the error "To add an XML subtree to a document, it must be valid and well-formed XML".

스트림으로부터 지정된 노드(및 그의 서브트리)를 제거하고, 동일한 위치에 있는 노드를 지정된 XML 서브트리로 대체한다. OldNode가 컨텍스트 노드의 자식이 아닌 경우, "OldNode가 현재 노드의 자식이어야만 함"이라는 에러 메시지로 실패한다. 그 결과의 대체가 구조적으로 유효하지 않은 경우, "구조적으로 유효하지 않은 DOM이 생기기 때문에 이 동작은 수행될 수 없음"이라는 에러 메시지로 실패한다.Removes the specified node (and its subtrees) from the stream and replaces the node at the same location with the specified XML subtree. If OldNode is not a child of the context node, it fails with the error message "OldNode must be a child of the current node." If the replacement of the result is not structurally valid, it fails with the error message "This operation cannot be performed because a structurally invalid DOM is created."

SelectNodes(XPath As String) As CustomXMLNodes()SelectNodes (XPath As String) As CustomXMLNodes ()

파라미터: XPath: DOM과 대조하여 평가할 XPath 표현식을 포함하는 String. 이 XPath에 대한 프리픽스 매핑이 NamespaceManager 속성으로부터 검색된다. XPath가 리졸브되지 않는 경우, 어떤 에러가 있든 통과한다(현재 내장된 XML을 갖 는 Document 객체 상의 이 메서드에 따라).Parameters: XPath: A String containing the XPath expression to evaluate against the DOM. The prefix mapping for this XPath is retrieved from the NamespaceManager property. If the XPath is not resolved, any error will be passed (according to this method on the Document object with the currently embedded XML).

이 메서드는 개발자가 데이터 저장소 항목 내로부터 일련의 노드를 다시 가져올 수 있게 해준다.This method allows a developer to get back a set of nodes from within a data store item.

SelectSingleNode(XPath As String) As CustomXMLNode() SelectSingleNode (XPath As String) As CustomXMLNode ()

파라미터: XPath: DOM과 대조하여 평가할 XPath 표현식을 나타내는 String. 이 XPath에 대한 프리픽스 매핑은 NamespaceManager 속성으로부터 검색된다. XPath가 리졸브되지 않는 경우, 어느 에러가 있든지 통과한다(현재 내장된 XML을 갖는 Document 객체 상의 이 메서드에 따라).Parameters: XPath: a String representing the XPath expression to evaluate against the DOM. The prefix mapping for this XPath is retrieved from the NamespaceManager property. If the XPath is not resolved, any error will be passed (according to this method on the Document object with the currently embedded XML).

이 메서드는 개발자가 데이터 저장소 항목 내로부터 단일 노드를 다시 가져올 수 있게 해준다.This method allows developers to retrieve a single node back from within a data store item.

Text As String: 현재 노드에 대한 텍스트를 가져온다/설정한다. MSXML과 달리, 노드에 대해 이것을 설정하는 것은 그 노드의 컨텐츠를 지정된 문자열로 대체시킨다 - 예를 들어, foo의 컨텐츠가 다음과 같은 경우 비리프 엘리먼트(non-leaf element) <foo>에 대해 "테스트(test)"하도록 설정하는 것은Text As String: Gets / sets the text for the current node. Unlike MSXML, setting this for a node replaces the contents of that node with the specified string-for example, "test" for a non-leaf element <foo> if the content of foo is (test) "setting

<foo><foo>

Bar Bar

<baz>hello</baz><baz> hello </ baz>

</foo></ foo>

실패하지 않지만, 그 결과 내부적으로 데이터 저장소에 또 외부적으로 데이터 저장소의 클라이언트에 다른 메시지가 생긴다. 그 결과의 대체가 구조적으로 유효하지 않은 경우, "구조적으로 유효하지 않은 DOM이 생기기 때문에 이 동작이 수행될 수 없음"이라는 에러 메시지로 실패한다.It doesn't fail, but it results in different messages internally to the data store and externally to clients of the data store. If the replacement of the result is not structurally valid, it fails with the error message "This operation cannot be performed because a DOM that is not structurally valid" is encountered.

XML As String: 현재 노드 및 그의 자식들(있는 경우)의 원시 XML 표현을 반환한다.XML As String: Returns the raw XML representation of the current node and its children, if any.

XPath As String: 현재 노드에 대한 대표 형식의(canonicalized) XPath를 갖는 String을 반환한다. 노드가 더 이상 DOM에 있지 않은 경우(삭제된 경우), "이 노드가 연관된 커스텀 XML 부분으로부터 삭제되었음"이라고 하여 실패한다.XPath As String: Returns a String with the canonicalized XPath for the current node. If the node is no longer in the DOM (deleted), it fails with "This node has been deleted from the associated custom XML part."

New Enums: msoCustomXMLDataNodeType은 이용가능한 XML 노드의 유형을 나타낸다. msoCustoniXMLNodeAttribute은 XML 애트리뷰트 노드를 나타낸다. msoCustomXMLNodeCData는 CDATA 노드를 나타낸다. msoCustomXMLNodeComment는 XML 주석 노드를 나타낸다. msoCustornXMLNodeDocument는 XML 문서 (/) 노드를 나타낸다. msoCustomXMLNodeElement는 XML 엘리먼트 노드를 나타낸다. msoCustomXMLNodeProcessingInstruction은 XML 처리 명령어 노드를 나타낸다. msoCustomXMLNodeText는 텍스트 노드를 나타낸다.New Enums: msoCustomXMLDataNodeType indicates the type of XML node available. msoCustoniXMLNodeAttribute represents an XML attribute node. msoCustomXMLNodeCData represents a CDATA node. msoCustomXMLNodeComment represents an XML comment node. msoCustornXMLNodeDocument represents an XML document (/) node. msoCustomXMLNodeElement represents an XML element node. msoCustomXMLNodeProcessingInstruction represents an XML processing instruction node. msoCustomXMLNodeText represents a text node.

ReplaceChild(Child As CustomXMLNode, Name As String, [Namespace As String], [NodeType As String], [NodeValue As String]) As CustomXMLNodeReplaceChild (Child As CustomXMLNode, Name As String, [Namespace As String], [NodeType As String], [NodeValue As String]) As CustomXMLNode

파라미터: Child: 삭제될 컨텍스트 노드의 자식 노드를 나타내는 CustomXMLNode 객체. 이 노드가 컨텍스트 노드의 자식이 아닌 경우, "현재 엘리먼트의 자식이 아니기 때문에 이 노드가 제거될 수 없음"이라는 에러 메시지로 실패한다. Name: XML DOM에 추가될 엘리먼트의 기본 이름을 나타내는 String. Namespace: XML DOM에 추가될 엘리먼트의 이름공간을 나타내는 선택적인 String. 유형 msoXMLNodeElement 또는 msoXMLNodeAttribute의 노드를 추가하기 위해 필요하며, 그렇지 않은 경우 무시된다. NodeType: 생성할 노드의 유형을 지정하는 선택적인 msoXMLNodeType. 지정되지 않은 경우, msoXMLNodeElement인 것으로 가정된다. NodeValue: 텍스트를 허용하는 노드들에 대한 노드의 값을 설정하는 데 사용되는 선택적인 String. 노드가 텍스트를 허용하지 않는 경우, 이 파라미터가 무시된다.Parameters: Child: A CustomXMLNode object that represents the child nodes of the context node to be removed. If this node is not a child of the context node, it fails with the error message "This node cannot be removed because it is not a child of the current element." Name: A String representing the base name of the element to be added to the XML DOM. Namespace: an optional String representing the namespace of the element to be added to the XML DOM. Required to add a node of type msoXMLNodeElement or msoXMLNodeAttribute; otherwise it is ignored. NodeType: optional msoXMLNodeType that specifies the type of node to generate. If not specified, it is assumed to be msoXMLNodeElement. NodeValue: An optional String used to set the node's value for nodes that accept text. If the node does not allow text, this parameter is ignored.

스트림으로부터 지정된 자식 노드(및 그의 서브트리)를 제거하고 이를 동일한 위치에 지정된 노드로 대체한다. 그 결과의 삭제가 구조적으로 유효하지 않은 경우(또 스키마 시행이 온되어 있는 경우), "구조적으로 유효하지 않은 DOM이 생기기 때문에 이 동작이 수행될 수 없음"이라는 에러 메시지로 실패한다.Removes the specified child node (and its subtrees) from the stream and replaces it with the node specified at the same location. If deletion of the result is structurally invalid (and schema enforcement is on), it fails with the error message "This operation cannot be performed because a structurally invalid DOM is created."

XMLNamespace: 스키마 라이브러리에서의 단일의 고유 이름공간을 나타내는 객체.XMLNamespace: An object that represents a single unique namespace in the schema library.

AttachToCustomXMLPart(CustomXMLPart As Variant) As VoidAttachToCustomXMLPart (CustomXMLPart As Variant) As Void

파라미터: CustomXMLPart: 원하는 스트림에 대한 CustomXMLPart 객체 또는 CustomXMLParts 컬렉션에서의 그 스트림의 인덱스일 수 있는 변수.Parameters: CustomXMLPart: A variable that can be the CustomXMLPart object for the desired stream or the index of that stream in the CustomXMLParts collection.

이 XML 이름공간에 대한 스키마를 주어진 CustomXMLPart에 첨부한다.Attach the schema for this XML namespace to the given CustomXMLPart.

XMLSchemaReference: 현재 문서에서 참조되는 단일의 고유 이름공간을 나타내는 객체.XMLSchemaReference: an object representing a single unique namespace referenced in the current document.

Delete() As Void: CustomXMLPart으로부터 이름공간 -은 물론 그 이름공간 내의 모든 엘리먼트 - 을 제거한다. 그렇지만, 이 경우에, 구조적 스키마 시행이 인에이블되어 있기 때문에 데이터 저장소는 이 동작을 거부할 수 있으며, 이들 엘리먼트를 제거하는 결과 구조적으로 유효하지 않은 DOM이 생기게 된다. 이 경우에, 실패하고 "이 결과의 스트림이 구조적으로 유효하지 않게 되기 때문에 스키마 시행이 인에이블되어 있는 동안에 이 동작이 수행될 수 없음"이라는 에러를 던진다.Delete () As Void: Removes the namespace-as well as all elements within that namespace-from the CustomXMLPart. However, in this case, because structural schema enforcement is enabled, the data store can reject this behavior, and removing these elements results in a DOM that is structurally invalid. In this case, it fails and throws the error "This operation cannot be performed while schema enforcement is enabled because the stream of this result is structurally invalid."

Add(Name As String, Namespace As String, [Parent As CustomXMLNode], [NextSibling As CustomXMLDataNode],[NodeType As msoXMLNodeType],[NodeValue As String]) As CustomXMLNodeAdd (Name As String, Namespace As String, [Parent As CustomXMLNode], [NextSibling As CustomXMLDataNode], [NodeType As msoXMLNodeType], [NodeValue As String]) As CustomXMLNode

파라미터: Name: XML DOM에 추가될 엘리먼트의 기본 이름을 나타내는 String. Namespace: XML DOM에 추가될 엘리먼트의 이름공간을 나타내는 선택적인 String. 유형 msoXMLNodeElement 또는 msoXMLNodeAttribute의 노드를 추가하는 데 필요하며, 그렇지 않은 경우 무시된다. Parent: 이 노드가 그 아래에 추가되어야만 하는 노드를 나타내는 선택적인 CustomXMLNode. .Attributes 속성에 의해 반환되는 CustomXMLNodes 컬렉션으로부터 취소되는 경우, 애트리뷰트의 부모 노드인 것으로 가정된다. 임의의 다른 경우에 호출되는 경우, 이 파라미터가 지정되거나 "이 노드를 문서에 추가할 부모 노드를 지정해야만 함"이라는 에러를 반환한다. NextSibling: 새로운 노드의 그 다음 형제가 되어야만 하는 노드를 나타내는 선택적인 CustomXMLNode. 지정되지 않은 경우, 이 노드는 부모 노드의 자식들의 끝에 추가된다. 유형 msoXMLNodeAttribute의 추가에 대해서는 무시된다. NextSibling 이 부모의 자식이 아닌 경우, "그 다음 형제 노드가 부모 노드의 자식이 아니기 때문에 이 노드가 추가될 수 없음"이라는 에러를 반환한다. NodeType: 생성할 노드의 유형을 지정하는 선택적인 msoXMLNodeType. 지정되지 않은 경우, msoXMLNodeElement인 것으로 가정된다. .Attributes 속성으로부터 취소되지 않는 한, msoXMLNodeAttribute인 것으로 가정된다. NodeValue: 텍스트를 허용하는 노드들에 대한 노드의 값을 설정하는 데 사용되는 선택적인 String. 노드가 텍스트를 허용하지 않는 경우, 이 파라미터가 무시된다.Parameters: Name: a String representing the base name of the element to be added to the XML DOM. Namespace: an optional String representing the namespace of the element to be added to the XML DOM. Required to add a node of type msoXMLNodeElement or msoXMLNodeAttribute; otherwise it is ignored. Parent: An optional CustomXMLNode that represents the node to which this node should be added below it. If canceled from the CustomXMLNodes collection returned by the .Attributes property, it is assumed to be the parent node of the attribute. If called in any other case, this parameter is specified or returns the error "You must specify the parent node to add this node to the document." NextSibling: an optional CustomXMLNode that represents the node that should be the next sibling of the new node. If not specified, this node is added to the end of the children of the parent node. The addition of the type msoXMLNodeAttribute is ignored. If NextSibling is not a child of the parent, it returns the error "This node cannot be added because the next sibling is not a child of the parent node." NodeType: optional msoXMLNodeType that specifies the type of node to generate. If not specified, it is assumed to be msoXMLNodeElement. Unless canceled from the .Attributes attribute, it is assumed to be msoXMLNodeAttribute. NodeValue: An optional String used to set the node's value for nodes that accept text. If the node does not allow text, this parameter is ignored.

데이터 저장소 항목에 XML 노드를 추가하는 일반적인 방법. .Attributes 속성에 의해 반환되는 CustomXMLNodes 객체로부터 취소되는 경우, Parent는 부모 노드의 기본값을 가지며, NodeType은 msoXMLNodeAttribute의 기본값을 갖는다. 다른 경우들 모두에서, Parent가 필요하고 NodeType은 기본값이 msoXMLNodeElement으로 된다. 그 결과의 추가가 구조적으로 유효하지 않은 경우(또 스키마 시행이 온되는 경우), "구조적으로 유효하지 않은 데이터 스트림이 생기기 때문에 스키마 시행이 온되어 있는 동안에 이 동작이 수행될 수 없음"이라는 에러 메시지로 실패한다. 이름공간이 스키마 참조 컬렉션에 있지 않은 경우, "이 엘리먼트를 추가하기 위해서는 먼저 그의 스키마를 데이터 스트림에 첨부해야만 함"이라는 에러 메시지로 실패한다.Common way to add XML nodes to data store items. When canceled from the CustomXMLNodes object returned by the .Attributes attribute, Parent has the default value of the parent node and NodeType has the default value of msoXMLNodeAttribute. In all other cases, Parent is required and NodeType defaults to msoXMLNodeElement. If the addition of the result is not structurally valid (and schema enforcement is on), the error message "This operation cannot be performed while schema enforcement is on because a structurally invalid data stream is created." To fail. If the namespace is not in the schema reference collection, it fails with the error message "To add this element you must first attach its schema to the data stream."

CustomDataXMLSchemaReferences(): CustomXMLPart에서 식별되는 모든 고유의 이름공간을 나타내는 컬렉션. 주의: 기본적으로, 이것을 XML 파일로 선언된 각각의 이름공간에 대한 엔트리로 채운다.CustomDataXMLSchemaReferences (): a collection representing all the unique namespaces identified in the CustomXMLPart. Note: By default, this is populated with an entry for each namespace declared in the XML file.

Add([NamespaceURI As String], [Alias As String], [FileName As String], [InstallForAllUsers As Boolean = False]) As XMLSchemaReferenceAdd ([NamespaceURI As String], [Alias As String], [FileName As String], [InstallForAllUsers As Boolean = False]) As XMLSchemaReference

파라미터: NamespaceURI: 스키마 컬렉션에 추가할 스키마에 의해 정의되는 이름공간을 포함하는 String. Alias: 스키마 라이브러리에 이 스키마를 추가할 때 기입할 별명을 포함하는 String. FileName: 스키마 라이브러리에 추가되어야만 하는 스키마로의 경로를 포함하는 String. InstallForAllUsers: 스키마 라이브러리 키가 HKCU (기본값) 또는 HKLM에 추가되어야만 하는지를 판정하는 Boolean. Parameters: NamespaceURI: A String containing the namespace defined by the schema to add to the schema collection. Alias: A String containing the alias to write when adding this schema to the schema library. FileName: A String containing the path to the schema that should be added to the schema library. InstallForAllUsers: Boolean that determines if schema library keys should be added to HKCU (default) or HKLM.

이 메서드는 스키마 참조를 추가한다. 이를 위해, 파일에 아직 정의되지 않은 경우, CustomXMLPart의 루트 엘리먼트에 적절한 이름공간 선언을 추가한다. 열려 있을 때, 모든 선언된 이름공간은 이 컬렉션을 채우는 데 사용된다.This method adds a schema reference. To do this, add the appropriate namespace declaration to the root element of the CustomXMLPart, if it is not already defined in the file. When open, all declared namespaces are used to populate this collection.

EnforceStructure As Boolean: 데이터 저장소가 그의 스키마에 따라 연관된 CustomXMLPart에 대해 구조적 유효성을 시행해야만 하는지에 대응하는 Boolean을 가져온다/설정한다. CustomXMLPart의 컨텐츠가 유효하지 않은 동안에 사용자가 이 속성을 TRUE로 설정하려고 시도하는 경우, "이 데이터 스트림의 컨텐츠가 구조적으로 유효하지 않은 동안 스키마 시행이 온으로 될 수 없음"이라는 에러를 반환한다.EnforceStructure As Boolean: Gets / sets a Boolean that corresponds to whether the data store should enforce structural validation on the associated CustomXMLPart according to its schema. If the user attempts to set this attribute to TRUE while the content of the CustomXMLPart is invalid, it will return an error that "Schedule enforcement cannot be turned on while the content of this data stream is structurally invalid."

Count As Long: 이 CustomXMLPart에서 현재 참조되는 이름공간의 수를 반환한다.Count As Long: Returns the number of namespaces currently referenced in this CustomXMLPart.

Item(Index As Variant) As XMLSchemaReference Item (Index As Variant) As XMLSchemaReference

파라미터: Index: 이하의 2가지 유형, 컬렉션에서 원하는 CustomDataXMLSchemaReference의 인덱스를 나타내는 Long 및 컬렉션에서 원하는 CustomDataXMLSchemaReference의 이름공간을 나타내는 String 중 하나일 수 있는 변수. Parameters: Index: A variable that can be one of the following two types: a Long representing the index of the CustomDataXMLSchemaReference desired in the collection, or a String representing the namespace of the CustomDataXMLSchemaReference desired in the collection.

이것은 CustomDataXMLSchemaReferences 객체의 기본 멤버이며, 이는 요청된 객체에 대응하는 XMLSchemaReference 객체를 반환한다.This is the default member of the CustomDataXMLSchemaReferences object, which returns an XMLSchemaReference object corresponding to the requested object.

Validate() As Void: 이 메서드는 CustomDataXMLSchemaReferences 컬렉션에서의 모든 스키마와 대조하여 전체 스트림을 검증한다. 개개의 노드에 대해 에러가 보고된다(.ValidationStatus 속성을 참조할 것)/Validate () As Void: This method validates the entire stream against all the schemas in the CustomDataXMLSchemaReferences collection. An error is reported for each node (see the .ValidationStatus property).

CustomXMLNodeCustomXMLNode

NodeAfterInsert(NewCustomXMLNode as CustomXMLNode, InUndoRedo as Boolean).NodeAfterInsert (NewCustomXMLNode as CustomXMLNode, InUndoRedo as Boolean).

파라미터: NewCustomXMLNode: CustomXMLPart에 이제 막 추가된 노드에 대응하는 CustomXMLNode 객체. 주의: (서브트리가 문서에 이제 막 추가된 경우) 이 노드는 자식들을 가질 수 있다. InUndoRedo: 노드가 사용자에 의한 실행 취소/다시 실행 동작의 일부로서 추가된 경우 TRUE를 반환하고 그렇지 않은 경우 FALSE를 반환하는 Boolean.Parameters: NewCustomXMLNode: The CustomXMLNode object that corresponds to the node just added to the CustomXMLPart. Note: This node can have children (if the subtree has just been added to the document). InUndoRedo: A Boolean that returns TRUE if the node was added as part of an undo / redo action by the user and FALSE otherwise.

이 이벤트는 XML 노드가 현재 문서에 추가되려고 할 때마다 발생된다. 추가 동작이 XML 문서의 서브트리가 CustomXMLPart에 추가되는 것을 필요로 하는 경우, 변경에서의 최상위 노드에 대해 한번 이 이벤트를 발생한다. 이 이벤트는 데이터 저장소에 메시지로 보내지는 각각의 변경마다 한번씩 발생되며, 따라서 이 이벤트로 표현되는 변경의 부수 효과도 이벤트를 트리거한다.This event is raised whenever an XML node is about to be added to the current document. If the add operation requires a subtree of XML document to be added to the CustomXMLPart, fire this event once for the top node in the change. This event occurs once for each change that is sent to the data store as a message, so the side effect of the change represented by this event also triggers the event.

NodeBeforeDelete(OldCustomXMLNode as CustomXMLNode, InUndoRedo as Boolean)NodeBeforeDelete (OldCustomXMLNode as CustomXMLNode, InUndoRedo as Boolean)

파라미터: OldCustomXMLNode: CustomXMLPart로부터 막 제거되려고 하는 노드에 대응하는 CustomXMLNode 객체. 주의: (서브트리가 문서로부터 제거되고 있는 중인 경우) 이 노드는 자식들을 가질 수 있다. InUndoRedo: 노드가 사용자에 의한 실행 취소/다시 실행 동작의 일부로서 추가된 경우 TRUE를 반환하고 그렇지 않은 경우 FALSE를 반환하는 Boolean.Parameters: OldCustomXMLNode: A CustomXMLNode object corresponding to the node that is about to be removed from the CustomXMLPart. Note: This node can have children (if the subtree is being removed from the document). InUndoRedo: A Boolean that returns TRUE if the node was added as part of an undo / redo action by the user and FALSE otherwise.

XML 노드가 데이터 저장소에서의 현재 항목으로부터 삭제될 때마다 이 이벤트가 발생된다. 삭제 동작이 CustomXMLPart에서의 XML 문서의 서브트리를 필요로 하는 경우, 변경에서의 최상위 노드에 대해 한번 이 이벤트를 발생한다. 이 이벤트는 데이터 저장소에 메시지로 보내진 각각의 변경마다 한번씩 발생되고, 따라서 이 이벤트로 표현된 변경의 부수 효과도 이벤트를 트리거한다. 이벤트 핸들러가 이 노드 아래에 있게 되는 어떤 것이라도 수정하려고 시도하는 경우, "이 노드가 삭제될 것이기 때문에 이 변경이 허용되지 않음"이라는 에러 메시지로 실패한다.This event is raised whenever an XML node is deleted from the current item in the data store. If the delete operation requires a subtree of the XML document in the CustomXMLPart, this event is fired once for the top node in the change. This event is fired once for each change sent as a message to the data store, so the side effect of the change represented by this event also triggers the event. If the event handler tries to modify anything that is under this node, it fails with the error message "This change is not allowed because this node will be deleted."

상기한 명세서, 실시예들 및 데이터는 본 발명의 제조 및 구성의 사용에 대한 완전한 설명을 제공한다. 본 발명의 많은 실시예들이 본 발명의 정신 및 범위를 벗어나지 않고 실시될 수 있기 때문에, 본 발명은 이후에 첨부된 청구항들에 속한다.The above specification, examples and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be practiced without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.

Claims (20)

컴퓨터-생성 문서(computer-generated document)와 연관된 데이터를 관리하는 컴퓨터-실행가능 명령어를 갖는 유형의(tangible) 컴퓨터-판독가능 매체로서,A tangible computer-readable medium having computer-executable instructions for managing data associated with a computer-generated document, 상기 컴퓨터-실행가능 명령어는,The computer-executable instructions are 문서와 연관되어 있는 구조화된 데이터 항목(structured data items)을 상기 문서를 위한 문서 데이터와 별도로 유지되는 데이터 저장소에 저장하는 단계 - 상기 문서 데이터는 상기 문서를 디스플레이하기 위한 기본 프리젠테이션(primary presentation)을 정의하고, 상기 구조화된 데이터 항목은 XML(Extensible Markup Language)로 표시되고, 상기 구조화된 데이터 항목은 문서에 대한 메타데이터(metadata)이고, 상기 구조화된 데이터 항목은 데이터 저장소에서 삭제될 때까지 상기 문서와 관련된 채 남아있음 - 와,Storing structured data items associated with a document in a data store maintained separately from document data for the document, the document data subjecting to a primary presentation for displaying the document. And the structured data item is represented in Extensible Markup Language (XML), the structured data item is metadata about a document, and the structured data item is deleted from the data store until the document is deleted. Remains associated with-Wow, API(Application Programming Interfaces)가 복수의 서로 다른 클라이언트 데이터 소비 애플리케이션(client data consuming application)의 각각에 의한 상기 구조화된 데이터 항목에의 프로그램적 액세스(programmatic access)를 허용하기 위해 상기 복수의 서로 다른 클라이언트 데이터 소비 애플리케이션에 노출되도록 상기 구조화된 데이터 항목을 포맷하는 단계 - 상기 API의 실행은 상기 문서가 편집을 위해 열려 있는 동안 및 상기 문서가 편집을 위해 닫힐 때 상기 데이터 저장소 내의 상기 구조화된 데이터 항목에 액세스하는 기능을 제공하고, 상기 데이터 소비 애플리케이션에 의한 상기 구조화된 데이터 항목에의 프로그램적 액세스를 허용하는 상기 API는 복수의 데이터 소비 어플리케이션이 동일한 구조화된 데이터 항목에 동시에 액세스할 수 있게 하며, 상기 API는 임의의 상기 데이터 소비 애플리케이션이 상기 구조화된 데이터 항목을 상기 데이터 저장소 내에 저장하는 것을 허용함 - 와,APIs (Application Programming Interfaces) allow the programmatic access to the structured data items by each of a plurality of different client data consuming applications. Formatting the structured data item to be exposed to a consuming application, wherein execution of the API accesses the structured data item in the data store while the document is open for editing and when the document is closed for editing. The API, which provides functionality and allows programmatic access to the structured data item by the data consuming application, allows multiple data consuming applications to simultaneously access the same structured data item, the API being arbitrary And, - wherein the data consuming application also allows for storing the structured data item in the data store 상기 데이터 소비 애플리케이션에 의한 변경의 통지를 등록하는 단계와,Registering a notification of a change by the data consuming application; 상기 API를 사용하여 상기 구조화된 데이터 항목들 중 하나에 변경이 행해질 때를 판정하고, 변경이 행해질 경우, 그 변경을 등록된 데이터 소비 애플리케이션에 통지하는 단계와,Using the API to determine when a change is made to one of the structured data items, and when the change is made, notify the registered data consuming application of the change; 상기 변경의 통지에 응답하여, 상기 데이터 소비 애플리케이션 중 하나에 의한 부수 효과 변경(side-effect change)을 큐잉(queuing)하는 단계 - 상기 부수 효과 변경은 상기 통지된 변경과 연관된 데이터에 기초하여 생성됨 - 와,In response to the notification of the change, queuing a side-effect change by one of the data consuming applications, wherein the side effect change is generated based on data associated with the notified change. Wow, 상기 부수 효과 변경을 상기 등록된 데이터 소비 애플리케이션에게 통지하는 단계를 수행하는 Notifying the registered data consuming application of the side effect change. 컴퓨터-판독가능 매체.Computer-readable media. 제1항에 있어서, The method of claim 1, 상기 컴퓨터-실행가능 명령어는,The computer-executable instructions are 상기 등록된 데이터 소비 애플리케이션 중 하나가 상기 변경을 거부할 때 그 변경을 롤백하는 것과, 상기 등록된 데이터 소비 애플리케이션의 각각이 상기 변경을 수락할 때 그 변경을 상기 데이터 저장소에 커밋(commit)하는 단계를 더 수행하는 Rolling back the change when one of the registered data consuming applications rejects the change and committing the change to the data store when each of the registered data consuming applications accepts the change. To do more 컴퓨터-판독가능 매체.Computer-readable media. 제2항에 있어서, 3. The method of claim 2, 상기 컴퓨터-실행가능 명령어는,The computer-executable instructions are 상기 API를 사용하여 상기 구조화된 데이터 항목을, 상기 변경이 상기 데이터 저장소에 커밋되기 이전에 상기 구조화된 데이터 항목을 검증하는 데 사용되는 XML 스키마(schema) 파일과 연관시키는 단계를 더 수행하는 Further using the API to associate the structured data item with an XML schema file that is used to validate the structured data item before the change is committed to the data store. 컴퓨터-판독가능 매체.Computer-readable media. 제1항에 있어서, The method of claim 1, 상기 API는 상기 데이터 저장소에 대한 변경 및 상기 구조화된 데이터 항목들 중 하나 이상에 대한 변경 중 적어도 하나에 대한 변경 통지에 대한 통지를 수신하기 위해 등록을 하는 기능을 제공하고, 상기 변경은 상기 데이터 저장소 및 상기 구조화된 데이터 항목 중 적어도 하나에 대한 삭제, 추가 및 수정 중에서 적어도 하나를 포함하는 The API provides a function to register to receive a notification of a change notification for at least one of a change to the data store and a change to one or more of the structured data items, the change being the data store. And at least one of deletions, additions, and modifications to at least one of the structured data items. 컴퓨터-판독가능 매체.Computer-readable media. 제4항에 있어서, 5. The method of claim 4, 상기 API는 상기 데이터 저장소에 노드를 추가하고, 상기 데이터 저장소로부터 노드를 삭제하며, 상기 데이터 저장소 내에서 노드를 대체하기 위한 인터페이스를 제공하는The API provides an interface for adding a node to the data store, deleting a node from the data store, and replacing a node within the data store. 컴퓨터-판독가능 매체.Computer-readable media. 제4항에 있어서, 5. The method of claim 4, 상기 API는 기존의 파일을 사용하여 상기 데이터 저장소를 채우고(populate) XML의 문자열을 사용하여 상기 데이터 저장소를 채우기 위한 인터페이스를 제공하는The API populates the data store using an existing file and provides an interface for populating the data store using a string of XML. 컴퓨터-판독가능 매체.Computer-readable media. 제4항에 있어서, 5. The method of claim 4, 상기 API는 이름공간(namespace)을 추가하고, 이름공간을 탐색하며, 스키마를 추가하고, 스키마를 삭제하며, 스키마를 재로드(reload)하기 위한 인터페이스를 제공하는The API provides an interface for adding namespaces, browsing namespaces, adding schemas, deleting schemas, and reloading schemas. 컴퓨터-판독가능 매체.Computer-readable media. 제4항에 있어서, 5. The method of claim 4, 상기 API는 스트림(stream)을 추가하고, 스트림을 제거하며, 서브트리(subtree)를 추가하고, 서브트리를 제거하며, 현재 노드의 그 다음 형제(sibling)를 획득하고, 현재 노드의 이전의 형제를 획득하여 노드 유형을 획득하기 위한 인터페이스를 제공하는The API adds a stream, removes a stream, adds a subtree, removes a subtree, obtains the next sibling of the current node, and the previous sibling of the current node. To provide an interface for obtaining a node type 컴퓨터-판독가능 매체.Computer-readable media. 제4항에 있어서, 5. The method of claim 4, 상기 API는 노드 값을 획득하고 구조를 시행(enforce)하기 위한 인터페이스를 제공하는The API provides an interface for obtaining node values and enforcing the structure. 컴퓨터-판독가능 매체.Computer-readable media. 컴퓨터-생성 문서와 연관된 데이터를 관리하는 컴퓨터-구현 방법으로서,A computer-implemented method of managing data associated with computer-generated documents, 문서와 연관되어 있는 구조화된 데이터 항목을 데이터 저장소를 사용하여 저장하는 단계 - 상기 구조화된 데이터 항목은 XML(Extensible Markup Language)에 따라 구조화되고, 상기 구조화된 데이터 항목은 문서에 대한 메타데이터이고, 상기 구조화된 데이터 항목은 데이터 저장소에서 삭제될 때까지 상기 문서와 관련된 채 남아있음 - ;Storing a structured data item associated with a document using a data store, wherein the structured data item is structured according to Extensible Markup Language (XML), the structured data item is metadata for a document, and Structured data items remain associated with the document until deleted from the data store; 상기 문서 및 상기 데이터 저장소 내에 포함된 상기 구조화된 데이터 항목에 대한 프로그램적 액세스를 허용하는 제1의 데이터 소비 애플리케이션에 API(Application Programming Interfaces)가 노출되도록 상기 구조화된 데이터 항목을 포맷하는 단계;Formatting the structured data item to expose application programming interfaces (APIs) to a first data consuming application that allows programmatic access to the document and the structured data item included in the data repository; 상기 구조화된 데이터 항목이 상기 문서에 링크(link)되고 상기 문서의 특성을 기술하는 메타데이터로서 기능하도록, 상기 문서가 편집되는 동안 및 상기 문서가 편집을 위해 닫힐 때 모두에 상기 데이터 저장소 내의 상기 구조화된 데이터 항목에 액세스하기 위해 상기 API를 실행하는 단계 - 상기 제1의 데이터 소비 애플리케이션은 등록될 때 상기 데이터 저장소에서 행해진 변경의 통지를 수신함 - ;The structure in the data store both while the document is edited and when the document is closed for editing, such that the structured data item is linked to the document and serves as metadata describing the characteristics of the document. Executing the API to access a data item, wherein the first data consuming application receives a notification of a change made in the data store when registered; 상기 API를 사용하여, 상기 데이터 저장소 중 하나의 변경을 개시(initiate)하는 단계;Using the API to initiate a change in one of the data stores; 상기 변경과 연관된 제2의 등록된 데이터 소비 애플리케이션에 상기 통지를 제공하는 단계;Providing the notification to a second registered data consuming application associated with the change; 상기 제2의 등록된 데이터 소비 애플리케이션에서 상기 통지에 응답하여, 부수 효과 변경을 큐잉하는 단계;Queuing a side effect change in response to the notification at the second registered data consuming application; 상기 제2의 등록된 데이터 소비 애플리케이션으로부터의 응답이 거절(rejection)인 지를 판정하고, 상기 응답이 거절인 경우 상기 변경 및 상기 부수 효과 변경을 롤백하는 단계;Determining whether a response from the second registered data consuming application is a rejection, and rolling back the change and the side effect change if the response is rejection; 등록된 상기 제1의 데이터 소비 애플리케이션 및 상기 제2의 등록된 데이터 소비 애플리케이션이 상기 변경 및 상기 부수 효과 변경을 받아들이는 지를 판정하고, 등록된 상기 제1의 데이터 소비 애플리케이션 및 상기 제2의 등록된 데이터 소비 애플리케이션이 상기 변경 및 상기 부수 효과 변경을 받아들이는 경우 API를 사용하여 상기 데이터 소비 애플리케이션 중 하나로부터 제공된 XML 스키마 파일을 사용하여 상기 변경 및 상기 부수 효과 변경을 선택적으로 검증하는 단계; 및Determine whether the registered first data consuming application and the second registered data consuming application accept the change and the side effect change, and register the registered first data consuming application and the second registered Selectively validating the changes and minor effect changes using an XML schema file provided from one of the data consuming applications using an API when a data consuming application accepts the changes and the minor effect changes; And 하나 또는 그 이상의 상기 데이터 저장소에 상기 변경 및 상기 부수 효과 변경을 커밋하는 단계를 포함하는  Committing the change and the minor effect change to one or more of the data stores; 컴퓨터-구현 방법.Computer-implemented method. 제10항에 있어서, The method of claim 10, 상기 API를 사용하는 단계는 노드의 값을 획득하고, 노드를 추가하고, 노드를 삭제하고, 노드를 이동하고, 스키마를 추가하고, 스키마를 삭제하고, 스키마를 재로드하고, 이름공간을 추가하고, 이름공간을 삭제하기 위한 프로그래밍 인터페이스를 제공하는 단계를 더 포함하는The steps of using the API are to get the value of a node, add a node, delete a node, move a node, add a schema, delete a schema, reload a schema, add a namespace, Providing a programming interface for deleting the namespace; 컴퓨터-구현 방법.Computer-implemented method. 컴퓨터-생성 문서와 연관된 데이터를 관리하는 시스템으로서,A system for managing data associated with computer-generated documents, 프로세서;A processor; 상기 프로세서와 연결된 유형의 저장 매체;A tangible storage medium coupled with the processor; 상기 프로세서 상에서 실행되기 위한 데이터 소비 애플리케이션;A data consuming application for running on the processor; 상기 유형의 저장 매체 상에 문서를 저장하기 위한 문서 데이터 저장소; 및A document data store for storing documents on said tangible storage medium; And 하나 또는 그 이상의 상기 문서와 관련된 구조화된 데이터 항목을 저장하기 위한 상기 데이터 소비 애플리케이션과 연결된 데이터 저장소를 포함하고,A data repository associated with said data consuming application for storing structured data items associated with one or more said documents, 상기 구조화된 데이터 항목은 상기 데이터 저장소에서 제거될 때까지 상기 하나 또는 그 이상의 문서와 관련된 채로 남아있고,The structured data item remains associated with the one or more documents until removed from the data store, 상기 데이터 저장소는,The data store, XML 데이터 저장소;XML data store; 상기 데이터 소비 애플리케이션과 상호작용(interact)하기 위한 API 브로커(broker);An API broker for interacting with the data consuming application; 구조화된 데이터 항목에 행해진 변경과 관련된 변경을 저장하기 위한 변경 저장소; 및A change repository for storing changes related to changes made to the structured data items; And 상기 구조화된 데이터 항목에 행해진 변경의 결과로서 만들어진 임의의 변경을 롤백하기 위한 실행 취소 저장소(undo store)를 포함하고,An undo store for rolling back any changes made as a result of the changes made to the structured data item, 상기 API 브로커는 상기 문서와 상기 데이터 저장소에 저장된 상기 구조화된 데이터 항목에 대한 프로그램적 액세스를 허용하는 API(Application Programming Interfaces)를 노출하고,The API broker exposes application programming interfaces (APIs) that allow programmatic access to the structured data items stored in the document and the data repository, 상기 데이터 소비 애플리케이션은 상기 문서가 열려있는 동안과 상기 문서가 닫힌 때 모두에 상기 데이터 저장소 내의 상기 구조화된 데이터 항목에 액세스 하기 위하여 상기 API를 실행하여, 상기 데이터 저장소 내의 항목과 문서를 링크하도록 상기 API가 상기 데이터 소비 애플리케이션에 프로그램적 링크를 제공하도록 하고,The data consuming application executes the API to access the structured data item in the data store both while the document is open and when the document is closed, thereby linking the document with the item in the data store. To provide a programmatic link to the data consuming application, 상기 데이터 소비 애플리케이션은 또한 상기 데이터 저장소 내의 항목이 변경되는 경우에 부수 효과 변경을 큐잉하는The data consuming application also queues side effect changes when an item in the data store changes. 시스템. system. 제12항에 있어서,The method of claim 12, 상기 데이터 저장소는 또한,The data store also, 상기 구조화된 데이터 항목에 적용된 XML(Extensible Markup Language) 마크업 데이터에 대한 변경을 수신하고,Receive a change to Extensible Markup Language (XML) markup data applied to the structured data item, 상기 XML 마크업 데이터에 대한 변경이 관련되어 있는 상기 구조화된 데이터 항목과 연관된 XML 스키마 파일을 판독하며,Read an XML schema file associated with the structured data item associated with the change to the XML markup data, 상기 판독된 XML 스키마 파일에 따라 상기 XML 마크업 데이터에 대한 변경이 유효한지를 판정하고,Determine whether a change to the XML markup data is valid according to the read XML schema file, 상기 판독된 XML 스키마 파일에 따라 상기 XML 마크업 데이터에 대한 변경이 유효하지 않은 경우 상기 XML 마크업 데이터에 대한 변경을 허용하지 않으며 상기 판독된 XML 스키마 파일에 따라 상기 XML 마크업 데이터에 대한 변경이 유효한 경우 상기 XML 저장소들 중 하나 이상에 상기 변경을 커밋하는 If the change to the XML markup data is invalid according to the read XML schema file, the change to the XML markup data is not allowed and the change to the XML markup data according to the read XML schema file is not allowed. Commit the change to one or more of the XML repositories if valid 시스템.system. 제12항에 있어서, The method of claim 12, 상기 XML 데이터 저장소들 각각이 실행 취소 저장소(undo store) 및 변경 저장소(change store)를 포함하는 Each of the XML data stores includes an undo store and a change store. 시스템.system. 제12항에 있어서, The method of claim 12, 상기 API는 상기 데이터 저장소에 노드를 추가하고, 상기 데이터 저장소로부터 노드를 삭제하며, 상기 데이터 저장소 내에서 노드를 대체하고, 상기 데이터 저장소로부터 값을 획득하기 위한 인터페이스를 제공하는The API provides an interface for adding a node to the data store, deleting a node from the data store, replacing a node within the data store, and obtaining a value from the data store. 시스템.system. 제15항에 있어서, 16. The method of claim 15, 상기 API는 스키마를 추가하고, 스키마를 삭제하며, 스키마를 재로드하기 위한 인터페이스를 제공하는 The API provides an interface for adding schemas, deleting schemas, and reloading schemas. 시스템.system. 삭제delete 삭제delete 삭제delete 삭제delete
KR1020087005522A 2005-09-09 2006-09-08 Programmability for xml data store for documents KR101311123B1 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US71588605P 2005-09-09 2005-09-09
US60/715,886 2005-09-09
US11/331,586 US7752224B2 (en) 2005-02-25 2006-01-13 Programmability for XML data store for documents
US11/331,586 2006-01-13
PCT/US2006/034802 WO2007030586A1 (en) 2005-09-09 2006-09-08 Programmability for xml data store for documents

Publications (2)

Publication Number Publication Date
KR20080043813A KR20080043813A (en) 2008-05-19
KR101311123B1 true KR101311123B1 (en) 2013-09-25

Family

ID=39661992

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087005522A KR101311123B1 (en) 2005-09-09 2006-09-08 Programmability for xml data store for documents

Country Status (5)

Country Link
JP (1) JP5072845B2 (en)
KR (1) KR101311123B1 (en)
CN (1) CN101263477B (en)
BR (1) BRPI0615761A2 (en)
RU (1) RU2417420C2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9110877B2 (en) 2004-09-30 2015-08-18 Microsoft Technology Licensing, Llc Method and apparatus for utilizing an extensible markup language schema for managing specific types of content in an electronic document

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102008059197A1 (en) * 2008-11-27 2010-06-02 Bayerische Motoren Werke Aktiengesellschaft Method and device for the distributed configuration of telematics services in motor vehicle systems
US9460099B2 (en) * 2012-11-13 2016-10-04 Amazon Technologies, Inc. Dynamic selection of storage tiers
CN104639361B (en) * 2013-11-15 2019-04-19 中兴通讯股份有限公司 The management method and device of network service moulding plate
US11120210B2 (en) * 2014-07-18 2021-09-14 Microsoft Technology Licensing, Llc Entity recognition for enhanced document productivity
RU2613026C1 (en) * 2015-09-30 2017-03-14 Общество с ограниченной ответственностью "Интерсофт" Method of preparing documents in markup languages while implementing user interface for working with information system data
CN108351768B (en) 2015-09-30 2021-04-20 伊恩杰里索芙特公司 Method for implementing a user interface for processing data of an information system while writing a document in a markup language
CN106528506B (en) * 2016-10-20 2019-05-03 广东小天才科技有限公司 A kind of data processing method based on XML tag, device and terminal device
RU2683690C1 (en) * 2017-12-27 2019-04-01 Публичное Акционерное Общество "Сбербанк России" (Пао Сбербанк) Method and system for automatic generation of a program code for an enterprise data warehouse
CN110489085A (en) * 2019-02-21 2019-11-22 贵州广思信息网络有限公司 A kind of method of WORD content control extension storage data
CN110458471B (en) * 2019-08-19 2022-05-20 绍兴数纺科技有限公司 Standardized dye information management system
CN113297081A (en) * 2021-05-26 2021-08-24 北京京东振世信息技术有限公司 Execution method and device of continuous integration assembly line

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US650785A (en) * 1900-03-21 1900-05-29 Warner Brothers Co Clamp-plate for garment-supporters.
US5903902A (en) 1996-09-09 1999-05-11 Design Intelligence, Inc. Design engine with tree and component structure
US6731314B1 (en) 1998-08-17 2004-05-04 Muse Corporation Network-based three-dimensional multiple-user shared environment apparatus and method

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075949A (en) * 1999-09-02 2001-03-23 Mitsubishi Materials Corp Device and method for sharing information and recording medium therefor
US7716676B2 (en) * 2002-06-25 2010-05-11 Microsoft Corporation System and method for issuing a message to a program
JP2004199446A (en) * 2002-12-19 2004-07-15 Fujitsu Social Science Laboratory Ltd Shared document management system, member terminal device, document sharing processing program for member terminal and shared document management program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US650785A (en) * 1900-03-21 1900-05-29 Warner Brothers Co Clamp-plate for garment-supporters.
US5903902A (en) 1996-09-09 1999-05-11 Design Intelligence, Inc. Design engine with tree and component structure
US6731314B1 (en) 1998-08-17 2004-05-04 Muse Corporation Network-based three-dimensional multiple-user shared environment apparatus and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9110877B2 (en) 2004-09-30 2015-08-18 Microsoft Technology Licensing, Llc Method and apparatus for utilizing an extensible markup language schema for managing specific types of content in an electronic document

Also Published As

Publication number Publication date
CN101263477A (en) 2008-09-10
BRPI0615761A2 (en) 2011-05-24
JP2009508228A (en) 2009-02-26
JP5072845B2 (en) 2012-11-14
KR20080043813A (en) 2008-05-19
CN101263477B (en) 2011-10-19
RU2008109014A (en) 2009-10-10
RU2417420C2 (en) 2011-04-27

Similar Documents

Publication Publication Date Title
US7752224B2 (en) Programmability for XML data store for documents
KR101311123B1 (en) Programmability for xml data store for documents
RU2398274C2 (en) Data bank for program application documents
KR101310988B1 (en) Real-time synchronization of xml data between applications
US7945590B2 (en) Programmability for binding data
KR101213812B1 (en) Data binding in a word?processing application
US7617234B2 (en) XML schema for binding data
US7644095B2 (en) Method and system for compound document assembly with domain-specific rules processing and generic schema mapping
US20060277452A1 (en) Structuring data for presentation documents
US7404195B1 (en) Programmable object model for extensible markup language markup in an application

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
FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee