BRPI0615761A2 - programabilidade para armazenador de dados xml para documentos - Google Patents

programabilidade para armazenador de dados xml para documentos Download PDF

Info

Publication number
BRPI0615761A2
BRPI0615761A2 BRPI0615761-0A BRPI0615761A BRPI0615761A2 BR PI0615761 A2 BRPI0615761 A2 BR PI0615761A2 BR PI0615761 A BRPI0615761 A BR PI0615761A BR PI0615761 A2 BRPI0615761 A2 BR PI0615761A2
Authority
BR
Brazil
Prior art keywords
data
change
xml
node
document
Prior art date
Application number
BRPI0615761-0A
Other languages
English (en)
Inventor
Tristan A Davis
Ali Taleghani
Brian M Jones
Marcin Sawicki
Robert A Litlle
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of BRPI0615761A2 publication Critical patent/BRPI0615761A2/pt

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Abstract

PROGRAMABILIDADE PARA ARMAZENADOR DE DADOS XML PARA DOCUMENTOS. O modo de programabilidade para interagir com armazenadores de dados em um documento permite interação em tempo real. Dados para estruturar informação associada comum documento, tal como metadados de documento, são mantidos no armazenador de dados onde relações entre diferentes partes de dados são mantidas em uma localização distinta da vista em nível de superfície de um documento. O armazenador de dados expõe interfaces às várias partes de dados no armazenador de dados para permitir às diferentes aplicações acessarem e operarem em uma ou mais partes de dados. As partes de dados podem ser estruturadas de acordo com uma linguagem de marcação, tal como Linguagem de Marcação Extensível (XML), e esquemas XML podem ser associados com cada parte de dados para permitir que o armazenador de dados valide a estrutura aplicada aos dados baseados em um esquema XML associado com uma dada parte de dados.

Description

"PROGRAMABILIDADE PARA ARMAZENADOR DE DADOS XMLPARA DOCUMENTOS"
Fundamentos da Invenção
Os usuários de computador têm crescido acostumadoscom aplicações de software amigáveis ao usuário que os auxi-liam em escrever, calcular, organizar, preparar apresenta-ções, enviar e receber correio eletrônico, fazer musica, eseus similares. Por exemplo, aplicações de processamento depalavra permitem que os usuários preparem uma variedade dedocumentos úteis. Aplicações de planilhas permitem que osusuários insiram, manipulem e organizem dados. Aplicações deapresentação de slide permitem que os usuários criem uma va-riedade de apresentações de slide contendo texto, imagens,dados ou outros objetos úteis.
Os documentos são criados por tais aplicações (porexemplo, documentos de processamento de palavra, planilhas,documentos de apresentação de slides), entretanto, têm limi-tado a facilidade de armazenar/transportar os conteúdos demetadados arbitrários exigidos pelo contexto dos documentos.Por exemplo, uma solução construída no tipo de um documentode processamento de palavra pode exigir o armazenamento dedados de fluxo de trabalho que descrevem vários estados dodocumento, por exemplo, estados de aprovação de fluxo detrabalho anteriores (datas, horas, nomes), estados de apro-vação atuais, estados de fluxo de trabalho futuros antes dotérmino, nome e endereço do escritório do autor do documen-to, mudanças no documento, e seus similares. As opções paraarmazenar essa informação são primariamente limitadas ao usode documentos variáveis ou propriedades de documento de li-gação e incorporação de objeto (OLE) padrão existentes quetêm limitações. Por exemplo, nenhum dado hierárquico podeser armazenado; o comprimento de caractere é limitado, eseus similares. As propriedades para tais métodos são arma-zenadas em um único armazenador, por exemplo, um armazenadorde propriedades OLE, que significa que as propriedades têm apossibilidade de conflito. Ademais, tais propriedades arma-zenadas não têm validação de dados. É difícil para usuáriosde tais aplicações e documentos relacionados armazenarem da-dos arbitrários com documentos, que é uma necessidade comumde muitos usuários.
Sumário da Invenção
Este sumário é fornecido para introduzir uma sele-ção de conceitos de uma forma simplificada que são adicio-nalmente descritos abaixo na Descrição Detalhada. Este sumá-rio não pretende identificar características chave ou carac-terísticas essenciais do assunto reivindicado, nem pretendeser usada como um auxílio na determinação do escopo do as-sunto reivindicado.
Um ou mais armazenadores de dados são mantidos se-paradamente de um armazenamento de apresentação primária emum documento para armazenamento, relacionado e para permitiro uso de dados arbitrários que são associados com um docu-mento gerado por computador. Dados para estruturar informa-ção associada com um documento, tal como metadados de docu-mento, são mantidos em um armazenador de dados onde relaçõesentre diferentes partes de dados são mantidas. O armazenadorde dados expõe interfaces de programação de aplicação (APIs)às várias partes de dados no armazenador de dados para per-mitir que diferentes aplicações acessem e operem em uma oumais partes de dados.
As partes de dados podem ser estruturadas de acor-do com uma linguagem de marcação tal como a Linguagem deMarcação Extensível (XML). Esquemas XML podem ser associadoscom cada parte de dados, e o armazenador de dados pode vali-dar a estrutura XML aplicada aos dados baseados em um esque-ma XML associado com uma dada parte de dados. 0 acesso pro-gramático é fornecido aos dados em sua forma XML enquanto odocumento está sendo editado. Múltiplas aplicações de clien-te podem acessar e editar a mesma parte de dados de documen-to, e quaisquer mudanças conflitantes em uma dada parte dedados são resolvidas. Os esquemas XML padrão (XSDs) podemtambém ser usados para definir os conteúdos de quaisquer daspartes de dados XML padrão associados com os metadados dedocumento de modo a assegurar que os dados XML aplicados aosdados de documento sejam válidos.
Breve Descrição dos Desenhos
A FIGURA 1 ilustra uma arquitetura de computaçãoexemplificada para um computador;
A FIGURA 2 é um diagrama de bloco que ilustra umarelação entre uma ou mais aplicações de cliente e um ou maisarmazenadores de dados e os conteúdos do armazenador(es) dedados;
A FIGURA 3 ilustra um diagrama de sistema que mos-tra a interação entre os consumidores de dados internos eexternos com os armazenadores de dados XML;
A FIGURA 4 ilustra um processo para manipular e-ventos que estão associados com um armazenador de dados; e
A FIGURA 5 ilustra um processo para manipular umevento que inclui efeitos laterais, de acordo com aspectosda presente invenção.
Descrição Detalhada da Invenção
Com relação aqora aos desenhos, nos quais númerossimilares representam elementos similares, vários aspectosda presente invenção serão descritos. Em particular, aFIGURA Iea discussão correspondente são incluídas parafornecer uma breve descrição geral de um ambiente de compu-tação adequado no qual modalidades da invenção podem ser im-plementadas .
Geralmente, módulos de programa incluem rotinas,programas, componentes, estruturas de dados, e outros tiposde estruturas que executam tarefas particulares ou implemen-tam tipos de dados abstratos particulares. Outras configura-ções de sistema de computador podem também ser usadas, in-cluindo dispositivos portáteis, sistemas de multiprocessa-dor, eletrônicos programáveis de consumo ou baseada em mi-croprocessador, minicomputadores, computadores de grandeporte, e seus similares. Ambientes de computação distribuí-dos podem também ser usados onde tarefas são executadas pordispositivos de processamento remoto que são conectados a-través de uma rede de comunicações. Em um ambiente de compu-tação distribuído, os módulos de programa podem ser locali-zados em ambos dispositivos de armazenamento em memória lo-cal e remoto.
Com relação à FIGURA 1, um sistema exemplificadopara implementar a invenção inclui um dispositivo de compu-tação, tal como o dispositivo de computação 100. Em uma con-figuração muito básica, o dispositivo de computação 100 ti-picamente inclui pelo menos uma unidade de processamento 102e uma memória de sistema 104. Dependendo da configuração e-xata e do tipo de dispositivo de computação, a memória desistema 104 pode ser volátil (tal como RAM) , não volátil(tal como ROM, memória rápida, etc.) ou alguma combinaçãodas duas. A memória de sistema 104 tipicamente inclui umsistema operacional 105, uma ou mais aplicações 106, e podeincluir dados de programa 107. Em uma modalidade, a aplica-ção 106 pode incluir uma aplicação de processador de pala-vras 120. Essa configuração básica é ilustrada na FIGURA 1por aqueles componentes dentro da linha tracejada 108.
O dispositivo de computação 100 pode ter caracte-rísticas ou funcionalidades adicionais. Por exemplo, o dis-positivo de computação 100 pode também incluir dispositivosde armazenamento de dados adicionais (removível e/ou não re-movível) tal como, por exemplo, discos magnéticos, discosópticos, ou fitas. Tal armazenamento temporário é ilustradona FIGURA 1 pelo armazenamento removível 109 e pelo armaze-namento não removível 110. Os meios de armazenamento porcomputador podem incluir meios voláteis e não voláteis, re-movíveis e não removíveis implementados em qualquer métodoou tecnologia para armazenamento de informação, tal comoinstruções legíveis por computador, estruturas de dados, mó-dulos de programa, ou outros dados. A memória de sistema104, o armazenamento removível e o armazenamento não removí-vel 110 são todos exemplos de meios de armazenamento porcomputador. Os meios de armazenamento por computador inclu-em, mas não estão limitados a, RAM, ROM, EEPROM, memória rá-pida ou outra tecnologia de memória, CD-ROM, discos versá-teis digitais (DVD) ou outro armazenamento óptico, cassetesmagnéticos, fita magnética, armazenamento em disco magnéticoou outros dispositivos de armazenamento magnéticos, ou qual-quer outro meio que pode ser usado para armazenar a informa-ção desejada e que pode ser acessado pelo dispositivo decomputação 100. O dispositivo de computação 100 pode tambémter dispositivo(s) de entrada 112, al como teclado, mouse,caneta, dispositivo de entrada de voz, dispositivo de entra-da de toque, etc. O dispositivo (s) de saída 114, tal comouma tela, alto-falantes, impressora, etc. pode ser tambémincluído. Esses dispositivos são bem conhecidos na técnica enão necessitam ser discutidos ao longo desta descrição.
O dispositivo de computação 100 pode também conter20 conexões de comunicação 116 que permitem que o dispositivose comunique com outros dispositivos de computação 118, talcomo por uma rede. A conexão de comunicação 116 é um exemplode meios de comunicação, os quais podem tipicamente ser in-corporados por instruções legíveis por computador, estrutu-ras de dados, módulos de programa ou outros dados em um si-nal modulado de dados tal como uma onda portadora ou outromecanismo de transporte, e incluem quaisquer meios de entre-ga de informação. O termo "sinal modulado de dados" signifi-ca um sinal que tem uma ou mais de suas características a-justadas ou alteradas de tal maneira a codificar informaçãono sinal. A título de exemplo, e não limitação, os meios decomunicação incluem meios por fios tais como uma rede porfios ou conexão direta por fios, e meios sem fio tais comoacústicos, RF, infravermelhos e outros meios sem fio. 0 ter-mo "meios legíveis por computador" como usado aqui incluiambos os meios de armazenamento e os meios de comunicação.
Um número de módulos de programa e arquivos de da-dos pode ser armazenado na memória de sistema 104 do dispo-sitivo de computação 100, incluindo um sistema operacional105 adequado para controlar a operação de um computador pes-soal em rede, tal como os sistemas operacionais WINDOWS daMICROSOFT Corporation de Redmond, Washington. A memória de sistema 104 pode também armazenar um ou mais módulos de pro-grama, tal como a aplicação de processador de palavras 120,e outras descritas abaixo. A aplicação de processador de pa-lavras 120 é operativa para fornecer funcionalidade paracriar, editar, e processar documentos eletrônicos.
De acordo com uma modalidade da invenção, a apli-cação de processador de palavras 120 compreende o programaWORD da MICROSOFT Corporation. Deveria ser apreciado, entre-tanto, que os programas de aplicação de processador de pala-vras de outros fabricantes podem ser utilizados. A ilustra-ção de uma aplicação de processador de palavras é para pro-pósitos de exemplo somente e não está limitando outros tiposde aplicações que podem produzir e operar em documentos. Porexemplo, outros programas de aplicação 106 que são capazesde processar várias formas de conteúdo (por exemplo, texto,imagens, figuras, etc.), tal como programas de aplicação deplanilha, programas de aplicação de banco de dados, progra-mas de aplicação de apresentação de slides, programas de a-plicação de desenho ou auxiliados por computador, etc. sãoigualmente aplicáveis. Um programa de aplicação exemplifica-do 106 que produz e opera em uma variedade de diferentes ti-pos de documentos incluir o OFFICE da MICROSOFT Corporation.
A modalidades podem ser implementadas como um pro-cesso de computador, um sistema de computação, ou como umartigo de fabricação tal como um produto de programa de com-putador ou meios legíveis por computador. 0 produto de pro-grama de computador pode ser um meio de armazenamento porcomputador legível por um sistema de computador e codifican-do um programa de computador de instruções para executar umprocesso de computador. 0 produto de programa de computadorpode também ser um sinal propagado em uma portadora legívelpor um. sistema de computação e codificando um programa decomputador de instruções para executar um processo de compu-tador.
Por toda a especificação e reivindicações, os se-guintes termos obtêm os significados associados aqui, a me-nos que o contexto do termo dite de outra forma.
0 termo "dados" pode referir-se à informação emnível de superfície de documento ou em nível de apresenta-ção, tal como palavras, sentenças, parágrafos, e seus simi-lares, bem como, informação suplementar, por exemplo, meta-dados, que são carregados com, relacionados a, ou usados pe-documento de processamento de palavras. Essa informação éfreqüentemente grande e é provavelmente não exposta na cama-da de apresentação do documento.
O termo "apresentação" refere-se à parte visíveldo documento tal como o texto e a diagramação que apareceriase o documento fosse impresso.
O termo "rótulo" refere-se a caracteres inseridosem um documento que delineia elementos em um documento XML.Cada elemento geralmente inclui dois rótulos: o rótulo deinício e o rótulo final. É possível ter um elemento vazio(sem conteúdo) no caso de um rotulo ser permitido.
Os termos "linguagem de marcação" ou "ML" referem-se a uma linguagem para códigos especiais em um documentoque especifica como as partes do documento são interpretadaspor uma aplicação. Em um arquivo de processamento de pala-vras, a linguagem de marcação especifica como o texto é for-matado ou diagramado.
O termo "elemento" refere-se à unidade básica deum documento XML. 0 elemento pode conter atributos, outroselementos, texto, e outras regiões de conteúdo para um docu-mento XML.
O termo "bloco de construção" refere-se a uma re-gião limitada e potencialmente rotulada em um documento queserve como um recipiente para um tipo específico de conteúdoinserido pelo usuário.
Os termos "ligação de dados, mapeamento de dados,e campo de dados" referem-se a uma propriedade em um blocode construção que determina um XPath aos DOMs XML armazena-dos no documento onde os conteúdos do bloco de construçãodeveriam ser armazenados.
O conteúdo XML entre os rótulos é considerado o"dependente" do elemento (ou descendente) . Portanto, outroselementos embutidos no conteúdo do elemento são chamados "e-lementos filho" ou "nós filho" do elemento. 0 texto embutidodiretamente no contexto do elemento é considerado os "nós detexto filhos" do elemento. Juntos, os elementos filho e otexto em um elemento constituem esse "conteúdo" do elemento.
0 termo "atributo" refere-se a uma propriedade a-dicional atribuída a um valor particular e associado com oelemento. Elementos podem ter um número arbitrário de confi-gurações de atributos associadas com eles, incluindo nenhu-ma. Os atributos são usados para associar informação adicio-nal a um elemento que não conterá elementos adicionais, ouserão tratados como um nó de texto.
"XPath" é um operador que usa uma expressão padrãopara identificar nós em um documento XML. Um padrão XPath éuma lista separada por barras de nomes de elemento filho quedescrevem um caminho através do documento XML. 0 padrão "se-leciona" elementos que alcançam o caminho.
0 termo "armazenador de dados XML ou armazenadorde dados" refere-se a um recipiente em um documento, tal co-mo um documento de processamento de palavras, um documentode planilha, um documento de apresentação de slides, etc.,que fornece acesso para armazenamento e modificação dos da-dos (em formato XML, por exemplo) armazenados no documento,enquanto o arquivo está aberto. Definição adicional do arma-zenador de dados XML é fornecida abaixo com relação à FIGURA 2 .
A FIGURA 2 é um diagrama de bloco que ilustra umarelação entre uma ou mais aplicações de cliente e um ou maisarmazenadores de dados e os conteúdos do armazenador(es) dedados. Geralmente descritos, um ou mais armazenadores de da-dos são mantidos separadamente de um armazenamento de apre-sentação primário em um documento para armazenar, relacionare para permitir o uso de dados arbitrários que são associa-dos com um documento gerado por computador. Os dados paraestruturar informação associada com um documento, tal comometadados de documento, são mantidos em um armazenador dedados onde relações entre diferentes partes de dados sãomantidas. 0 armazenador de dados expõe as interfaces de pro-gramação de aplicação (APIs) às várias partes de dados noarmazenador de dados para permitir que diferentes aplicaçõesacessem e operem em uma ou mais das partes de dados. Comousado aqui, os termos "consumidores de dados", "aplicações"e "processos" podem ser usados de forma intercambiável a me-nos que o contexto claramente dite de outra forma.
As partes de dados podem ser estruturadas de acor-do com uma linguagem de marcação tal como a Linguagem deMarcação Extensível (XML). Os esquemas XML podem ser associ-ados com cada parte de dados, e o armazenador de dados podevalidar a estrutura XML aplicada aos dados baseada em um es-quema XML associado com uma dada parte de dados. Os armaze-nadores de dados podem conter qualquer número de itens dedados arbitrários, por exemplo, metadados, estruturados deacordo com a Linguagem de Marcação Extensível (XML). Conse-qüentemente, os provedores de solução de documento podem ar-mazenar metadados arbitrários como XML com um dado documentoe podem ter essa informação processada por uma dada soluçãotendo acesso aos dados mediante a ocorrência de um eventotal como quando dados são removidos ou carregados no armaze-nador de dados e/ou quando o documento é aber-to/editado/salvo por um usuário.
O acesso programático pode também ser fornecidoaos dados em sua forma XML enquanto o documento está sendoeditado. De acordo com uma modalidade, um mecanismo padrão éfornecido, o qual é familiar a desenvolvedores de soluçãovia os quais os dados podem ser acessados e modificados deforma programática enquanto o documento está aberto. Esseacesso programático imita interfaces XML padrão. 0 acessoprogramático aos dados é fornecido via interfaces de progra-mação de aplicação a uma ou mais aplicações de cliente (porexemplo, aplicações de criação ou edição de documento e/ousoluções auxiliares de aplicação de terceiro, e seus simila-res). Conseqüentemente, múltiplas aplicações de cliente po-dem acessar e editar a mesma parte de dados de documento, equaisquer mudanças conflitantes a uma dada parte de dadossão resolvidas. "Efeitos laterais" a qualquer dada mudançapodem ser feitos (por exemplo, em resposta a configurar umnome de companhia para "Microsoft", mudar um símbolo de es-toque para "MSFT"). Em adição, mudanças em dados e quaisquerefeitos laterais associados podem ser "limitados" pelo arma-zenador de dados tal que desfazer uma ou mais mudanças re-verte todas as mudanças relacionadas. Isso auxilia em remo-ver a sobrecarga de desenvolvimento da própria solução paraassegurar que ele tenha revertido todas as mudanças quando ousuário inicia um desfazer da mudança original a partir dasuperfície de documento, por exemplo, pressionando um coman-do Desfazer.
Os esquemas XML padrão (XSDs) podem também ser u-sados para definir os conteúdos de quaisquer das partes dedados XML padrão associados com metadados de documento demodo a assegurar que os dados XML aplicados aos dados de do-cumento são válidos. Esses esquemas podem ser anexados aqualquer ocorrência de dados XML armazenados no documento, eo armazenador de dados não permitirá qualquer mudança nosdados XML que resultaria na estrutura XML (ou seja, os rótu-los XML como opostos a seus conteúdos) desses dados se tor-nar inválida. Isso ajuda a assegurar que o desenvolvedor desolução pode anexar uma parte específica de metadados XML aum documento e a assegurar que os dados XML continuarão aser estruturalmente "corretos" de acordo com o esquema asso-ciado, sem considerar os consumidores de dados (por exemplo,add-ins) que são usados para modificar esses dados.
Com relação agora à FIGURA 2, os dados de documen-to 220 incluem dados de estrutura XML e dados de documentoassociados representando a vista em nível de superfície oude apresentação de um documento. Por exemplo, os dados dedocumento 220 podem incluir a estrutura XML (por exemplo,rótulos de cabeçalho, rótulos de corpo, rótulos de conclu-são) e dados em vista de superfície associados (por exemplo,palavras, sentenças, parágrafos) de um documento de proces-samento de palavras, documento de planilha, documento de a-presentação de slides, e seus similares.
0 armazenador de dados 208 é um repositório de da-dos de documento para armazenar uma ou mais partes de dadosestruturados associados com um ou mais tipos de dados asso-ciados com um dado documento. Embora somente um armazenadorde dados seja ilustrado, mais do que um armazenador de dadospode ser utilizado. Os metadadosl 225 (item de dados estru-turados) podem incluir dados de estrutura XML e dados asso-ciados para uma primeira parte de metadados associados com odocumento. Por exemplo, os metadadosl 225 podem incluir da-dos de estrutura XML (por exemplo, rótulos de data, rótulosde nome, etc.) listando o autor do documento, data da cria-ção do documento, data da última mudança/salvar no documen-to, e seus similares. Os metadados2 230 (item de dados es-truturados) podem incluir dados de estrutura XML (rótulos) emetadados associados representando uma segunda parte de me-tadados associada com o documento. Como deveria ser entendi-do, os metadadosl e os metadados2 são para propósitos de e-xemplo e não estão limitando a variedade e número de dife-rentes tipos de dados que podem ser mantidos no armazenadorde dados 2 08 em associação com um dado documento. Por exem-plo, como descrito aqui, dados arbitrários podem ser estru-turados e adicionados ao documento por uma ou mais aplica-ções de software como desejado por provedores de solução ouusuários que têm acesso aos dados de documento.
Um arquivo de esquema 240, 245 pode ser opcional-mente anexado a cada parte de dados armazenada no armazena-dor de dados 208 para ditar as regras de sintaxe e de vali-dação associadas com dados de Linguagem de Marcação Extensí-vel (XML) aplicados a cada parte de dados 225, 230. Os ar-quivos de esquema XML fornecem uma forma de descrever e va-lidar dados em um ambiente XML. Um arquivo de esquema deter-mina quais dados de marcação XML, incluindo elementos e a-tributos, são usados para descrever conteúdo em um documentoXML, e o arquivo de esquema define sintaxe de marcação XML,incluindo onde cada elemento é permitido, quais tipos deconteúdo são permitidos em um elemento e quais elementos po-dem aparecer em outros elementos. 0 uso de arquivos de es-quema assegura que o documento (ou parte individual de dadosnesse caso) é estruturado de uma maneira consistente e pre-visível. Os arquivos de esquema 240, 245 podem ser criadospor um usuário e geralmente suportados por uma linguagem demarcação associada, como XML.
Essa esquematização do documento permite que o ar-mazenador de dados forneça a capacidade de "garantir" a va-lidade estrutural do documento rejeitando qualquer mudançaque viole um dado arquivo de esquema no nível do armazenadorde dados. De acordo com uma modalidade, o armazenador de da-dos 208 utiliza um módulo de validação de esquema 260 paravalidar estrutura XML adicionada ou mudanças feitas a umadada parte de dados contra um arquivo de esquema associado.Por exemplo, se um criador ou editor de documento faz mudan-ças estruturais XML a uma dada parte de dados, por exemplo,os metadadosl, onde o editor adiciona ou remove um dado ró-tulo XML, o armazenador de dados 208 utilizará o módulo devalidação de esquema para verificar as mudanças estruturaisXML contra o arquivo de esquema associado para assegurar avalidade da mudança. Se a mudança não é válida, um erro podeser gerado ao editor. Como é entendido, tal controle da es-trutura XML aplicada a uma dada parte de dados permite con-sistência e preditabilidade estruturais que são especialmen-te importantes para permitir que aplicações de cliente ou deterceiros interajam com dados associados.
O armazenador de dados 208 fornece uma ou mais in-terfaces de programação de aplicação (API) 270 que podem seracessadas por aplicações de cliente 205 (por exemplo, apli-cações de processamento de palavras, aplicações de planilha,aplicações de apresentação de slides, etc.), bem como, apli-cações de terceiros 210, 215 via modelos de objeto (OM) dasrespectivas aplicações 205, 210, 215. Essas APIs permitemque as aplicações de cliente e aplicações de terceiros car-reguem qualquer arquivo XML existente em um dado armazenadorde dados 208 do dado documento, assim assegurando que essesdados são agora parte do documento e que viajarão nesse do-cumento por sua vida útil (por exemplo, através de a-brir/editar/salvar/re-nomear/etc.) ou até que os dados sãoapagados do armazenador de dados. De acordo com uma modali-dade, os dados no armazenador de dados estão disponíveis emseu formato XML mesmo quando uma aplicação fonte para umadada parte de dados 225, 230 está fechada ou, de outra for-ma, não está disponível. Ou seja, uma dada parte de dados225, 230 pode ser acessada via as APIs 270 por outras apli-cações (além de uma aplicação fonte) . Como descrito abaixo,as APIs também permitem que as aplicações de cliente e deterceiros façam mudanças aos dados de marcação XML aplicadosaos itens de dados 225, 230.
Uma vez que os dados XML 225, 230 são carregadosno armazenador de dados para associação com um documento220, eles podem ser manipulados como XML padrão usando asinterfaces de armazenador de dados projetadas para fornecermétodos similares para interfaces de edição XML existentesde modo a alavancar o conhecimento existente dos desenvolve-dores do padrão de programação XML. Isso permite que os usu-ários executem operações XML padrão em dados XML adicionadosao armazenador de dados para um documento, tal como adicio-nar elementos e atributos, remover elementos e atributos,mudar o valor de atributos/elementos existentes, e ler osvalores de qualquer parte existente da árvore XML associada.Usando essas operações padrão XML, soluções podem armazenarmetadados complexos estruturados com um documento submetidoa nenhuma das restrições anteriores no comprimento/tamanhodos dados ou estrutura dos dados, que habilita o uso dessearmazenador de dados XML para soluções mais significativa-mente estruturadas do que soluções anteriores. Por exemplo,uma aplicação de terceiro 215 pode ser escrita para locali-zar e extrair nomes de autor de documentos e datas de cria-ção de documentos de um número de documentos lendo os meta-dadosl 225 adicionados ao armazenador de dados 208 par cadadocumento. A aplicação de terceiro exemplificada pode seruma aplicação programada para fazer uma lista de nomes deautor de documentos e datas de criação de documentos paratodos os documentos criados por uma dada organização. De a-cordo com modalidades da presente invenção, a aplicação deterceiro pode utilizar a estrutura XML aplicada aos metada-dosl para eficientemente localizar e extrair os dados dese-jados. Por exemplo, a aplicação de terceiro pode ser escritapara analisar a estrutura XML do arquivo de metadadosl paralocalizar rótulos XML, tal como <docauthor> e <doccreation-date> para obter e usar dados associados com aqueles rótu-los. Como deveria ser apreciado, o anterior é somente um e-xemplo das muitas formas que uma ou mais aplicações podeminteragir com dados estruturados que são associados com odocumento via o armazenador de dados 208.
Em adição, o armazenador de dados 208 fornecequalquer número de interfaces API 270 para qualquer parteindividual de dados XML 220, 225, 230 (também conhecida comoum item de armazenador) para habilitar que múltiplas aplica-ções 205, 210, 215 trabalhem com a mesma parte.de dados. Porexemplo, várias soluções, tal como soluções de aplicação decliente (por exemplo, aplicação de processamento de pala-vras) e de aplicação de terceiro (por exemplo, a aplicaçãodescrita acima), podem trabalhar com o mesmo conjunto depropriedades de documento (por exemplo, propriedades conti-das no arquivo de metadados2 230) . Usando o armazenador dedados 208, cada uma dessas aplicações recebe acesso separadoaos dados XML desejados 230 através de sua própria interfaceAPI 270 do armazenador de dados para permitir que cada apli-cação se comunique com os dados via seu próprio OM sem terque lidar com a complexidade de ter múltiplos consumidores dedados acessando a mesma parte de dados.
De modo a permitir que essas múltiplas aplicaçõesde consumo de dados 205, 210, 215 acessem os mesmos dados, oarmazenador de dados 208 notifica cada uma dessas aplicaçõesquando qualquer parte dos dados XML é mudada por uma outraaplicação tal que uma dada aplicação pode responder a essamudança (ambos internamente a seu processo e externamentepor outras mudanças aos mesmos dados). Quando uma aplicaçãosolicita uma mudança a um dado item de dados, essa solicita-ção é automaticamente enviada a todas as outras aplicaçõespara permitir que outras aplicações decidam como ou se res-ponder à mudança solicitada. De acordo com uma modalidade,isso é executado permitindo-se que cada aplicação registre"ouvir" a qualquer parte dos dados XML para os quais ela temuma interface tal que um dado programa/solução de aplicaçãosomente recebe aquelas mensagens que são pertinentes a suaprópria lógica. Por exemplo, um tipo de. aplicação 210 podedesejar registrar ouvir a todas as mudanças feitas a dadosXML fornecidos de modo a fornecer capacidades de lógica denegócios detalhada a uma solução de terceiro, mas um outrotipo de aplicação 215 pode desejar somente ouvir mudanças emum ou dois elementos XML específicos nos mesmos dados porquesua lógica não se interessa em mudanças a qualquer outraparte dos dados XML.
De acordo com essa modalidade, as múltiplas apli-cações 205, 210, 215 podem acessar e editar a mesma parte dedados de documento, e quaisquer mudanças conflitantes a umadada parte de dados são resolvidas. Por exemplo, "efeitoslaterais" a qualquer dada mudança podem ser feitos quandouma mudança por uma aplicação causa uma mudança de efeitolateral por uma outra aplicação. Por exemplo, uma primeiraaplicação 210 pode ser atarefada com a extração de nomes decompanhia de um ou mais itens de dados 225, 230 associadoscom um dado documento para traduzir aqueles nomes em símbo-los de estoque correspondentes, se disponíveis, para compi-lar uma lista de símbolos de estoque de companhia relaciona-dos a um dado documento. Se uma segunda aplicação 215 levaum dado nome de companhia em uma dada parte de metadados aser adicionado ou a ser mudado, por exemplo, mudando um nomede companhia de "Companhia ABC" para "Companhia XYZ", a pri-meira aplicação pode ouvir a essa mudança para automatica-mente atualizar sua lista de símbolos de estoque para inclu-ir o símbolo de estoque para "Companhia XYZ" ao invés de"Companhia ABC". Em adição, tais mudanças e quaisquer efei-tos laterais associados podem ser. reunidos pelo armazenadorde dados 208, tal que desfazer uma ou mais mudanças revertetodas as mudanças relacionadas.
A FIGURA 3 ilustra um diagrama de sistema que mos-tra a interação entre os consumidores de dados internos eexternos com os armazenadores de dados XML. Como ilustrado,o sistema 300 inclui um armazenador de dados 302 incluindouma camada de apresentação 304, os armazenadores XML I-N(306) que cada um inclui um armazenador de erro e um armaze-nador de desfazer, um armazenador de mudança global 308, umarmazenador de desfazer global opcional 310, um agente in-terno 312 que é acoplado a consumidores de dados internos 1-N 314 e um agente externo 316 que é acoplado a consumidoresde dados externos I-N 318.
Usando o Armazenador (es) de Dados XML 306, os do-cumentos têm a capacidade de conter qualquer número de itensde dados arbitrários (contanto que cada um obedeça à sintaxeXML padrão). Metadados arbitrários podem ser armazenados co-mo XML em um documento e essa informação pode ser automati-camente convertida quando o documento é aberto/editado/salvopelo usuário.
Como discutido acima, o acesso programático a es-ses dados é fornecido via uma API que pode ser utilizada en-quanto o documento está sendo editado, fornecendo um meca-nismo padrão familiar aos desenvolvedores de solução via oqual essa informação pode ser acessada e modificada de formaprogramática enquanto o documento está aberto. De acordo comuma modalidade, esse acesso programático é projetado paraimitar interfaces XML padrão. Usando a API, dados podem seradicionados/removidos enquanto a aplicação, tal como uma a-plicação de processamento de palavras, está executando; da-dos podem ser povoados em um item de armazenador (uma parteno armazenador de dados); dados podem ser manipulados usandoconceitos XML padrão; esquemas podem ser associados comquaisquer dados XML arbitrários no armazenador de dados; es-quemas podem ser adicionados/removidos/alterados uma vez queassociados com o item de armazenador de dados; e mudançasXML podem ser reveladas a quaisquer clientes ouvidos. Comoilustrado, a API compreende um agente externo 316 que forne-ce uma interface para os consumidores de dados externos 318e um agente interno 312 que fornece uma interface paraquaisquer consumidores de dados internos 314 que interagemcom o armazenador de dados 302.
Manipulações ao armazenador de dados 302 podem o-correr em tempo real. Como discutido acima, os armazenadoresde dados 306 podem conter um ou mais tipos de dados. Por e-xemplo, uma companhia deve ter um armazenador de dados queeles estão usando para armazenar todos os tipos diferentesde dados que eles desejam armazenar em um único armazenadorde dados, enquanto a companhia deve desejar armazenar dife-rentes tipos de dados através de diferentes armazenadores dedados.
Consumidores de dados 318 podem registrar eventosque se referem a ações considerando os armazenadores de da-dos 306. Por exemplo, um consumidor de dados pode registrarpara receber um evento quando qualquer tipo de mudança éfeito em um ou mais armazenadores de dados. Um outro consu-midor de dados pode registrar mudanças que aconteceram em umcerto elemento ou conjunto de elementos em um armazenador dedados. Eventos comuns incluem, carregar um armazenador dedados, adicionar a um armazenador de dados e apagar de umarmazenador de dados. Quando o evento ocorre, cada consumi-dor de dados que registrou pode reagir à mudança enquanto oestado dos armazenadores de dados é mantido consistentemen-te, Muitas vezes, um consumidor de dados não executaráquaisquer ações quando uma mudança é feita. Outras vezes, oconsumidor de dados executará alguma ação(ões) em respostaao evento. Por exemplo, um consumidor de dados pode fazeralgumas mudanças ao armazenador de dados em resposta à mu-dança, tal como, em resposta a uma mudança de título, atua-lizar cabeçalhos no documento. 0 consumidor de dados podetambém executar algumas outras operações que não afetam odocumento. Por exemplo, se o símbolo de estoque mais grossoé inserido, o consumidor de dados pode restaurar dados quesão associados com aquele símbolo de estoque mesmo que todosos dados recuperados não sejam exibidos no documento na ca-mada de apresentação. 0 consumidor de dados pode também re-jeitar a mudança. Por exemplo, se o consumidor de dados 1recebe uma mudança que eles não aceitam, o consumidor de da-dos pode retornar um sinalizador ao agente indicando que amudança não é aceita. Sempre que uma mudança não é aceita, amudança é retrocedida, junto com quaisquer efeitos laterais,tal que a mudança nunca ocorreu. Cada armazenador XML 306pode utilizar seu armazenador de desfazer para desfazer asmudanças que ele fez. Alternativamente, o armazenador dedesfazer global 310 pode ser utilizado para desfazer as mu-danças feitas através dos armazenadores de dados. Imagina-seque há três consumidores de dados que são interessados noque está acontecendo às propriedades do documento, tal quecada um desses consumidores de dados que registraram recebeum evento relacionado a uma mudança das propriedades. Quandouma mudança é feita, o armazenador de dados determina cadaconsumidor de dados que registrou e informa cada um deles damudança em uma ordem pré-determinada. Cada consumidor de da-dos, por sua vez, pode executar alguma ação em resposta àmudança. Se a mudança, ou quaisquer outras mudanças feitaspelos consumidores de dados registrados como um resultado damudança, não são aceitas por qualquer um dos consumidores dedados, todas as mudanças relacionadas à mudança inicial sãodesfeitas.
A camada de interface de programação de aplicaçãode agente externo 316 fornece acesso ao armazenador de dados302 pelos consumidores de dados externos 318 e permite queos clientes terceiros interajam com o armazenador de dados302 exatamente como os consumidores de dados internos quesão associados com a aplicação interagem com o armazenadorde dados. Cada um dos armazenadores de dados XML 306 no ar-mazenador de dados 302 é fornecido com um ID exclusivo parapropósitos de identificação. Isso auxilia em localizar osarmazenadores de dados XML 306.
Em qualquer ponto, um consumidor de dados pode a-dicionar um esquema que é usado para validar os dados em umarmazenador de dados. Assim agora qualquer outro código deterceiro que vem junto e tenta mudar os dados, a primeiracoisa que o armazenador de dados fará é determinar se a mu-dança faz sentido com o esquema fornecido. Uma vez que umesquema é anexado, o agente se torna um objeto de validação.
Os armazenadores de dados podem também recebermais do que um elemento por vez. Fornecer os dados (XML) co-mo um fluxo particular pode auxiliar a satisfazer o esquemaem algumas situações. Por exemplo, supõe-se que um esquemaanexado diz que se os dados de estoque existem eles devemter pelo menos duas companhias. Se os dados de estoque foramadicionados um por um, eles não seriam válidos.
Um único passo é usado para validar os dados. Aoinvés de fazer dois passos que podem resultar em uma mudançasendo feita ao armazenador de dados, a validação é executadaantes dos dados serem reservados para o armazenador de da-dos. Isso auxilia em impedir um consumidor de dados de in-troduzir erros no armazenador de dados.
As FIGURAS 4 e 5 ilustram um processo para manipu-lar eventos relacionados a um armazenador de dados. Quandolendo a discussão das rotinas apresentadas aqui, dever-se-iaapreciar que as operações lógicas das várias modalidades sãoimplementadas (1) como uma seqüência de ações implementadaspor computador ou módulos de programa executando em um sis-tema de computação e/ou (2) como circuitos lógicos de máqui-na interconectados ou módulos de circuito no sistema de com-putação. A implementação é uma questão de escolha dependentedas exigências de desempenho do sistema de computação queestá implementando a invenção. Conseqüentemente, as opera-ções lógicas ilustradas e construindo as modalidades da des-crição feita aqui referem-se a várias operações, dispositi-vos estruturais, ações ou módulos. Essas operações, disposi-tivos estruturais, ações e módulos podem ser implementadosem software, em suporte lógico inalterável, em lógica digi-tal de propósito especial, e qualquer combinação desses.
A FIGURA 4 ilustra um processo para manipular e-ventos que estão associados com um armazenador de dados. Ge-ralmente, quando o armazenador de dados recebe uma solicita-ção de mudança a partir de um consumidor de dados, essa mu-dança é enviada a todos os consumidores de dados registradospara permitir que eles rejeitem a mudança, ou para solicitarefeitos laterais (outras mudanças XML) como um resultado damudança.
Depois de uma operação de inicio, o processo fluipara a operação 410, onde um consumidor se registra paraquaisquer eventos que ele está interessado em receber. Oseventos podem se referir a adicionar dados ao armazenador dedados, remover dados do armazenador de dados, fazer uma mu-dança nos dados no armazenador de dados, e seus similares. 0evento pode ser anexado a mudanças globais ou mudanças espe-cificas a elementos que são adicionados em um ou mais dosarmazenadores de dados. Por exemplo, um consumidor de dadospode desejar saber quando qualquer mudança é feita, onde umoutro cliente pode somente estar interessado em uma mudançaa um valor especifico no armazenador de dados.
Movendo para a operação de decisão 420, uma deter-minação é feita como se um evento ocorreu. 0 evento refere-se a uma mudança no armazenador de dados. Por exemplo, comodiscutido acima, o evento pode incluir adicionar, remover,ou fazer alguma outra mudança no armazenador de dados. Porexemplo, a mudança pode ser adicionar um nó no armazenadorde dados. Quando um evento não ocorreu, o processo retornapara a operação de decisão 420. Quando um evento ocorreu, oprocesso flui para a operação 430.
Na operação 430, a mudança é restabelecida paracada um dos consumidores de dados que tenham se registradopara a mudança. De acordo com uma modalidade, cada consumi-dor de dados é notificado em uma ordem pré-determinada. Porexemplo, a ordem pode ser baseada na ordem do registro dosconsumidores de dados.
Transitando para a operação 440, uma resposta éobtida a partir de cada um dos consumidores de dados que te-nham recebido a notificação de evento. Cada um dos clientespode aceitar ou rejeitar a mudança. As respostas determinamse a mudança será enviada ao armazenador de dados ou não.
Movendo para a operação de decisão 450, uma deter-minação é feita se qualquer um dos consumidores de dados re-jeitou a mudança para o armazenador de dados. Quando a mu-dança foi rejeitada por qualquer um dos consumidores de da-dos, o processo move para o bloco 460, onde quaisquer mudan-ças que foram feitas em resposta à mudança são retrocedidasse nenhuma mudança nunca aconteceu.
Quando todos os clientes notificados aceitam a mu-dança, o processo flui para a operação 470 onde a mudança éopcionalmente validada e então o processo flui para a opera-ção 480 onde a mudança é enviada ao armazenador de dados a-propriado.
O consumidor de dados original que iniciou a mu-dança então recebe a notificação de que a mudança foi aceita(operação 490) . O processo então move para um bloco final eretorna para processar outras ações.
A FIGURA 5 ilustra um processo para manipular umvento que inclui efeitos laterais. Geralmente, quando o ar-mazenador de dados recebe uma solicitação de mudança de umconsumidor de dados, essa mudança é enviada a todos os cli-entes registrados para permitir que eles rejeitem a mudança,ou para solicitar efeitos laterais (ou outras mudanças XML)como um resultado da mudança. Por exemplo, um cliente podeser informado de uma mudança a um item no armazenador de da-dos e como um resultado da mudança, o consumidor de dadosfaz uma outra mudança no armazenador de dados. Quando umamudança é solicitada como um efeito lateral, então o proces-so é levemente diferente do processo ilustrado na FIGURA 4.
Depois de uma operação de inicio, o processo fluipara a operação 510, onde um cliente inicia uma mudança deefeito lateral no armazenador de dados como um resultado damudança que está atualmente sendo aceita ou rejeitada.
Transitando para a operação 520, essa mudança deefeito lateral é listada, mas não executada. Em outras pala-vras, a mudança de efeito lateral não executa imediatamenteno armazenador de dados. Baseado nesse fato, alternativaspara os eventos incluem:
Forçar operações de nó (por exemplo, adicionar, substitu- ir) para retornar um vazio ao invés de um nó e documento que é uma solicitação, não uma ação. Tornar o resultado das opera- ções de nó consistente. Sem choque de desempenho. Apagar historia para o fato de que se deseja-se manipular um nó, faz-se isso em seu e- vento AfterAdd.Refletir o fato de que um chamador está Solicitando' uma mudança ao invés de fazer Torna o resultado de opera- ções de nó consistente. Sem choque de desempenho.<table>table see original document page 30</column></row><table>
Movendo para a operação de decisão 530, uma deter-minação é feita se qualquer um dos consumidores de dados re-jeitou a mudança original no armazenador de dados.
Quando a mudança foi rejeitada por qualquer um dosconsumidores de dados, o processo move para o bloco 540, on-de quaisquer mudanças que foram feitas em resposta à mudançae quaisquer mudanças de efeito lateral que estão em fila sãoretrocedidas se nenhuma mudança nunca aconteceu.
Quando os clientes aceitarem a mudança original, oprocesso flui para a operação 550, onde uma mudança é opcio-nalmente validada e então o processo flui para a operação560 onde a mudança original é enviada ao armazenador de da-dos apropriado.
O processo então move para a operação 570, onde asmudanças de efeito lateral são executadas uma de cada vez noarmazenador de dados. Cada mudança de efeito lateral podeentão ser aceita ou rejeitada por qualquer um dos clientesregistrados. Quando quaisquer das mudanças de efeito lateralsão rejeitadas, todas as mudanças que foram feitas são re-trocedidas se nenhuma das mudanças nunca aconteceu.
O processo então move para um bloco final e retor-na para processar outras ações.
Os seguintes são segmentos de código exemplifica-dos que ilustram alguma da funcionalidade comum exposta viao armazenador de dados OM:
O primeiro exemplo ilustra adicionar um fluxo aoarmazenador de dados.
Dim oStream As CustomXMLPartSet oStream = Document.XMLStreams.AddoStream.Load("c:\specSolution.xml")
0 segundo exemplo ilustra localizar um armazenadorde dados.
Dim oStream As CustomXMLPartSet oStream = Docu-ment. XMLStreams("http://www.microsoft.com/office/12/specs")
0 terceiro exemplo ilustra adicionar uma sub-árvore a um armazenador de dados.oStream.SelectionNamespaces =
oStream.SelectionNamespaces & "xmlns:s =
*http://www.microsoft.com/office/12/specs' "
oStream.SelectSingleNode("/s:spec/s:specBody/s:issues") .AppendSubtree ("<s : issueXs : issueBy/Xs : issueDate/><s : issueDesc/><s/:issue>")
De acordo com uma modalidade, as seguintes sãofunções exemplificadas que estão associadas com a API.
Events on CustomXMLNode
Eventos podem ocorrer no CustomXMLNode bem comoexatamente no nível de documento.
AfterInsert(NewNode as CustomXMLNode, InUndoRedoas Boolean)
Parâmetros: NewNode: Um objeto CustomXMLNode cor-respondendo ao nó agora adicionado ao CustomXMLNode. Nota:Esse nó pode ter filhos (se uma sub-árvore foi agora adicio-nada ao documento). InUndoRedo: um Booleano retornandoVERDADEIRO se o nó foi adicionado como parte de uma açãoDesfazer/Refazer pelo usuário, de outra forma FALSO.
Esse evento dispara sempre que os nós XML estãoquase para serem adicionados ao documento atual. Se a opera-ção de adicionar envolve uma sub-árvore de um documento XMLsendo adicionado no CustomXMLNode, esse evento é disparadouma vez para o nó mais no topo na mudança. Esse evento dis-para para cada mudança enviada ao armazenador de dados, as-sim efeitos laterais da mudança representados por esse even-to também disparam o evento.
AfterDelete(OldNode as CustomXMLNode, OldParent-Node as CustomXMLNode, OldNextSibling as CustomXMLNode, In-UndoRedo as Boolean)
Parâmetros: OldNode: Um objeto CustomXMLNode cor-respondendo ao nó que foi agora removido da CustomXMLPart.Nota #1: Esse nó pode ter filhos (se uma sub-árvore estásendo removida do documento) . Nota #2: Esse nó será um nóMesconectado' já que uma consulta pode ser feita para baixoa partir do nó, mas não pode subir - parece existir sozinho(isto é, é um elemento de documento w/ o mesmo OwnerStream) .OldParentNode: Um objeto CustomXMLNode correspondendo aoprimeiro nó pai do OldNode. OldNextSibling: Um objeto Cus-tomXMLNode correspondendo ao primeiro próximo irmão do Old-Node. InUndoRedo: Um booleano retornando VERDADEIRO se o nófoi adicionado como parte de uma ação Desfazer/Refazer pelousuário, de outra forma FALSO.
Esse evento dispara sempre que nós XML são apaga-dos do item atual no armazenador de dados. Se a operação deapagar envolve uma sub-árvore do documento XML na CustomXML-Part, dispara esse evento uma vez para o nó mais no topo namudança. Esse evento dispara uma vez para cada mudança envi-ada ao armazenador de dados, assim efeitos laterais da mu-dança representados por esse evento também disparam o even-to.
AfterReplace(OldNode as CustomXMLNode, NewNode asCustomXMLNode, InUndoRedo as Boolean)
Parâmetros: OldNode: Um objeto CustomXMLNode cor-respondendo ao nó que foi agora removido da CustomXMLPart.Nota #1: Esse nó pode ter filhos (se uma sub-árvore estásendo removida do documento) . Nota #2: Esse nó será um nóMesconectado' já que uma consulta pode ser feita para baixoa partir do nó, mas não pode subir - parece existir sozinho(isto é, é um elemento de documento com o mesmo OwnerStre-am) . NewNode: Um objeto CustomXMLNode correspondendo ao nóagora adicionado à CustomXMLPart. Nota: Esse nó pode ter fi-lhos (se uma sub-árvore foi agora adicionada ao documento).InUndoRedo: Um booleano retornando VERDADEIRO se o nó foiadicionado como parte de uma ação Desfazer/Refazer pelo usu-ário, de outra forma FALSO.
Esse evento dispara sempre que os nós XML sãosubstituídos no armazenador de dados. Se a operação de subs-tituir envolve uma sub-árvore do documento XML na CustomXML-Part, dispara esse evento uma vez para o nó mais no topo naimdança. Esse evento dispara para cada mudança enviada aoarmazenador de dados, assim efeitos laterais da mudança re-presentados por esse evento também disparam o evento.
CustomXMLParts(): Aponta para a coleção de todosos itens do armazenador de dados disponíveis no arquivo in-cluindo as propriedades do documento OLE e os fluxos de pro-priedades WSS.
CustomXMLPrefixMappings: Objeto representando to-dos os mapeamentos pré-fixados para a parte atual.
AddNamespace (Prefix as String, NamespaceURI asString) as Void.
Parâmetros: Prefixo: Uma seqüência representando oprefixo para adicionar à listagem de mapeamento de prefixo.NamespaceURI: Uma seqüência representando o namespace paradeterminar ao prefixo recentemente adicionado.
Permite que o desenvolvedor adicione um mapeamentode namespace/prefixo para usar quando consultando esse item.
Se o prefixo já existe no gerenciador, ele sobrescreve osignificado desse prefixo exceto quando o prefixo é um adi-cionado/usado pelo armazenador de dados internamente, entãoretornará um erro: "Esse prefixo já está em uso e não podeser modificado".
Count as Long: Retorna o número de mapeamentos deprefixo na coleção.
Item(Index as Long) as CustomXMLPrefixMapping
Parâmetros: Index: Um Longo representando o índicedo esquema desejado na coleção.
Retorna o CustomXMLPrefixMapping solicitado da co-leção. Membro padrão desse objeto.
LookupNamespace(Prefix as String) as StringParâmetros: Prefix: Uma seqüência representando umprefixo na lista de mapeamento de prefixo. Permite que o de-senvolvedor obtenha o namespace correspondente ao prefixoespecificado. Se um namespace não é atribuído ao prefixo so-licitado, retorna
LookupPrefix(NamespaceURI as String) as StringParâmetros: NamespaceURI: Uma seqüência represen-tando um namespace na lista de mapeamento de prefixo.
Permite que o desenvolvedor obtenha um prefixocorrespondente ao namespace especificado. Se um prefixo nãoé atribuído ao namespace solicitado, retorna "". Se há múl-tiplos prefixos especificados no gerenciador de namespace,retorna o primeiro que combina com o namespace fornecido.
CustomXMLPrefixMapping: Objeto representando ummapeamento de prefixo.
Prefix as String: Retorna o prefixo para esse ma-peamento de prefixo.
NamespaceURI as String: Retorna o namespace paraesse mapeamento de prefixo.CustomXMLSchema: Objeto representando um esquemaque é parte de uma coleção de esquemas.
Delete as Void: Apaga esse esquema da coleção deesquema. Se isso é feito para um esquema em uma coleção quejá está validada ou anexada a um fluxo (uma coleção viva deespécies), então falha com uma mensagem de erro: "Esse es-quema não pode ser apagado, à medida que a coleção de esque-mas está atualmente em uso".
Location as String: Retorna uma seqüência que re-presenta a localização desse esquema na máquina do usuário.
NamespaceURI as String: Retorna o namespace alvodesse esquema, "" se nenhum é especificado pelo XSD.
Reload as Void: Re-carrega esse esquema a partirdo disco, que traduz para retocar a cópia desse esquema nodisco para: atualizar sua localização (se o SL mudou) e as-segurar que ele ainda é um esquema válido. Se isso é feito aum esquema em uma coleção que já está validada ou presa a umfluxo (uma coleção viva de espécies), então falha com umamensagem de erro: "Esse esquema não pode ser re-carregado, àmedida que a coleção de esquemas está atualmente em uso".
CustomXMLSchemaCollection() : Objeto representandouma coleção de esquemas (que são/serão anexados a um fluxo).
Add([NamespaceURI as String], [Alias as String],[FileName as String], [InstallForAllUsers as BooleanFalse]) as CustomXMLSchema.
Parâmetros: NamespaceURI: Uma seqüência represen-tando o namespace do esquema a ser adicionado à coleção. Seo esquema existe na Biblioteca de Esquemas, restaurá-lo foradali. Alias: Uma seqüência representando o apelido do esque-ma a ser adicionado à coleção. Se o apelido existe no SL,encontra-lo usando esse argumento. FileName: Uma seqüênciarepresentando a localização no disco onde o esquema pode ser encontrado. Se esse parâmetro é especificado, não somenteadicionar o esquema à coleção, adicioná-lo ao SL. InstallFo-rAUUsers: Um Booleano representando se, no caso onde adi-cionar o esquema à Biblioteca de Esquemas, as chaves SL de-veriam ser escritas para HKLM (para todos os usuários) ouHKCU (para somente o usuário atual) . Padrão para Falso (es-crevendo para HKCU).
Esse método permite que o desenvolvedor adicioneum ou mais esquemas a uma coleção de esquemas a ser adicio-nada a um fluxo no armazenador de dados, bem como à Biblio-teca de Esquemas. Pode ser convocado com os seguintes con-juntos de parâmetros (no caso de conflito, tentar usar osparâmetros na seguinte ordem): [NamespaceURI], [Alias], Fi-IeName, [InstallForAllUsers] (adicionar um esquema à biblio-teca de esquemas se um não existe para esse namespace). So-mente o NamespaceURI (procura o XSD da biblioteca de esque-mas) . Somente o Alias (procura o XSD a partir da bibliotecade esquemas).
AddCollection(SchemaCollection as CustomXMLSche-mas ()) as Void.
Parâmetros: SchemaCollection: Um objeto CustomX-MLSchemas() representando uma coleção de esquemas a seremimportados na coleção atual.
Adicionar uma coleção já existente à coleção atu-al. Se namespaces colidem durante a importação (por exemplo,se um a.xsd já está ligado ao "fooNamespace", mas a coleçãode chegada tem b.xsd para o mesmo namespace) , a coleção dechegada ganha.
Count as Long: Retorna o número de esquemas na co-leção .
Item(Index as Variant) as CustomXMLSchema.
Parâmetros: Index: Uma variante indicando o itemdesejado na coleção. Pode ser qualquer um de: uma seqüênciarepresentando o namespace alvo do esquema desejado; ou umLongo representando o índice do esquema desejado na coleção.
Retorna o CustomXMLSchema solicitado a partir dacoleção. Membro padrão desse objeto.
NamespaceURI(Index as Long) as String.
Parâmetros: Index: Um Longo representando o índicedo esquema na coleção.
Retorna o namespace alvo do membro especificado dacoleção de esquemas.
Validate as Boolean: Retorna um Booleano represen-tando se os esquemas na coleção são validados ou não. Tambémisso é quando os Incluídos são cruzados para cada esquema nacoleção e adicioná-los aos esquemas que os solicitaram.
CustomXMLParts(): Coleção representando um conjun-to de objetos CustomXMLPart.
Add([XML as String]), [SchemaCollection as Cus-tomXMLSchemaCollection()]) as CustomXMLPart
Parâmetros: XML: Uma següência opcional represen-tando o XML para adicionar o CustomXMLPart recentemente cri-ado. SchemaCollection: Um objeto CustomDataSchemaCollecti-on() representando o conjunto de esquemas a serem usados pa-ra validar esse fluxo.
Permite que o usuário adicione um novo CustomXML-Part ao arquivo. Se o XML no parâmetro XML não é bem forma-do, falha e joga um erro: "Para adicionar conteúdo a essefluxo, ele deve ser XML válido bem formado". Se o usuáriofornece uma SchemaCollection: Validá-la (se ela ainda nãofoi validada). Jogar quaisquer erros de análise MSXML rece-bidos de volta ao cliente OM e falhar em adicionar o fluxo.Verificar se o parâmetro XML pode ser carregado em um DOM.Se não puder, falha e joga um erro: "Para adicionar conteúdoa um fluxo, ele deve ser XML válido bem formado". Anexar acoleção de esquemas ao DOM e tentar validar o documento deocorrência. Se não validar, falha e joga o erro de análiseXML recebido de volta ao cliente OM e não adiciona um fluxoà coleção.
Se o usuário NÃO fornece uma SchemaCollection, ve-rificar se o parâmetro XML pode ser carregado em um DOM. Senão puder, falha e joga um erro: "Para adicionar conteúdo aum fluxo, ele deve ser XML válido bem formado". Olhar nalista de namespaces relacionados no arquivo XML. Encontraresses esquemas a partir do SL e inferir uma coleção de es-quema para eles. Tentar validar a coleção de esquemas resul-tante. Se não validar, ainda adicionar o fluxo à coleção,mas ele não está associado com qualquer coleção de esquema eé, portanto, não validado. Anexar a coleção de esquemas aoDOM e tentar validar o documento de ocorrência. Se ele nãovalidar, falhar e jogar o erro de análise XML recebido devolta no cliente OM e não adicionar um fluxo à coleção. Seele não validar, ainda adicionar o fluxo à coleção, mas elenão está associado com qualquer coleção de esquema e é, por-tanto, não validado. Fornecer uma SchemaCollection vazia se-rá uma ação explicita que é obtida para significar "nuncavalidar esse fluxo".
Count as Long: Retorna o número de fluxos de dadospadrão na coleção.
Item(Index as Variant) as CustomXMLPartParâmetros: Index: Uma variante, que pode ser umdos seguintes dois tipos: um Longo representando o índice daCustomXMLPart na coleção; ou uma Seqüência representando onamespace raiz da CustomXMLPart padrão na coleção. Se maisdo que uma parte combina com esse namespace raiz, a primeiracombinação na ordem de índice será retornada.
Esse é o membro padrão do objeto CustomXMLParts, eele retorna um objeto CustomXMLPart correspondendo ao objetosolicitado.
SelectByID(ID as String) as CustomXMLPartParâmetros: ID: Uma seqüência contendo o ID para oitem de armazenador de dados que deveria ser retornado apartir da coleção.
Permite que o desenvolvedor capture um item espe-cífico a partir do armazenador de dados usando seu ID. Se umitem de armazenador com esse ID não existe, retorna Nada.
SelectByNamespace(NamespaceURI as String) as Cus-tomXMLParts().Parâmetros: NamespaceURI: Uma seqüência represen-tando o namespace raiz dos itens desejados a partir da cole-ção do armazenador de dados.
Retorna todos os itens do armazenador de dados cu-jo namespace combina com a entrada solicitada. Se nenhumfluxo com esse namespace raiz existe, retorna uma coleçãoCustomXMLParts() vazia.
StreamAfterAdd(NewStream as CustomXMLPart) .
Parâmetros: NewStream: Um objeto CustomXMLPartcontinha o fluxo que foi agora adicionado.
Esse evento dispara sempre que um novo fluxo é a-dicionado ao armazenador de dados. Se múltiplos fluxos sãoadicionados, o evento dispara uma vez para cada novo fluxo.Se o fluxo foi adicionado com conteúdo XML (usando o métodoAdd apropriado), então esse evento não deveria disparar atéque o item seja povoado com esse conteúdo.
StreamBeforeDelete(OldStream as CustomXMLPart).
Parâmetros: OldStream: Um objeto CustomXMLPart pa-drão continha o fluxo que está para ser apagado do armazena-dor de dados.
Esse evento dispara sempre que um fluxo é removidodo armazenador de dados. Se múltiplos fluxos são removidos,o evento dispara uma vez para cada fluxo que foi apagado.Também, sinalizar esse fluxo como 'para ser apagado' tal queas operações somente de leitura nele sejam válidas (por e-xemplo, consultando por nós, verificando valores, etc), masoperações de escrita falhem com uma mensagem de erro: "Essaoperação não pode ser executada em um fluxo que está paraser apagado".
CustomXMLPart: Objeto representando um único fluxoXML no armazenador de dados.
AddNode([Name as String], [NamespaceURI asString], Parent as CustoXMLNode, [NextSibling as Cus-tomXMLNode], [NodeType as msoCustomXMLNodeType], [NodeValueas String]) as Void.
Parâmetros: Name: Uma seqüência que representa onome base do nó a ser adicionado ao DOM XML. Namespace: Umaseqüência opcional que representa o namespace do nó a seradicionado ao DOM XML. Exigido para adicionar nós do tipomsoCustomXMLNodeElement ou msoCustomXMLNodeAttribute, igno-rado de outra forma. Parent: Um CustomXMLNode- representandoo nó sob o qual esse nó deveria ser adicionado. Se adicionarum atributo, denota o elemento ao qual o atributo deveriaser adicionado. NextSibling: Um CustomXMLNode opcional re-presentando o nó que deveria se tornar o próximo irmão donovo nó. Se não especificado, o nó adicionado ao fim do fi-lho do nó pai. Ignorado para adições do tipo msoXMLNodeAt-tribute. Se NextSibling não é um filho do pai, retornar umerro: "Esse nó não pode ser adicionado porque o próximo nóirmão não é um filho do nó pai". NodeType: Um msoCustomXML-NodeType opcional que especifica o tipo de nó a criar. Senão especificado, então assumido como sendo msoCustomXMLNo-deElement. NodeValue: Uma seqüência opcional que é usada pa-ra configurar o valor do nó para nós que permitem texto. Seo nó não permite texto, o parâmetro é ignorado.
Um método genérico para adicionar um nó XML a umitem do armazenador de dados. Parent é exigido e NodeTypefica padrão em msoXMLNodeElement. Se a adição resultante se-ria estruturalmente invalida, falha com uma mensagem de er-ro: "Essa operação não pode ser executada porque ela não re-sultaria em um fluxo de dados estruturalmente inválido". Seo namespace não está na coleção de referência de esquema,falha e fornece mensagem de erro: "Para adicionar esse ele-mento, deve-se primeiro anexar esse esquema ao fluxo de da-dos".
DocumentElement as CustomXMLNode.
Obtém o elemento raiz do fluxo. Se o fluxo estávazio, retorna Nada.
Delete as Void: Apaga a CustomXMLPart atual do ar-mazenador de dados. Se o usuário tenta apagar a parte depropriedades de núcleo, falha com: "Essa parte XML padrão éexigida para Office para funcionar apropriadamente e não po-de ser apagada".
ID as String: Retorna uma seqüência contendo umGUID atribuído à CustomXMLPart atual.
Load(FilePath as String) as Boolean.
Parâmetros: FilePath: Um objeto String correspon-dendo ao arquivo na máquina do usuário (ou rede, etc.) apartir do qual o XML para essa CustomXMLPart deveria sercarregado.
Permite que o autor do modelo povoe uma CustomXML-Part a partir de um arquivo previamente existente em sua má-quina. Retorna VERDADEIRO se o carregamento foi bem sucedi-do, FALSO se não (que inclui o caso onde o reforço de estru-tura é ligado e o XML é estruturalmente inválido ou o casoonde o XML não era válido e/ou bem formado) . Uma vez que oDOM é carregado, falha com "Esse DOM não pode ser carregadoduas vezes".
LoadXML(XML as String) as Boolean.Parâmetros: XML: Um objeto String correspondendoao XML com o qual essa CustomXMLPart deveria ser carregada.
Permite que o autor do modelo povoe uma CustomXML-Part a partir de uma seqüência de XML. Retorna VERDADEIRO seo carregamento foi bem sucedido, FALSO se não (o que incluio caso onde o reforço estrutural é ligado e o XML é estrutu-ralmente inválido ou o caso onde o XML não era válido e/oubem formado). Uma vez que o DOM é carregado, falha com "EsseDOM não pode ser carregado duas vezes".
NamespaceURI as String: Retorna uma seqüência con-tendo a URI de namespace completo para o nó raiz da CustomX-MLPart atual. Se o fluxo está vazio (criado, mas sem nós a-dicionados), retorna "".
SchemaCollection as CustomXMLSchemaCollection():Obtém/configura uma coleção CustomXMLSchemaCollection() re-presentando o conjunto de esquemas anexados a esse fluxo. Seo usuário fornece uma SchemaCollection, validá-la (se elaainda não foi validada). Jogar quaisquer erros de análiserecebidos de volta ao cliente e falhar em adicionar o fluxo;e anexar a coleção de esquema ao DOM e tentar validar o do-cumento de ocorrência. Se ele não validar, falhar e jogar oerro de análise recebido de volta no cliente e não mudar acoleção de esquema no fluxo.NamespaceManager as CustomXMLPrefixMappings() .
Obtém o conjunto de mapeamentos de prefixo de na-mespace usados contra a CustomXMLPart atual. Quando o docu-mento é aberto, esse é automaticamente povoado com os conte-údos dos mapeamentos de prefixo embutidos no item do armaze-nador de dados, mas ele pode ser editado/adicionado/apagadopelo autor do modelo. De acordo com uma modalidade, mudançasa esse parâmetro não são salvas com o documento, entretanto.
SelectNodes(XPath as String) as CustomXMLNodes().
Parâmetros: XPath: Uma Seqüência contendo a ex-pressão XPath para avaliar contra o DOM. Os mapeamentos deprefixo para esse XPath são restaurados a partir do gerenci-ador de namespace associado. Se o XPath não resolve, passaatravés de qualquer erro que foi gerado.
Esse método permite que o desenvolvedor devolva umconjunto de nós a partir do DOM.
SelectSingleNode(XPath as String) as CustomXMLNode
Parâmetros: Xpath: Uma seqüência contendo uma ex-pressão Xpath para avaliar contra o DOM. Os mapeamentos deprefixo para esse XPath são restaurados a partir do gerenci-ador de namespace associado. Se o XPath não resolve, passaatravés de quaisquer erros que foram gerados.
Esse método permite que o desenvolvedor devolva umúnico nó no DOM.
XML as String: Retorna a representação XML da Cus-tomXMLPart atual.
NodeAfterlnsert(NewNode as CustomXMLNode, InUndo-Redo as Boolean).Parâmetros: NewNode: Um objeto CustomXMLNode cor-respondendo ao nó agora adicionado à CustomXMLPart. Nota:Esse nó pode ter filhos (se uma sub-árvore foi agora adicio-nada ao documento). InUndoRedo: Um Booleano retornandoVERDADEIRO se o nó foi adicionado como parte de uma açãoDesfazer/Refazer pelo usuário, de outra forma FALSO.
Esse evento dispara sempre que os nós XML estãopara serem adicionados ao documento atual. Se a operação deadicionar envolve uma sub-árvore do documento XML sendo adi-cionado na CustomXMLPart, dispara esse evento uma vez para onó mais no topo na mudança. Esse evento dispara uma vez paracada mudança enviada ao armazenador de dados, assim efeitoslaterais da mudança representados por esse evento tambémdisparam o evento.
NodeAfterDelete(OldNode as CustomXMLNode, OldPa-rentNode as CustomXMLNode, OldNextSibling as CustomXMLNode,InUndoRedo as Boolean).
Parâmetros: OldNode: Um objeto CustomXMLNode cor-respondendo ao nó que foi agora removido da CustomXMLPart.Nota #1: Esse nó pode ter filhos (se uma sub-árvore estásendo removida do documento) . Nota #2: Esse nó será um nóxdesconectado' já que uma consulta pode ser feita para baixoa partir do nó, mas não pode subir - parece existir sozinho(isto é, é um elemento de documento com o mesmo OwnerStre-am) . OldParentNode: Um objeto CustomXMLNode correspondendoao primeiro nó pai do OldNode. OldNextSibling: Um objetoCustomXMLNode correspondendo ao primeiro próximo irmão doOldNode. InUndoRedo: Um booleano retornando VERDADEIRO se onó foi adicionado como parte de uma ação Desf azer/Ref azerpelo usuário, de outra forma FALSO.
Esse evento dispara sempre que os nós XML são apa-gados do item atual no armazenador de dados. Se a operaçãode apagar envolve uma sub-árvore do documento XML na Cus-tomXMLPart, dispara esse evento uma vez para o nó mais notopo na mudança. Esse evento dispara uma vez para cada mu-dança enviada ao armazenador de dados, assim efeitos late-rais da mudança representados por esse evento também dispa-ram o evento.
NodeAfterReplace(OldNode as CustomXMLNode, NewNodeas CustomXMLNode, InUndoRedo as Boolean).
Parâmetros: GldNode: Um objeto CustomXMLNode cor-respondendo ao nó que foi agora removido da CustomXMLPart.Nota #1: Esse nó pode ter filhos (se uma sub-árvore estásendo removida do documento) . Nota #2: Esse nó será um nóMesconectado' já que uma consulta pode ser feita para baixoa partir do nó, mas não pode subir - parece existir sozinho(isto é, é um elemento de documento com o mesmo OwnerStre- am) . NextNode: Um objeto CustomXMLNode correspondendo ao nóagora adicionado à CustomXMLPart. Nota: Esse nó pode ter fi-lhos (se uma sub-árvore foi agora removida do documento).InUndoRedo: Um booleano retornando VERDADEIRO se o nó foiadicionado como parte de uma ação Desfazer/Refazer pelo usu-ário, de outra forma FALSO.
Esse evento dispara sempre que os nós XML sãosubstituídos no armazenador de dados. Se a operação de subs-tituir envolve uma sub-árvore do documento XML na CustomXML-Part, esse evento é disparado uma vez para o nó mais no topona mudança. Esse evento dispara uma vez para cada mudançaenviada ao armazenador de dados, assim efeitos laterais damudança representados por esse evento também disparam o e-vento.
CustomXMLNodes(): Uma coleção representando umconjunto de objetos CustomXMLNode no documento atual.
Count as Long: Retorna o número de CustomXMLNodesna coleção.
Item(Index as Long) as CustomXMLNode
Parâmetros: Index: Um Longo representando o índicedo CustomXMLNode desejado na coleção.
Esse é o membro padrão do objeto CustomXMLNodes, eele retorna um objeto CustomXMLNode correspondendo ao itemsolicitado na coleção.
CustomXMLNode
AppendChildNode([Name as String], [NamespaceURI asString], [NodeType as msoCustomXMLNodeType] , [NodeValue asString]) as Void
Parâmetros: Name: Uma seqüência opcional que re-presenta o nome base do elemento a ser adicionado ao DOMXML. Namespace: Uma seqüência opcional que representa o na-mespace do elemento a ser adicionado ao DOM XML. Exigido pa-ra adicionar nós do tipo msoCustomXMLNodeElement ou msoCus-tomXMLNodeAttribute, ignorado de outra forma. NodeType: UmmsoCustomXMLNodeType opcional que especifica o tipo de nó acriar. NodeValue: Uma seqüência opcional que é usada paraconfigurar o valor do nó para nós que permitem texto. Se onó não permite texto, o parâmetro é ignorado.
Permite que o desenvolvedor adicione um único nócomo o ultimo filho sob o elemento de contexto na árvore, seo nó de contexto é do tipo msoXMLNodeElement. Se não é, en-tão o método falha com um erro: "Você não pode anexar filhosa comentários, instruções de processamento ou atributos".Também bloquear qualquer caso onde o nó seria adicionar é umatributo que já existe: "Um atributo do mesmo nome já existeno elemento atual".
AppendChildSubtree(XML as String) as Void
Parâmetros: XML: Uma seqüência representando asub-árvore para adicionar ao DOM XML. Esse XML deve ser umdocumento XML bem formado (inclui declarações de namespace,único nó raiz, etc.) . Se não é, falha com um erro: "Para a-dicionar uma sub-árvore XML a seu documento, ele deve conterXML válido bem formado".
Permite que o desenvolvedor adicione uma sub-árvore XML bem formada existente como o último filho sob oelemento de contexto no DOM, se o nó de contexto é do tipomsoXMLNodeElement. Se não é, então o método falha com um er-ro: "Você não pode anexar filhos a comentários, instruçõesde processamento ou atributos".
Attributes as CustomXMLNodes(): Retorna uma cole-ção CustomXMLNodes representando os atributos no elementoatual.
BaseName as String: Esse é o membro padrão de Cus-tomXMLNode. Ele retorna o nome base do nó sem o prefixo denamespace, se um existe no DOM.ChildNodes as CustomXMLNodes: Retorna uma coleçãoCustomXMLNodes que contém todos os elementos que são filhosdo nó atual.
Delete as Void: Apaga o nó atual do DOM XML (in-cluindo todos os seus filhos, se houver algum). Se o apaga-mento resultante seria estruturalmente inválido, falha comuma mensagem de erro: "Essa operação não pode ser executadaporque resultaria em um DOM estruturalmente inválido".
FirstChild as CustomXMLNode: Retorna um objetoCustomXMLNode correspondendo ao primeiro elemento filho donó atual. Se o nó não tem elemento filho (ou se ele não é dotipo msoCustomXMLNodeElement), retorna Nada.
HasChildNodes as Boolean: Retorna um B"ooleano queé Verdadeiro se o nó atual tem nós de elemento filho, de ou-tra forma Falso. Esse retorna falso quando CustomXMLNode nãoé de NodeType msoCustomXMLNodeElement.
InsertNodeBefore([Name as String], [NamespaceURIas String], [NodeType as msoCustomXMLNodeType], [NodeValueas String], [NextSibling as CustomXMLNode] ) as Void.
Parâmetros: Name: Uma seqüência que representa onome base do elemento a ser adicionado ao DOM XML. Namespa-ce: Uma seqüência opcional que representa o namespace do e-lemento a ser adicionado ao DOM XML. Exigido para adicionarnós do tipo msoCustomXMLNodeElement ou msoCustomXMLNodeAt-tribute, ignorado de outra forma. NodeType: Um msoCustomXML-NodeType opcional que especifica o tipo de nó a criar. Senão especificado, é assumido como sendo msoCustomXMLNodeEle-ment. NodeValue: Uma seqüência opcional que é usada paraconfigurar o valor do nó para nós que permitem texto. Se onó não permite texto, o parâmetro é ignorado. NextSibling:Um objeto CustomXMLNode opcional que especifica o nó antesdo qual o novo elemento XML deveria ser adicionado à árvore.
Insere um novo nó filho na árvore na localizaçãoespecificada. Se BeforeNode não está presente quando adicio-nando um nó do tipo msoCustomXMLNodeElement, msoCustomXMLNo-deComment, ou msoCustomXMLNodeProcessinglnstruction, o nó éadicionado ao fim da lista. Se adicionado para o tipo mso-CustomXMLNodeAttribute, ele é ignorado. Se NextSibling não éum filho do nó de contexto, então o método falha com: "Essenó XML não pode ser adicionado porque o próximo elemento ir-mão deve ser um filho do elemento de contexto". Se a adiçãoresultante seria estruturalmente inválida (e reforço de es-quema está ligado) falha com uma mensagem de erro: "Essa o-peração não pode ser executada porque ela resultaria em umDOM estruturalmente inválido". Também bloquear qualquer casoonde o nó que seria adicionado é um atributo que já. existe:"Um atributo do mesmo nome já existe no elemento atual".
InsertSubtreeBefore(XML as String, [NextSibling asCustomXMLNode]) as Void
Parâmetros: XML: Uma seqüência representando asub-árvore para adicionar ao DOM XML. Esse XML deve ser umdocumento XML bem formado (incluindo declarações de namespa-ce, único nó raiz, etc.) . Se não é, falha com um erro: "Paraadicionar uma sub-árvore XML a seu documento, ela deve con-ter XML válido bem formado". NextSibling: Um objeto CustomX-MLNode opcional que especifica o nó antes do qual o novo e-lemento XML deveria ser adicionado à árvore.
Insere a sub-árvore XML especificada no conjuntode nós filhos na localização especificada. Se NextSiblingnão é um filho do nó de contexto, então o método falha com:"Esse nó XML não pode ser adicionado porque o próximo irmãodeve ser um filho do elemento de contexto". Se a adição re-sultante fosse estruturalmente inválida, falha com uma men-sagem de erro: "Essa operação não pode ser executada porqueela resultaria em um DOM estruturalmente inválido".
LastChild as CustomXMLNode: Retorna um objeto Cus-tomXMLNode correspondendo ao último elemento filho do nó a-tual. Se o nó não tem elementos filho (ou se ele não é dotipo msoCustomXMLNodeElement), retorna Nada.
NamespaceURI as String [somente de leitura]
Retorna uma seqüência correspondendo ao namespacedo nó atual. Se o nó é do tipo msoCustomXMLNodeComment, mso-CustomXMLNodeProcessinglnstruction retorna "".
NextSibling as CustomXMLNode: Retorna o próximo nóirmão (elemento, comentário, ou instrução de processamento)do nó atual. Se o nó é o último irmão do seu nivel, retornaNada.
NodeType as msoCustomXMLNodeType: Retorna um mso-CustomXMLNodeType constante representando o tipo do nó atu-al.
NodeValue as String: Obtém/configura o texto den-tro dos nós que contêm somente texto (isto é, nós de texto,comentários, instruções de processamento, atributos). Paraelementos, falha com: "Você não pode configurar o parâmetroNodeValue para nós de elemento".
OwnerDocument as Variant: Retorna o objeto Docu-ment/Workbook/Presentation representando o documento do Wordassociado com esse nó.
OwnerStream as CustomXMLPart: Retorna o objetoCustomXMLPart representando o item do armazenador de dadosassociado com esse nó.
PreviousSibling as CustomXMLNode: Retorna o nó ir-mão anterior (elemento, comentário, ou instrução de proces-samento) do nó atual. Se o nó é o primeiro irmão em seu ní-vel, retorna Nada.
ParentNode as CustomXMLNode: Retorna o nó de ele-mento pai do nó atual. Se o nó está no nível raiz, retornaNada.
RemoveChild(Child as CustomXMLNode) as Void'
Parâmetros: Child: Um objeto CustomXMLNode que re-presenta o nó filho do nó de contexto a ser apagado. Se essenó não é um filho do nó de contexto, falha com a mensagem deerro: "Esse nó não pode ser removido porque ele não é um fi-lho do elemento atual".
Remove o nó filho especificado do fluxo. Se o DOMresultante fosse estruturalmente inválido, falha com umamensagem de erro: "Essa operação não pode ser executada por-que ela resultaria em um DOM estruturalmente inválido".
ReplaceChildNode(Name as String, [Namespace asString], [NodeType as msoCustomXMLNodeType], [NodeValue asString], OldNode as CustomXMLNode) as Void
Parâmetros: OldNode: Um CustomXMLNode representan-do o nó filho a ser substituído. Name: uma seqüência que re-presenta o nome base do elemento a ser adicionado ao DOMXML. Namespace: Uma seqüência opcional que representa o na-mespace do elemento a ser adicionado ao DOM XML. Exigido pa-ra adicionar nós do tipo msoCustomXMLNodeElement ou msoCus-tomXMLNodeAttribute, de outra forma ignorado. NodeType: UmmsoCustomXMLNodeType opcional que especifica o tipo de nó acriar. Se não especificado, então assumido como sendo mso-CustomXMLNodeElement. NodeValue: Uma seqüência opcional queé usada para configurar o valor do nó para nós que permitemtexto. Se o nó não permite texto, o parâmetro é ignorado.
Remove o nó filho especificado (e sua sub-árvore)dofluxo, e o substitui com o nó especificado na mesma loca-lização. Se o OldNode não é um filho do nó de contexto, fa-lha com uma mensagem de erro: "OldNode deve ser um filho donó atual". Se a substituição resultante fosse estruturalmen-te inválida, falha com uma mensagem de erro: "Essa operaçãonão pode ser executada porque ela resultaria em um DOM es-truturalmente inválido". Também bloquear qualquer caso ondeo nó que seria adicionado é um atributo que já existe: "Umatributo do mesmo nome já existe no elemento atual".
ReplaceChildSubtree(XML as String, OldNode as Cus-tomXMLNode) as Void
Parâmetros: OldNode: Um CustomXMLNode representan-do o nó filho a ser substituído. XML: Uma seqüência repre-sentando a sub-árvore para adicionar ao DOM XML. Esse XMLdeve ser um documento XML bem formado (incluindo declaraçõesde namespace, único nó raiz, etc.) . Se não é, falha com umerro: "Para adicionar uma sub-árvore XML a seu documento,ela deve conter XML válido bem formado".
Remove o nó especificado (e sua sub-árvore) dofluxo, e o substitui na mesma localização com a sub-árvoreXML especificada. Se o OldNode não é um filho do nó de con-texto, falha com uma mensagem de erro: "OldNode deve ser umfilho do nó atual". Se a substituição resultante fosse es-truturalmente inválida, falha com uma mensagem de erro: "Es-sa operação não pode ser executada porque ela resultaria emum DOM estruturalmente inválido".
SelectNodes(XPath as String) as CustomXMLNodesO
Parâmetros: XPath: Uma Seqüência contendo a ex-pressão XPath para avaliar contra o DOM. Os mapeamentos "'deprefixo para esse XPath são restaurados a partir da proprie-dade NamespaceManager. Se o XPath não resolve, passa atravésde qualquer erro que houve (nesse método no objeto Documenthoje com XML embutido).
Esse método permite que o desenvolvedor devolva umconjunto de nós a partir do item do armazenador de dados.
SelectSingleNode(XPath as String) as Cus-tomXMLNode()
Parâmetros: XPath: Uma seqüência contendo uma ex-pressão XPath para avaliar contra o DOM. Os mapeamentos deprefixo para esse XPath são restaurados a partir da proprie-dade NamespaceManager. Se o XPath não resolve, passa atravésde qualquer erro que houve (nesse método no objeto Documenthoje com XML embutido).
Esse método permite que o desenvolvedor devolva umúnico nó a partir do item do armazenador de dados.
Text as String: Obtém/configura o texto para o nóatual. Diferente de MSXML, configurar- isso em um nó substi-tui os conteúdos desse nó com a seqüência especificada - porexemplo, configurando-o para "test" em um elemento não folha<foo>, onde os conteúdos do foo parecem:
<foo>Bar
<baz>hello</baz></foo>
Não falhará, mas resultará em uma mensagem dife-rente internamente ao armazenador de dados, e externamenteaos clientes do armazenador de dados. Se a substituição re-sultante fosse estruturalmente inválida, falha com uma men-sagem de erro: "Essa operação não pode ser executada porqueela resultaria em um DOM estruturalmente inválido".
XML as String: Retorna a representação XML brutado nó atual e seus filhos (se houver algum).
XPath as String: Retorna uma seqüência com o XPathcanonicalizado para o nó atual. Se o nó não está mais no DOM(ele foi apagado), falha com: "Esse nó foi apagado da parteXML padrão associada".
Novas Enumerações:
msoCustomXMLDataNodeType representa os tipos denós XML disponíveis. msoCustomXMLNodeAttribute representa umnó de atributo XML. msoCustomXMLNodeCData representa um nóCDATA. msoCustomXMLNodeComment representa um nó de comentá-rio XML. msoCustomXMLNodeDocument representa um nó de docu-mento XML (/). msoCustomXMLNodeElement representa um nó deelemento XML. msoCustomXMLNodeProcessinglnstruction repre-senta um nó de instrução de processamento XML. msoCustomXML-NodeText representa um nó de texto.
ReplaceChild(Child as CustomXMLNode, Name asString, [Namespace as String], [NodeType as String], [Node-Value as String]) as CustomXMLNode
Parâmetros: Child: Um objeto CustomXMLNode que re-presenta o nó filho do nó de contexto a ser apagado. Se essenó não é um filho do nó de contexto, falha com a mensagem deerro: "Esse nó não pode ser removido porque ele não é um fi-lho do elemento atual". Name: Uma seqüência que representa onome base do elemento a ser adicionado ao DOM XML. Namespa-ce: Uma seqüência opcional que representa o namespace do e-lemento a ser adicionado ao DOM XML. Exigido para adicionarnós do tipo msoCustomXMLNodeElement ou msoCustomXMLNodeAt-tribute, de outra forma ignorado. NodeType: Um msoCustomXML-NodeType opcional que especifica o tipo de nó a criar. Senão especificado, então assumido como sendo msoCustomXMLNo-deElement. NodeValue: Uma seqüência opcional que é usada pa-ra configurar o valor do nó para nós que permitem texto. Seo nó não permite texto, o parâmetro é ignorado.
Remove o nó filho especificado (e sua . sub-árvore)do fluxo, e o substitui com o nó especificado na mesma Ioca-lização. Se o apagamento resultante fosse estruturalmenteinválido (e reforço de esquema é ligado) falha com uma men-sagem de erro: "Essa operação não pode ser executada porqueresultaria em um DOM estruturalmente inválido".XMLNamespace: O objeto representando um único na-mespace exclusivo na Biblioteca de Esquemas.
AttachToCustomXMLPart(CustomXMLPart as Variant) asVoid
Parâmetros: CustomXMLPart: Uma Variante, que podeser ou o objeto CustomXMLPart para o fluxo desejado, ou oíndice desse fluxo na coleção CustomXMLParts.
Anexa o esquema para seu namespace XML à dada Cus-tomXMLPart.
XMLSchemaReference: O objeto representando um úni-co namespace exclusivo referido no documento atual.
Delete () as Void: Remove o namespace - bem comotodos os elementos nesse namespace - a partir da CustomXML-Part. Entretanto, nesse caso, o armazenador de dados poderejeitar essa operação porque o reforço de esquema estrutu-ral é habilitado e remover esses elementos resultaria em umDOM estruturalmente inválido. Nesse caso, falha e joga umerro: "Essa operação não pode ser executada enquanto o re-forço de esquema é habilitado, porque o fluxo resultante se-ria estruturalmente inválido".
Add(Name as String, Namespace as String, [Parentas CustomXMLNode], [NextSibling as CustomXMLDataNode] ,[NodeType as msoXMLNodeType], [NodeValue as String] as Cus-tomXMLNode.
Parâmetros: Name: Uma seqüência que representa onome base do elemento a ser adicionado ao DOM XML. Namespa-ce: Uma seqüência opcional que representa o namespace do e-lemento a ser adicionado ao DOM XML. Exigido para adicionarnós do tipo msoCustomXMLNodeElement ou msoCustomXMLNodeAt-tribute, de outra forma ignorado. Parent: Um CustomXMLNoderepresentando o nó sob o qual esse nó deveria ser adiciona-do. Se chamado da coleção CustomXMLNodes retornada pela pro-priedade Attributes, então assumido como sendo o nó pai dosatributos. Se chamado em qualquer outro caso, então esse pa-râmetro é especificado ou retorna um erro: "Você deve espe-cificar um nó pai para adicionar esse nó a seu documento".NextSibling: Um CustomXMLNode opcional representando o nóque deveria se tornar o próximo irmão do novo nó. Se não es-pecificado, o nó é adicionado ao fim dos filhos do nó pai.Ignorado para adições do tipo msoXMLNodeAttribute. Se Next-Sibling não é um filho do pai, retorna- um erro: "Esse nó nãopode ser adicionado porque o próximo nó irmão não é um filhodo nó pai". NodeType: Um msoCustomXMLNodeType opcional queespecifica o tipo de nó a criar. Se não especificado, entãoassumido como sendo msoXMLNodeElement a menos que chamado apartir das propriedades Attributes, então assumido como sen-do msoXMLNodeAttribute. NodeValue: Uma seqüência opcional que é usada para configurar o valor do nó para nós que per-mitem texto. Se o nó não permite texto, o parâmetro é igno-rado .
Um método genérico para adicionar um nó XML a umitem do armazenador de dados. Se chamado de um objeto Cus-tomXMLNodes retorna pela propriedade Attributes, então o Pa-rent tem um padrão do nó pai e o NodeType tem um padrão demsoXMLNodeAttribute. Em todos os outros casos, Parent é exi-gido e NodeType padroniza para msoXMLNodeElement. Se a adi-ção resultante fosse estruturalmente inválida (e reforço deesquema é ligado) falha com uma mensagem de erro: "Essa ope-ração não pode ser executada enquanto o reforço de esquemaestá ligado, porque resultaria em um fluxo de dados estrutu-ralmente inválido". Se o namespace não é a coleção de refe-rências de esquema, falha e mensagem de erro: "Para adicio-nar esse elemento, você deve primeiro anexar esse esquema aofluxo de dados".
CustomDataXMLSchemaReferencesO: Coleção represen-tando todos os namespaces exclusivos identificados na Cus-tomXMLPart. Nota: Por padrão, povoar essa com uma entradapara cada namespace declarado no arquivo XML.
Add ( [NamespaceURI as String]- , [Alias as String] ,-[FileName as String], [InstallForAllUsers as BooleanFalse]) as XMLSchemaReference.
Parâmetros: NamespaceURI: Uma seqüência contendo onamespace definido pelo esquema para adicionar à coleção deesquema. Alias: Uma seqüência contendo um apelido para es-crever quando adicionando esse esquema à biblioteca de es-quemas. FileName: Uma seqüência contendo o caminho para oesquema que deveria ser adicionado à biblioteca de esquemas.InstallForAllUsers: Um Booleano determinando se as chaves daBiblioteca de Esquemas deveriam ser adicionadas a HKCU (opadrão) ou HKLM.
Esse método adiciona uma referência de esquema.
Para fazer isso, adicionar a declaração de namespace apro-priada ao elemento raiz da CustomXMLPart se ela já não estádefinida no arquivo. Em tempo aberto, todos os namespacesdeclarados são usados para povoar essa coleção.
EnforceStructure as Boolean: Obtém e configura umBooleano que corresponde a se o armazenador de dados deveriareforçar validade estrutural na CustomXMLPart associada deacordo com esse esquema. Se o usuário tenta configurar essapropriedade para VERDADEIRO, enquanto os conteúdos da Cus-tomXMLPart não são válidos, retorna um erro: "Reforço de es-quema não pode ser ligado enquanto os conteúdos desse fluxode dados são estruturalmente inválidos".
Count as Long: Retorna o número de namespaces atu-almente relacionados nessa CustomXMLPart.
Item(Index as Variant) as XMLSchemaReference
Parâmetros: Index: Uma variante, que pode see umdos seguintes tipos: Um Longo representando o índice do Cus-tomDataXMLSchemaReference desejado na coleção; uma seqüênciarepresentando o namespace alvo do CustomDataXMLSchemaRefe-rence desejado na coleção.
Esse é o membro padrão do objeto CustomDataXMLS-chemaReferences e ele retorna um objeto XMLSchemaReferencecorrespondendo ao objeto solicitado.
ValidateO as Void: Esse método valida o fluxo in-teiro contra todos os esquemas na coleção CustomDataXMLSche-maReferences. Erros são relatados nos nós individuais (ver apropriedade .ValidationStatus).
CustomXMLNode
NodeAfterInsert(NewCustomXMLNode as CustomXMLNode,InUndoRedo as Boolean).
Parâmetros: NewCustomXMLNode: Um objeto CustomXML-Node correspondendo ao nó agora adicionado à CustomXMLPart.Nota: Esse nó pode ter filhos (se uma sub-árvore foi agoraadicionada ao documento). InUndoRedo: um Booleano retornandoVERDADEIRO se o nó foi adicionado como parte de uma açãoDesfazér/Refazer pelo usuário, de outra forma FALSO.
Esse evento dispara sempre que os nós XML estãoquase para serem adicionados ao documento atual. Se a opera-ção de adicionar envolve uma sub-árvore de um documento XMLsendo adicionado na CustomXMLPart, esse evento é disparadouma vez para o nó mais no topo na mudança. Esse evento dis-para uma vez para cada mudança enviada ao armazenador de da-dos, assim efeitos laterais da mudança representados por es-se evento - também disparam o -evento.
NodeBeforeDelete(OldCustomXMLNode as CustomXMLNo-de, InUndoRedo as Boolean).
Parâmetros: OldCustomXMLNode: Um objeto CustomXML-Node correspondendo ao nó para ser removido da CustomXML-Part. Nota: Esse nó pode ter filhos (se uma sub-árvore estásendo removida do documento). InUndoRedo: Um Booleano retor-nando VERDADEIRO se o nó foi adicionado como parte de umaação Desfazer/Refazer pelo usuário, de outra forma FALSO.
Esse evento dispara sempre que os nós XML são apa-gados no item atual no armazenador de dados. Se a operaçãode apagar envolve uma sub-árvore de um documento XML na Cus-tomXMLPart, esse evento é disparado uma vez para o nó maisno topo na mudança. Esse evento dispara uma vez para cadamudança enviada ao armazenador de dados, assim efeitos late-rais da mudança representados por esse evento também dispa-ram o evento. Se ο manipulador de evento tenta modificarqualquer coisa que estaria sob esse nó, falha com uma mensa-gem de erro: "Essa mudança não é permitida porque esse nóestá para ser apagado".
A especificação acima, exemplos e dados fornecemuma descrição completa da fabricação e uso da composição dainvenção. Já que muitas modalidades da invenção podem serfeitas sem abandonar o espirito e escopo da invenção, a in-venção reside nas reivindicações anexadas aqui a seguir.

Claims (20)

1. Meio legível por computador que tem instruçõesexecutáveis por computador para gerenciar dados associadoscom documentos gerados por computador, CARACTERIZADO pelofato de que compreende:armazenar itens de dados estruturados que estãoassociados com um documento em um armazenador de dados que émantido separadamente do documento; eexpor uma interface de programação de aplicação(API) a consumidores de dados para permitir acesso programá-tico ao item de dados estruturado pelos consumidores de da-dos; onde a API fornece a capacidade de acesso aos itens dedados estruturados no armazenador de dados enquanto o docu-mento está aberto e quando o documento é fechado.
2. Meio legível por computador, de acordo com areivindicação 1, CARACTERIZADO adicionalmente pelo fato deque compreende estruturar o item de dados estruturado de a-cordo com uma Linguagem de Marcação Extensível (XML) .
3. Meio legível por computador, de acordo com areivindicação 2, CARACTERIZADO pelo fato de que a API quepermite o acesso programático ao item de dados estruturadopelos consumidores de dados compreende permitir que mais deum consumidor de dados acesse um mesmo item de dados estru-turado ao mesmo tempo.
4. Meio legível por computador, de acordo com areivindicação 3, CARACTERIZADO adicionalmente pelo fato deque compreende determinar quando uma mudança é feita em umdos itens de dados estruturados utilizando a API; e quandouma mudança é feita, notificar os consumidores de dados re-gistrados da mudança; e determinar quando a mudança é aceitaou rejeitada por cada um dos consumidores de dados registra-dos .
5. Meio legível por computador, de acordo com areivindicação 4, CARACTERIZADO adicionalmente pelo fato deque compreende o retrocesso da mudança quando um dos consu-midores de dados registrados rejeita a mudança, e o envio damudança ao armazenamento de dados quando cada um dos consu-midores de dados registrados aceita a mudança.
6. Meio legível por computador, de acordo com areivindicação 5, CARACTERIZADO adicionalmente pelo fato deque compreende usar a API para associar o item de dados es-truturado com um arquivo de esquema XML que é usado para va-lidar o item de dados estruturado antes da mudança ser envi-ada ao armazenador de dados.
7. Meio legível por computador, de acordo com areivindicação 2, CARACTERIZADO pelo fato de que a API forne-ce uma função de registrar para receber notificação para umanotificação de mudança em pelo menos um de: uma mudança noarmazenador de dados e uma mudança em um ou mais itens dedados estruturados; onde a mudança pode incluir um apagamen-to, uma adição, e uma modificação em pelo menos um do arma-zenador de dados e do item de dados estruturado.
8. Meio legível por computador, de acordo com areivindicação 7, CARACTERIZADO pelo fato de que a API forne-ce uma interface para adicionar um nó ao armazenador de da-dos; apagar um nó do armazenador de dados; e substituir umnó no armazenador de dados.
9. Meio legível por computador, de acordo com areivindicação 7, CARACTERIZADO pelo fato de que a API forne-ce uma interface para povoar o armazenador de dados usandoum arquivo existente; e para povoar o armazenador de dadosusando uma seqüência de XML.
10. Meio legível por computador, de acordo com areivindicação 7, CARACTERIZADO pelo fato de que a API forne-ce uma interface para adicionar um namespace; procurar umnamespace; adicionar um esquema; apagar um esquema, e re-carregar um esquema.
11. Meio legível por computador, de acordo com areivindicação 7, CARACTERIZADO pelo fato de que a API forne-ce uma interface para adicionar um fluxo; remover um fluxo;adicionar uma sub-árvore; remover uma sub-árvore; obter umpróximo irmão de um nó atual;· e obter um irmão anterior deum nó atual obtendo um tipo de nó.
12. Meio legível por computador, de acordo com areivindicação 7, CARACTERIZADO pelo fato de que a API forne-ce uma interface para obter um valor de nó; e para reforçaruma estrutura.
13. Método implementado por computador para geren-ciar dados associados com documentos gerados por computador,CARACTERIZADO pelo fato de que compreende:armazenar itens de dados estruturados que estãoassociados com documentos usando armazenadores de dados; on-de o item de dados estruturado é estruturado de acordo com aLinguagem de Marcação Extensível (XML); eexpor uma interface de programação de aplicação(API) a consumidores de dados que permitem acesso programá-tico aos documentos e aos itens de dados estruturados queestão contidos nos armazenadores de dados; e usar a API paraacessar os itens de dados estruturados nos armazenadores dedados ambos enquanto o documento está sendo editado e quandoo documento é fechado; e onde os consumidores de dados rece-bem uma notificação para uma mudança que é feita aos armaze-nadores de dados quando eles são registrados.
14. Método implementado por computador, de acordocom a reivindicação 13, CARACTERIZADO pelo fato de que usara API adicionalmente compreende:iniciar uma mudança a um dos armazenadores de da-dos usando a API;fornecer a notificação aos consumidores de dadosregistrados relacionada à mudança;determinar quando uma resposta a partir de um dosconsumidores de dados registrados é uma rejeição, e quando aresposta é uma rejeição, retroceder a mudança e quaisquermudanças de efeito lateral;determinar quando ·todos os consumidores de dadosregistrados aceitam a mudança; e quando os consumidores dedados registrados aceitam a mudança; opcionalmente validar amudança usando um arquivo de esquema XML que é fornecido porum dos consumidores de dados através de uma API; e enviar amudança a um ou mais dos armazenadores de dados.
15. Método implementado por computador, de acordocom a reivindicação 14, CARACTERIZADO pelo fato de que usara API adicionalmente compreende uma interface de programaçãopara: obter um valor para um nó; adicionar um nó; apagar umnó; mover um nó; adicionar um esquema; apagar um esquema;recarregar um esquema; adicionar um namespace; e remover umnamespace.
16. Sistema para gerenciar dados associados comdocumentos gerados por computador, CARACTERIZADO pelo fatode que compreende:consumidores de dados externos;um armazenador de dados de documento que é confi-gurado para armazenar documentos; eum armazenador de dados que é configurado para ar-mazenar itens de dados estruturados que são associados comum ou mais dos documentos; onde os armazenadores de dadosincluem: armazenadores de dados XML; um agente de API que éconfigurado para interagir com os consumidores de dados ex-ternos e consumidores de dados internos; um armazenador demudanças que é configurado para armazenar mudanças que sãoassociadas com uma mudança que é feita a um item de dadosestruturado; e um armazenador de desfazer que é configuradopara retroceder quaisquer mudanças feitas como um resultadoda mudança que é feita ao item de dados estruturado; onde oagente de API expõe uma interface de programação (API) quepermite acesso programático aos documentos e ao item de da-dos estruturado que estão contidos nos armazenadores de da-dos; e usar a API para acessar os itens de dados estrutura-dos nos armazenadores de dados ambos enquanto o documentoestá aberto e quando o documento é fechado.
17. Sistema, de acordo com a reivindicação 16,CARACTERIZADO pelo fato de que o armazenador de dados é adi-cionalmente configurado para:receber uma mudança a um dado de marcação de Lin-guagem de Marcação Extensível (XML) aplicado ao item de da-dos estruturado;ler um arquivo de esquema XML associado com o itemde dados estruturado ao qual a mudança nos dados de marcaçãoXML é direcionada;determinar se a mudança nos dados de marcação XMLé válida de acordo com o arquivo de esquema XML lido; enão permitir a mudança aos dados de marcação XMLse a"mudança nos dados de marcação XML não é válida de acor-do com o arquivo de esquema XML lido; e enviar a mudança aum ou mais armazenadores XML quando a mudança nos dados demarcação XML é válida de acordo com o arquivo de esquema XMLlido.
18. Sistema, de acordo com a reivindicação 16,CARACTERIZADO pelo fato de que os armazenadores de dados XMLcompreendem um armazenador de desfazer e um armazenador demudança.
19. Sistema, de acordo com a reivindicação 16,CARACTERIZADO pelo fato de que a API fornece uma interfacepara adicionar um nó ao armazenador de dados; apagar um nódo armazenador de dados; substituir um nó no armazenador dedados; e obter um valor do armazenador de dados.
20. Sistema, de acordo com a reivindicação 19,CARACTERIZADO pelo fato de que a API fornece uma interfacepara adicionar um esquema; apagar um esquema; e recarregarum esquema.
BRPI0615761-0A 2005-09-09 2006-09-08 programabilidade para armazenador de dados xml para documentos BRPI0615761A2 (pt)

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 (1)

Publication Number Publication Date
BRPI0615761A2 true BRPI0615761A2 (pt) 2011-05-24

Family

ID=39661992

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0615761-0A BRPI0615761A2 (pt) 2005-09-09 2006-09-08 programabilidade para armazenador de dados xml para documentos

Country Status (5)

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

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707498B2 (en) 2004-09-30 2010-04-27 Microsoft Corporation Specific type content manager in an electronic document
DE102008059197A1 (de) * 2008-11-27 2010-06-02 Bayerische Motoren Werke Aktiengesellschaft Verfahren und Vorrichtung zur verteilten Konfiguration von Telematik-Diensten in Kraftfahrzeug-Systemen
US9460099B2 (en) 2012-11-13 2016-10-04 Amazon Technologies, Inc. Dynamic selection of storage tiers
CN104639361B (zh) * 2013-11-15 2019-04-19 中兴通讯股份有限公司 网络服务模板的管理方法和装置
US11120210B2 (en) * 2014-07-18 2021-09-14 Microsoft Technology Licensing, Llc Entity recognition for enhanced document productivity
US10657323B2 (en) 2015-09-30 2020-05-19 Obschestvo S Ogranichennoy Otvetstvennostyu “Intersoft” Method of preparing documents in markup languages
RU2613026C1 (ru) * 2015-09-30 2017-03-14 Общество с ограниченной ответственностью "Интерсофт" Способ подготовки документов на языках разметки при реализации пользовательского интерфейса для работы с данными информационной системы
CN106528506B (zh) * 2016-10-20 2019-05-03 广东小天才科技有限公司 一种基于xml标签的数据处理方法、装置及终端设备
WO2019132689A1 (ru) * 2017-12-27 2019-07-04 Публичное Акционерное Общество "Сбербанк России" Автоматическая генерация программного кода для корпоративного хранилища данных
CN110489085A (zh) * 2019-02-21 2019-11-22 贵州广思信息网络有限公司 一种word内容控件扩展存储数据的方法
CN110458471B (zh) * 2019-08-19 2022-05-20 绍兴数纺科技有限公司 标准化染料信息管理系统
CN113297081A (zh) * 2021-05-26 2021-08-24 北京京东振世信息技术有限公司 一种持续集成流水线的执行方法和装置

Family Cites Families (6)

* 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
JP2001075949A (ja) * 1999-09-02 2001-03-23 Mitsubishi Materials Corp 情報共有装置、方法、及び、その記録媒体
US7716676B2 (en) * 2002-06-25 2010-05-11 Microsoft Corporation System and method for issuing a message to a program
JP2004199446A (ja) * 2002-12-19 2004-07-15 Fujitsu Social Science Laboratory Ltd 共有ドキュメント管理システム、メンバ端末装置、メンバ端末用ドキュメント共有処理プログラム、および共有ドキュメント管理プログラム

Also Published As

Publication number Publication date
KR20080043813A (ko) 2008-05-19
JP2009508228A (ja) 2009-02-26
CN101263477B (zh) 2011-10-19
CN101263477A (zh) 2008-09-10
RU2417420C2 (ru) 2011-04-27
RU2008109014A (ru) 2009-10-10
JP5072845B2 (ja) 2012-11-14
KR101311123B1 (ko) 2013-09-25

Similar Documents

Publication Publication Date Title
US7752224B2 (en) Programmability for XML data store for documents
US7668873B2 (en) Data store for software application documents
BRPI0615761A2 (pt) programabilidade para armazenador de dados xml para documentos
KR101213812B1 (ko) 워드 프로세서 문서를 제공하는 워드 프로세싱애플리케이션
US7945590B2 (en) Programmability for binding data
US7617234B2 (en) XML schema for binding data
US20060277452A1 (en) Structuring data for presentation documents
BRPI0615679A2 (pt) sincronização em tempo real de dados de xml entre aplicações
US20070022128A1 (en) Structuring data for spreadsheet documents
JP2006178944A (ja) 文書を表すファイル・フォーマット、その方法、およびコンピュータ・プログラム製品
US8423518B2 (en) Representation of multiple markup language files in one file for the production of new markup language files
MXPA06000967A (en) Data store for software application documents

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]

Free format text: MANTIDO O INDEFERIMENTO UMA VEZ QUE NAO FOI APRESENTADO RECURSO DENTRO DO PRAZO LEGAL