RU2287181C2 - System and method for mutual transformation of program objects and documents based on elements of structured language - Google Patents
System and method for mutual transformation of program objects and documents based on elements of structured language Download PDFInfo
- Publication number
- RU2287181C2 RU2287181C2 RU2003137567/09A RU2003137567A RU2287181C2 RU 2287181 C2 RU2287181 C2 RU 2287181C2 RU 2003137567/09 A RU2003137567/09 A RU 2003137567/09A RU 2003137567 A RU2003137567 A RU 2003137567A RU 2287181 C2 RU2287181 C2 RU 2287181C2
- Authority
- RU
- Russia
- Prior art keywords
- document
- elements
- xml
- language
- template
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
- G06F40/154—Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/226—Validation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
- Document Processing Apparatus (AREA)
Abstract
Description
Область техникиTechnical field
Настоящее изобретение относится к взаимному преобразованию или отображению программных объектов и документов на базе элементов структурированного языка, в частности взаимному преобразованию различных программных объектов, таких как объекты языка Java™ и документы на языке XML (расширяемый язык разметки).The present invention relates to the mutual conversion or display of program objects and documents based on elements of a structured language, in particular to the mutual conversion of various program objects, such as Java ™ objects and XML documents (extensible markup language).
Предпосылки создания изобретенияBACKGROUND OF THE INVENTION
Язык XML является сокращенной версией стандартного обобщенного языка разметки (SGML), которая разработана специально для создания страниц WWW. Он позволяет разработчикам создавать собственные специальные теги, обеспечивающие функциональные возможности, недоступные в языке HTML.XML is an abridged version of the standard generalized markup language (SGML), which is designed specifically for creating WWW pages. It allows developers to create their own custom tags that provide functionality not available in the HTML language.
Например, язык XML поддерживает ссылки, указывающие на множество документов, в отличие от языка HTML, в котором каждая ссылка может указывать только на один адрес.For example, the XML language supports links that point to many documents, unlike the HTML language, in which each link can point to only one address.
Поскольку язык XML является формой самоописания данных (которые в настоящей заявке также именуются элементами структурированного языка), он используется для кодирования мощных по содержанию моделей данных. Таким образом, язык XML может использоваться в качестве средства обмена данными между разнородными системами. На языке XML могут быть представлены или опубликованы данные множества различных систем: существующих программ на языке программирования КОБОЛ, баз данных, программ на языке программирования C++ и подобных им программ. При этом часто возникает экономическая задача, которая заключается в том, каким образом отобразить информацию, содержащуюся в документе на языке XML, в других форматах данных и наоборот. Например, после осуществления обмена информацией между организациями путем передачи документа на языке XML может потребоваться преобразовать такую информацию в объект языка Java, который может быть использован при создании базы данных или осуществлении запроса транзакции.Since the XML language is a form of self-description of data (which are also referred to in this application as elements of a structured language), it is used to encode data models that are powerful in content. Thus, the XML language can be used as a means of exchanging data between heterogeneous systems. In XML, the data of many different systems can be presented or published: existing programs in the COBOL programming language, databases, programs in the C ++ programming language and similar programs. This often leads to an economic problem, which is how to display the information contained in an XML document in other data formats and vice versa. For example, after exchanging information between organizations by transferring an XML document, it may be necessary to convert such information into a Java language object that can be used to create a database or implement a transaction request.
В патенте US 6125391, выданном 26 сентября 2000 года на имя Meltzer'a и др., описан пример инструментального средства преобразования данных из языка XML в язык Java. Для такого преобразования в названном патенте осуществляют анализ документа на языке XML и обнаруживают события. В частности, один анализатор осуществляет разбор документа на языке XML и создает в памяти древовидное представление, к которому может быть обращен запрос, а другой анализатор осуществляет разбор документа на языке XML и обнаруживает события, содержащие информацию о документе (например, событие начала документа, событие начала элемента с именем элемента, содержанием элемента, событие окончания элемента, событие окончания документа и т.д.).US Pat. No. 6,125,391, issued September 26, 2000 to Meltzer et al., Describes an example of a tool for converting data from XML to Java. For such a conversion, an XML document is analyzed in the said patent and events are detected. In particular, one analyzer parses an XML document and creates a tree view in memory that the query can be addressed to, and another analyzer parses an XML document and detects events containing information about the document (for example, the document start event, event element start with element name, element content, element end event, document end event, etc.).
Для преобразования из языка Java в язык XML в патенте Meltzer'a и др. описано генерирование кода, имеющего аксессоры для каждого элемента. Аксессор элемента имеет цикл, периодически повторяющийся для каждого символа. Цикл содержит оператор-переключатель, выполняющий определенное действие в зависимости от того, что представляет собой символ. Задачей такого действия является создание строкового буфера, содержащего фрагмент элемента документа на языке XML. Решение по патенту Meltzer'a и др. не обеспечивает создание вспомогательной инфраструктуры для работы с кодом, осуществляющим преобразование из языка Java в язык XML. Код, используемый в решении по патенту Meltzer'a и др., полностью генерируется и неудобен для редактирования пользователем.To convert from Java to XML, Meltzer et al. Describe the generation of code that has accessors for each element. An element accessor has a cycle that repeats periodically for each character. The loop contains a switch statement that performs a specific action depending on what the character is. The goal of this action is to create a string buffer containing a fragment of an XML document element. The solution according to the patent of Meltzer and others does not provide the creation of an auxiliary infrastructure for working with code that converts from Java to XML. The code used in the patent solution of Meltzer'a et al. Is fully generated and inconvenient for user editing.
Следовательно, существует потребность в создании структуры взаимного преобразования программных объектов и документов на базе элементов структурированного языка (например, языка XML), которая может быть эффективно реализована с использованием стандартных инструментальных средств.Therefore, there is a need to create a structure for the mutual transformation of program objects and documents based on elements of a structured language (for example, XML), which can be effectively implemented using standard tools.
Краткое изложение сущности изобретенияSummary of the invention
Изложенные выше недостатки известного уровня техники отсутствуют в способе и системе по настоящему изобретению, в котором предложена единая интегрированная среда для взаимного преобразования документов (например, документа на языке XML) и программных объектов (например, объекта языка Java). В данной интегрированной среде используется обработчик, маскирующий способ получения свойства для преобразования. В результате формируется код преобразования, имеющий общий вид для преобразования в обе стороны. Взаимное преобразование элементов языка XML и свойств объекта языка Java происходит в преобразователе. Преобразователь осуществляет преобразование документа на языке XML в программный объект с использованием анализатора (такого как анализатор стандарта DOM (объектная модель документов) или простой интерфейс прикладного программирования (API-интерфейс) для языка XML (стандарт SAX)).The above disadvantages of the prior art are absent in the method and system of the present invention, which proposed a single integrated environment for the mutual conversion of documents (for example, an XML document) and program objects (for example, a Java language object). This integrated environment uses a handler that masks the way to obtain the property for conversion. As a result, a conversion code is generated having a general view for conversion in both directions. Mutual conversion of XML elements and properties of a Java object occurs in the converter. The converter converts an XML document into a program object using an analyzer (such as a DOM standard analyzer (document object model) or a simple application programming interface (API) for XML (SAX standard)).
Для осуществления преобразования в другом направлении (из языка Java в язык XML) необходимо, чтобы элементы документа на языке XML были выстроены в определенном порядке с тем, чтобы обеспечить достоверность полученного документа на языке XML. Для обеспечения такой достоверности в примерном варианте осуществления настоящего изобретения создается документ-шаблон на языке XML с использованием, например, JavaServer Pages™ (JSP). Шаблоны, созданные на базе JSP, позволяют записывать теги документов в JSP с возможностью осуществления обратных вызовов для получения значений элементов и атрибутов. JSP имеет средства поддержки редактирования, что позволяет эффективно осуществлять создание шаблонов. Кроме того, содержание (содержимое) может быть направлено в буфер или непосредственно в ответный поток сервлета.To perform the conversion in the other direction (from Java to XML), it is necessary that the elements of an XML document are arranged in a certain order in order to ensure the authenticity of the received XML document. To ensure this validity, in an exemplary embodiment of the present invention, an XML template document is created using, for example, JavaServer Pages ™ (JSP). Templates created on the basis of JSP allow you to write document tags in JSP with the ability to call back to get the values of elements and attributes. JSP has editing support tools that allow you to efficiently create templates. In addition, the content (s) can be sent to the buffer or directly to the servlet response stream.
Соответственно, объектом настоящего изобретения является реализуемый в компьютере способ преобразования структуры данных, представляющей программный объект, в элементы структурированного языка документа. Предлагаемый в изобретении способ заключается в том, что (а) генерируют шаблон указанного документа, (б) считывают свойства программного объекта, которые взаимосвязаны с элементами структурированного языка документа, (в) с использованием считанных свойств получают образованные элементами структурированного языка конструкции на основе взаимосвязи между этими свойствами и элементами структурированного языка и посредством кода преобразования, обеспечивающего как преобразование программного объекта в документ на основе элементов структурированного языка, так и преобразование в обратном направлении, и (г) полученными конструкциями заполняют шаблон документа.Accordingly, an object of the present invention is a computer-implemented method for converting a data structure representing a program object into elements of a structured language of a document. The method proposed in the invention consists in (a) generating a template for the specified document, (b) reading the properties of the program object that are interconnected with the elements of the structured language of the document, (c) using the read properties, they are formed by elements of the structured language of the design based on the relationship between by these properties and elements of a structured language and by means of a conversion code that provides both the conversion of a program object into a document based on string elements turirovannogo language and converting in reverse direction, and (g) filling the resulting construct a document template.
При осуществлении вышеописанного способа на шаге (в) может осуществляться непосредственный обратный вызов программного объекта для получения свойств, отображающих конструкции, определяющие структуру и содержание документа. Кроме того, на шаге (в) может создаваться объектная модель, отображающая структуру и содержание документа, а для обработки повторяющихся элементов структурированного языка на шаге (в) может быть предусмотрено создание в документе-шаблоне цикла. Элементы структурированного языка предпочтительно представляют собой конструкции языка XML (расширяемый язык разметки).When implementing the above method in step (c), a direct callback of the program object can be carried out to obtain properties that display structures that determine the structure and content of the document. In addition, at step (c), an object model can be created that displays the structure and content of the document, and for processing repeating elements of a structured language at step (c), a loop can be created in the document template. The elements of a structured language are preferably XML (Extensible Markup Language) constructs.
Объектом настоящего изобретения является также система для преобразования программного объекта, содержащего свойства, в документ, определяемый элементами структурированного языка, содержащая компьютер, имеющий процессор, соединенный посредством системной шины с памятью, в которой хранятся (а) шаблон документа, (б) интерфейс-обработчик, обеспечивающий отображение элементов структурированного языка документа на основе обратных вызовов, выполняемых шаблоном документа, (в) модуль преобразования, связанный с интерфейсом-обработчиком и преобразующий свойства программных объектов в элементы структурированного языка, распознаваемые документом, и (г) класс целевых выходных данных, связанный с модулем преобразования и служащий для записи элементов структурированного языка, сгенерированных модулем преобразования, в документ.The object of the present invention is also a system for converting a program object containing properties into a document defined by elements of a structured language, containing a computer having a processor connected via a system bus to a memory in which (a) a document template is stored, (b) a processor interface that provides the display of elements of a structured language of a document based on callbacks performed by a document template, (c) a conversion module associated with an interface-processor, etc. transforming the properties of program objects into elements of a structured language recognized by a document, and (d) the class of target output data associated with the conversion module and used to write elements of the structured language generated by the conversion module into a document.
В предлагаемой системе модуль преобразования может содержать интерфейс преобразования, осуществляющий преобразование свойств программного объекта в элементы структурированного языка и задающий выходной целевой поток документа, а также класс преобразования, обеспечивающий методы, используемые интерфейсом преобразования. В этом случае выходной целевой поток может быть определен как буфер или ответный поток сервлета.In the proposed system, the conversion module may contain a conversion interface that converts the properties of a program object into elements of a structured language and defines the target output stream of the document, as well as a conversion class that provides the methods used by the conversion interface. In this case, the output target stream can be defined as a buffer or servlet response stream.
Еще одним объектом изобретения является система для преобразования документа, содержащего элементы структурированного языка, в программный объект, содержащая компьютер, имеющий процессор, соединенный посредством системной шины с памятью, в которой хранятся (а) анализатор для обнаружения событий, отображающих особенности документа, (б) класс источника входных данных для чтения документа, (в) класс обработчика содержания, связанный с классом источника входных данных и реализующий буфер для событий, обнаруженных анализатором, и (г) модуль преобразования, связанный с классом данных обработчика содержания и преобразующий события, обнаруженные анализатором, в свойства программного объекта.Another object of the invention is a system for converting a document containing elements of a structured language into a program object containing a computer having a processor connected via a system bus to a memory that stores (a) an analyzer for detecting events that display features of the document, (b) the class of the input data source for reading the document, (c) the class of the content handler associated with the class of the input data source and implementing the buffer for events detected by the analyzer, and (d) the module reobrazovaniya associated with the data handler class content and transformative events detected by the analyzer to the properties of the program object.
В этой системе модуль преобразования может иметь интерфейс преобразования, осуществляющий преобразование событий документа в свойства объекта и задающий выходной целевой поток программного объекта, и класс, обеспечивающий методы, используемые интерфейсом преобразования.In this system, the conversion module may have a conversion interface that converts document events into object properties and defines the output target stream of the program object, and a class that provides the methods used by the conversion interface.
Наконец, объектом настоящего изобретения является способ преобразования программного объекта, имеющего свойства, в документ, представленный элементами структурированного языка, взаимосвязанными со свойствами программного объекта, причем указанный способ реализуется в компьютере, в памяти которого хранятся интерфейс преобразования и контейнер. Предлагаемый в изобретении способ заключается в том, что (а) активизируют интерфейс преобразования и передают программный объект в экземпляр активизированного интерфейса преобразования, (б) активизируют контейнер и с использованием экземпляра активизированного контейнера компилируют и исполняют шаблон документа, (в) записывают документ в заданный выходной поток с использованием компилированного шаблона документа.Finally, an object of the present invention is a method for converting a program object having properties into a document represented by elements of a structured language interconnected with properties of a program object, the method being implemented in a computer in whose memory the conversion interface and the container are stored. The method proposed in the invention consists in (a) activating the conversion interface and transferring the program object to the instance of the activated conversion interface, (b) activating the container and using the instance of the activated container, compile and execute the document template, (c) write the document at the specified output stream using a compiled document template.
Для поддержания состояния обработки предложенный способ может предусматривать обратный вызов интерфейса преобразования. Определение необходимости генерирования выбранных частей документа через компилированный шаблон можно осуществлять посредством вызова методов isOptionalElementPresent или isOptionalAttributePresent.To maintain the processing state, the proposed method may include a callback to the conversion interface. Determining whether to generate selected parts of a document through a compiled template can be done by calling the isOptionalElementPresent or isOptionalAttributePresent methods.
При генерировании внутри документа сложных типов информационных объектов, выбираемых из группы, состоящей из массива данных, рекурсии и сложного типа, содержащегося внутри другого сложного типа, состояние обработки может поддерживаться с использованием стека. В этом случае состояние стека поддерживают путем выполнения обратных вызовов интерфейса преобразования из компилированного шаблона для указания начала и конца сложных типов.When generating complex types of information objects inside a document that are selected from the group consisting of an array of data, recursion, and a complex type that is contained within another complex type, the processing state can be maintained using the stack. In this case, the state of the stack is maintained by performing callbacks to the transform interface from the compiled template to indicate the beginning and end of complex types.
Определение количества циклов, выполняемых шаблоном на выбранных участках документа, можно осуществлять посредством вызова метода getElementRepetitions.Determining the number of cycles performed by the template on selected parts of the document can be done by calling the getElementRepetitions method.
Во всех вариантах осуществления изобретения элементы структурированного языка могут представлять собой конструкции языка XML (расширяемый язык разметки). В этом случае для создания документа-шаблона может использоваться технология JavaServer Pages (JSP).In all embodiments of the invention, the elements of a structured language can be XML language constructs (extensible markup language). In this case, JavaServer Pages (JSP) technology can be used to create the master document.
Предлагаемые в изобретении способы могут быть реализованы в машинном программном продукте для преобразования структуры данных, представляющей программный объект, в элементы структурированного языка документа или для преобразования элементов структурированного языка документа в структуру данных, представляющую программный объект.The methods of the invention can be implemented in a computer program product for converting a data structure representing a program object into elements of a structured document language or for converting elements of a structured document language into a data structure representing a program object.
Другие особенности и признаки настоящего изобретения содержатся в приведенном ниже описании конкретных вариантов его осуществления со ссылкой на приложенные чертежи.Other features and features of the present invention are contained in the following description of specific embodiments with reference to the attached drawings.
Краткое описание чертежейBrief Description of the Drawings
Дополнительные признаки и преимущества настоящего изобретения раскрыты в подробном описании со ссылкой на приложенные чертежи, на которых:Additional features and advantages of the present invention are disclosed in the detailed description with reference to the attached drawings, in which:
на фиг.1 показана блок-схема вычислительной системы, которая может быть использована для реализации способа и устройства для осуществления изобретения,figure 1 shows a block diagram of a computing system that can be used to implement the method and device for implementing the invention,
на фиг.2 - блок-схема, иллюстрирующая структуру интегрированной среды для преобразования объектов языка XML в язык Java и наоборот,figure 2 is a block diagram illustrating the structure of an integrated environment for converting XML objects to Java and vice versa,
на фиг.3 - схема последовательности операций, иллюстрирующая способ преобразования документа на языке XML в программный объект с использованием интегрированной среды, показанной на фиг.2,figure 3 is a flowchart illustrating a method of converting an XML document into a software object using the integrated environment shown in figure 2,
на фиг.4 - схема последовательности операций, иллюстрирующая способ преобразования программного объекта в документ на языке XML с использованием интегрированной среды, показанной на фиг.2.figure 4 is a flowchart illustrating a method of converting a program object into a document in XML using the integrated environment shown in figure 2.
Подробное описание вариантов осуществления настоящего изобретенияDetailed Description of Embodiments of the Present Invention
На фиг.1 и в соответствующем ему описании показан пример применимой вычислительной среды, в которой может быть реализовано изобретение. Несмотря на то, что изобретение описано в общем контексте машиноисполняемых команд компьютерной программы, установленной на персональной ЭВМ, оно также может быть реализовано в сочетании с другими программными модулями.Figure 1 and its corresponding description shows an example of an applicable computing environment in which the invention may be implemented. Despite the fact that the invention is described in the general context of computer-executable instructions of a computer program installed on a personal computer, it can also be implemented in combination with other software modules.
В целом, программные модули содержат подпрограммы, программы, компоненты, структуры данных и аналогичные программы, выполняющие определенные задачи или реализующие определенные абстрактные типы данных. Кроме того, настоящее изобретение также может быть реализовано с использованием вычислительных систем, имеющих другие конфигурации, включая портативные устройства, многопроцессорные системы, микропроцессорную или программируемую бытовую электронику, мини-ЭВМ, универсальные ЭВМ и тому подобные устройства. Изобретение также может быть реализовано в распределенных вычислительных средах, в которых задачи выполняют удаленные процессоры, связанные сетью передачи данных.In general, program modules contain routines, programs, components, data structures, and similar programs that perform specific tasks or implement specific abstract data types. In addition, the present invention can also be implemented using computer systems having other configurations, including portable devices, multiprocessor systems, microprocessor or programmable consumer electronics, mini-computers, mainframes, and the like. The invention can also be implemented in distributed computing environments in which tasks are performed by remote processors connected by a data network.
Программные модули в распределенной вычислительной среде могут располагаться как в местных, так и удаленных запоминающих устройствах.Software modules in a distributed computing environment can reside in both local and remote memory storage devices.
Как показано на фиг.1, типовая система 10 включает обычную персональную ЭВМ 20, имеющую процессор 22, системную память 24 и системную шину 26, связывающую различные компоненты системы, в том числе системную память 24 с процессором 22. Системная шина 26 имеет шинные структуры нескольких типов, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, в которых используется любая из множества обычных шинных архитектур (например, PCI (локальная шина соединения периферийных устройств), VESA (Ассоциация по стандартам в области видеоэлектроники), ISA (промышленная стандартная архитектура), EISA (расширенный промышленный стандарт шинной архитектуры) и т.д.).As shown in FIG. 1, an
Системная память 24 имеет постоянное запоминающее устройство (ПЗУ) 28 и запоминающее устройство с произвольной выборкой (ЗУПВ) 30. В ПЗУ 28 хранится базовая система 32 ввода-вывода (BIOS), содержащая основные подпрограммы, способствующие обмену информацией между элементами внутри ЭВМ 20, например, во время запуска. ЭВМ 20 также имеет накопитель 34 на жестких магнитных дисках - НЖМД, накопитель 36 на гибких магнитных дисках - НГМД (для считывания и записи на съемный диск 38) и запоминающее устройство (ЗУ) 40 на компакт-дисках (для чтения компакт-дисков 42 или чтения или записи на другие оптические носители данных). Запоминающие устройства 34, 36 и 40 соединены с системной шиной 26 при помощи интерфейсов 44, 46 и 48, соответственно.
Накопители 34, 36 и 40 и соответствующие машиночитаемые носители (38, 42) обеспечивают энергонезависимое хранение данных, структур данных и команд для ЭВМ 20. Носители данных, показанные на фиг.1, являются лишь примерами, а специалистам в данной области техники известно применение иных типов носителей, считываемых ЭВМ (например, магнитных кассет, карт флэш-памяти, цифровых видеодисков и т.д.).The
В накопителях 34, 36 и 40 и ЗУПВ 30 может храниться ряд программных модулей, включая операционную систему 50, одну или несколько прикладных программ 52, другие программные модули 54 и программные данные 56. Пользователь может вводить команды и информацию в ЭВМ 20 при помощи клавиатуры 58 и устройства 60 ввода (например, мыши, микрофона, джойстика, игровой сенсорной панели, спутниковой антенны, сканера и т.д.). Такие устройства (58 и 60) соединены с процессором 22 при помощи интерфейса 62 портов (например, последовательного порта, параллельного порта, игрового порта, универсальной последовательной шины (УПШ) и т.д.), который связан с шиной 26. С шиной 26 при помощи интерфейса 66 (например, видеоадаптера) также связан монитор 64 или устройство индикации иного типа.A number of program modules can be stored in
ЭВМ 20 может работать в сетевой среде, в которой она логически связана с одним или несколькими удаленными ЭВМ, такими как удаленная ЭВМ 68. Удаленная ЭВМ 68 может являться сервером, маршрутизатором, равноправным устройством или иным обычным узлом сети и, как правило, имеет множество или все элементы, описанные применительно к ЭВМ 20, однако для упрощения показано лишь запоминающее устройство 70. Показанные на фиг.1 логические связи включают локальную сеть 72 и глобальную сеть 74. Такое сетевое окружение обычно используется в учреждениях, корпоративных сетях, интрасетях и сети Internet.The computer 20 may operate in a network environment in which it is logically connected to one or more remote computers, such as a
При использовании в условиях локального сетевого окружения ЭВМ 20 соединена с локальной сетью 72 посредством сетевого интерфейса или адаптера 76. При использовании в условиях глобального сетевого окружения ЭВМ 20 обычно имеет модем 78 или иное средство для поддержания связи по глобальной сети 74, такой как Internet. Модем 54, который может быть встроенным или внешним, посредством интерфейса 62 портов соединен с шиной 26. В условиях сетевого окружения программные модули, показанные применительно к ЭВМ 20, или их части, могут храниться в удаленном запоминающем устройстве 70.When used in a local network environment, the computer 20 is connected to the
Способ по настоящему изобретению описан на примере преобразования, или отображения, документов XML в объекты Java, а также объектов Java в документы XML. Возможна поддержка и других форматов данных. Например, множество существующих бизнес-приложений написаны на языках КОБОЛ, С и ПЛ/1. Такие приложения состоят из программ, хранящихся в информационных системах предприятия, таких как CICS™ (программное обеспечение общего назначения для оперативной обработки транзакций) или IMS™ (информационно-управляющая система). Язык КОБОЛ используется для ввода и вывода структур программы на языке КОБОЛ. Необходимо осуществлять преобразование из языка XML в язык КОБОЛ и из языка КОБОЛ в язык XML. Настоящее изобретение может применяться для таких преобразований, при этом в случае преобразования из языка XML в объект Х обработчик преобразования (описанный далее) заполняет структуру языка КОБОЛ данными из документа на языке XML, а в случае преобразования объекта Х в язык XML обработчик преобразования (описанный далее) извлекает данные из структуры языка КОБОЛ и пользуется шаблоном для заполнения документа на языке XML.The method of the present invention is described by the example of converting, or displaying, XML documents into Java objects, as well as Java objects into XML documents. Support for other data formats is also possible. For example, many existing business applications are written in the COBOL, C, and PL / 1 languages. Such applications consist of programs stored in enterprise information systems, such as CICS ™ (general-purpose software for online transaction processing) or IMS ™ (information management system). The COBOL language is used to input and output program structures in the COBOL language. You need to convert from XML to COBOL and from COBOL to XML. The present invention can be applied to such transformations, in this case, in the case of conversion from XML to object X, the conversion handler (described later) fills the COBOL language structure with data from an XML document, and in case of conversion of object X to XML, the conversion processor (described below ) extracts data from the COBOL language structure and uses a template to populate an XML document.
В способах преобразования по настоящему изобретению используется следующий процесс высокого уровня: (а) лексический анализатор группирует символы в слова или лексемы, распознаваемые определенной системой (условная разметка); (б) синтаксический анализатор анализирует группы лексем с тем, чтобы распознать допустимые языковые конструкции; и (в) генератор кода использует набор допустимых языковых конструкций и генерирует исполняемые коды. Шаги (а)-(в) могут выполняться в комбинированной форме. Например, в случае преобразования документа XML в объект Java осуществляется анализ каждого символа документа на языке XML с тем, чтобы распознать допустимые лексемы на языке XML, такие как начальные теги (открывающие), свойства, конечные (закрывающие) теги и разделы (секции) "CDATA". Затем лексемы необходимо верифицировать, чтобы определить, образуют ли они допустимые конструкции на языке XML. При верификации на самом нижнем уровне определяют, все ли тегирование имеет совпадающие начальные и конечные теги, и структурированы ли свойства в начальном теге должным образом. Если имеется описание документа в формате DTD (определение типа документа) или XML-схема, то возможно обеспечить, чтобы конструкции на языке XML, обнаруженные в процессе анализа, были допустимыми с точки зрения форматов DTD или XML-схема, а также представляли собой правильно сформулированный язык XML. Наконец, данные, содержащиеся в документе на языке XML, используются для выполнения какого-либо полезного действия (т.е. его преобразования в объект языка Java).The following high-level process is used in the conversion methods of the present invention: (a) the lexical analyzer groups the characters into words or tokens recognized by a particular system (conditional markup); (b) the parser analyzes groups of tokens in order to recognize valid language constructs; and (c) the code generator uses a set of valid language constructs and generates executable codes. Steps (a) - (c) can be performed in combined form. For example, in the case of converting an XML document to a Java object, each character of the XML document is analyzed in order to recognize valid XML tokens, such as start tags (opening), properties, end tags (closing) and sections (sections) " CDATA. " Then the tokens must be verified to determine if they form valid XML constructs. Verification at the lowest level determines whether all tagging has matching start and end tags, and whether the properties in the start tag are structured properly. If there is a description of the document in the DTD format (definition of the type of document) or an XML schema, it is possible to ensure that the constructions in the XML language detected during the analysis are valid from the point of view of the DTD or XML schema formats, as well as being correctly formulated XML language. Finally, the data contained in the XML document is used to perform some useful action (that is, converting it into a Java language object).
Некоторые из названных выше задач могут быть по меньшей мере частично решены при помощи легко доступных анализаторов документов XML. Анализаторы документов XML осуществляют лексический и синтаксический анализ. Примерами стандартов анализа являются стандарт SAX и стандарт DOM, реализованные в API-интерфейсе (SAX - простой интерфейс прикладного программирования (API-интерфейс) для языка XML; DOM - объектная модель документов).Some of the above problems can be at least partially solved with the help of easily accessible XML document parsers. XML document parsers perform lexical and parsing. Examples of analysis standards are the SAX standard and the DOM standard implemented in the API (SAX is a simple application programming interface (API) for XML; DOM is an object model of documents).
SAX является стандартом на основе событий. Анализаторы документов XML, использующие стандарт SAX, генерируют события, соответствующие различным элементам, которые были обнаружены в подвергнутом анализу документе на языке XML. Стандарт DOM является простым интерфейсом прикладного программирования на основе объектного моделирования. Анализаторы документов XML на основе стандарта DOM создают в памяти групповую объектную модель, которая отображает содержание документа XML. По завершении анализа анализатором документа XML в памяти сохраняется древовидная структура объектов DOM, содержащая информацию о структуре и содержании документа XML.SAX is an event-based standard. XML document parsers using the SAX standard generate events corresponding to the various elements that were found in the parsed XML document. The DOM standard is a simple application programming interface based on object modeling. XML document parsers based on the DOM standard create a group object model in memory that displays the contents of an XML document. Upon completion of the analysis by the XML document analyzer, the tree structure of the DOM objects containing information about the structure and content of the XML document is stored in memory.
На фиг.2 схематически показана интегрированная среда 100 согласно одному из вариантов осуществления настоящего изобретения. Интегрированная среда 100 показана на примере интегрального компонента 102, такого как сервлет, который может быть осуществлен в системе 10, показанной на фиг.1. В состав интегрального компонента 102 входит анализатор 104, реализованный с использованием, например, интерфейсов DOM или SAX, который взаимодействует с модулем 106 преобразования документа XML в программный объект. Для ясности при описании вариантов осуществления настоящего изобретения в качестве примера анализатора 104 использован анализатор с интерфейсом SAX.2 schematically shows an integrated environment 100 according to one embodiment of the present invention. The integrated environment 100 is shown as an example of an integrated component 102, such as a servlet, that can be implemented in the
Модуль 106 преобразования документа XML в программный объект принимает входной документ 108 на языке XML и генерирует выходной объект 110 на языке Java. Интегральный компонент 102 также имеет модуль документа-шаблона 112 на языке XML (например, на базе технологии JSP - JavaServer Pages™), который связан с модулем 114 преобразования программного объекта в документ XML. Модуль 114 преобразования программного объекта в документ XML принимает входной объект 116 на языке Java и генерирует выходной документ 118 на языке XML.Module 106 converting an XML document into a program object receives an input document 108 in XML and generates an output object 110 in Java. The integrated component 102 also has an XML template document module 112 (for example, based on JSP technology - JavaServer Pages ™), which is associated with a module 114 for converting a program object into an XML document. Module 114 converting the program object into an XML document receives an input object 116 in the Java language and generates an output document 118 in the XML language.
Преобразование документа XML в программный объектConvert an XML document to a program object
Как показано на фиг.2, модуль 106 преобразования документа XML в программный объект имеет следующие компоненты:As shown in FIG. 2, the module 106 for converting an XML document into a program object has the following components:
(а) класс 106-1 источника входных данных (XML2xInputSource) для реализации входного документа 108 на языке XML;(a) class 106-1 of the input data source (XML2xInputSource) for implementing the input document 108 in XML;
(б) класс 106-2 обработчика буферизованного содержания (XML2xBufferedContentHandler) для реализации буфера событий стандарта SAX, генерированного анализатором 104;(b) Buffered Content Handler class 106-2 (XML2xBufferedContentHandler) for implementing the SAX standard event buffer generated by the analyzer 104;
(в) интерфейс 106-4 (XML2xMapping) преобразования для осуществления преобразования и определения входных и выходных целевых потоков; и(c) a conversion interface 106-4 (XML2xMapping) for transforming and defining input and output target streams; and
(г) класс 106-3 преобразования (XML2xMappingImpl), обеспечивающий методы преобразования входного документа 108 на языке XML в выходной объект 110 на языке Java.(d) a conversion class 106-3 (XML2xMappingImpl) that provides methods for converting an input document 108 in XML to an output object 110 in Java.
Ниже подробно описаны различные интерфейсы и классы. Применительно к языку Java термины "класс" и "интерфейс" имеют особое значение. Класс языка Java (абстрактный, внутренний или окончательный) представляет собой совокупность компонентов данных и методов, характеризующих конкретный объект, а интерфейс Java используется для придания определенной функциональности реализующему их классу (т.е. интерфейсы определяют функции классов). Интерфейсы также служат для создания постоянных величин, используемых классами, реализующими интерфейс. Интерфейсы содержат постоянные параметры и описания методов, однако реализация методов зависит от классов, реализующих интерфейс. Один класс может реализовать любое число интерфейсов.The various interfaces and classes are described in detail below. For the Java language, the terms “class” and “interface” have special meanings. A Java language class (abstract, internal, or final) is a collection of data components and methods that characterize a particular object, and the Java interface is used to give certain functionality to the class that implements them (i.e., the interfaces define the functions of the classes). Interfaces also serve to create constant values used by classes that implement the interface. Interfaces contain constant parameters and descriptions of methods, however, the implementation of methods depends on the classes that implement the interface. One class can implement any number of interfaces.
В таблице M106-1 приведены основные функции (т.е., не исчерпывающий перечень функций) класса 106-1 источника входных данных (XML2xInputSource).Table M106-1 lists the main functions (i.e., not an exhaustive list of functions) of class 106-1 of the input data source (XML2xInputSource).
Класс XML2xInputSource используется для того, чтобы обеспечить возможность чтения документа XML из байтового потока, потока символов или обработчика XML2xBufferedContentHandler 106-2.The XML2xInputSource class is used to provide the ability to read an XML document from a byte stream, character stream, or XML2xBufferedContentHandler 106-2.
В таблице M106-2 приведены основные функции (т.е. не исчерпывающий перечень функций) класса 106-2 обработчика буферизованного содержания (XML2xBufferedContentHandler). Класс M106-2 обработчика также включает обработчик содержания для буферизации событий стандарта SAX, поступающих из анализатора 104. Это позволяет воспроизводить события. Примером ситуации, в которой данная функция полезна, является случай, когда для различных частей документа XML используются различные обработчики преобразования. Примером реализации является упрощенный протокол доступа к объекту (SOAP).Table M106-2 lists the main functions (i.e., not an exhaustive list of functions) of class 106-2 of the buffered content handler (XML2xBufferedContentHandler). The handler class M106-2 also includes a content handler for buffering SAX events coming from analyzer 104. This allows events to be played back. An example of a situation in which this function is useful is when different transformation handlers are used for different parts of an XML document. An example implementation is a simplified object access protocol (SOAP).
SOAP является упрощенным протоколом обмена информацией в децентрализованной, распределенной среде. Он является протоколом на базе языка XML и состоит из трех частей: (1) конверта, образующего среду для описания содержания сообщения и способа его обработки; (2) набора правил кодирования для представления экземпляров, связанных с конкретным применением типов данных; и (3) условных обозначений для отображения удаленных вызовов и ответов на вызовы процедур. Сообщение SOAP является документом на языке XML, состоящим из обязательного конверта SOAP, необязательного заголовка SOAP и обязательного тела SOAP. В данном случае для обработки конверта и тела могут использоваться различные обработчики преобразования.SOAP is a simplified protocol for exchanging information in a decentralized, distributed environment. It is an XML-based protocol and consists of three parts: (1) an envelope that forms an environment for describing the contents of the message and how it is processed; (2) a set of coding rules for representing instances associated with a particular application of data types; and (3) conventions for displaying remote calls and answering procedure calls. A SOAP message is an XML document that consists of a mandatory SOAP envelope, an optional SOAP header, and a mandatory SOAP body. In this case, different conversion handlers can be used to process the envelope and body.
В таблице M106-3 приведены основные функции (т.е. неисчерпывающие) интерфейса преобразования 106-4 (XML2xMapping). Интерфейс XML2xMapping осуществляет преобразование и определяет конфигурацию входного потока.Table M106-3 lists the main functions (i.e., non-exhaustive) of the 106-4 transformation interface (XML2xMapping). The XML2xMapping interface performs the conversion and defines the configuration of the input stream.
В таблице M106-4 приведены основные функции (т.е. неисчерпывающий перечень функций) класса преобразования 106-3 (XML2xMappingImpl). Как указано выше при описании определений понятий "класс" и "интерфейс", класс XML2xMappingImpl не используют непосредственно, а выделяют в нем подклассы с добавлением содержания к соответствующим методам в зависимости от определений типа документа для входного документа 108 на языке XML, преобразованного из выходного объекта 110 на языке Java, в который осуществляется преобразование.Table M106-4 lists the main functions (i.e., a non-exhaustive list of functions) of the transformation class 106-3 (XML2xMappingImpl). As indicated above in the description of the definitions of the concepts of “class” and “interface”, the XML2xMappingImpl class is not used directly, but subclasses are allocated in it with the addition of content to the corresponding methods depending on the definitions of the document type for the input document 108 in XML, converted from the output object 110 in the Java language to which the conversion is performed.
На фиг.3 показан способ 300 преобразования документа 108 на языке XML в программный объект 110 (например, объект Java Bean), в котором:FIG. 3 shows a
(а) получают экземпляр интерфейса 106-4 преобразования (XML2xMapping) для осуществления на шаге 302 преобразования документа XML в объект X;(a) receive an instance of the conversion interface 106-4 (XML2xMapping) for implementing, in
(б) на шаге 304 активизируют интерфейс 106-4 преобразования и на шаге 306 вводят входной документ 108 на языке XML;(b) in
(в) на шаге 308 интерфейс 106-4 преобразования получает экземпляр анализатора событий (например, анализатора 104) и на шаге 310 регистрирует интерфейс 106-4 преобразования в качестве обработчика содержания (например, класса 106-2 обработчика буферизованного содержания);(c) in
(г) на шаге 312 активизируют анализатор 104 в отношении документа 108 на языке XML (т.е. анализатор начинает разбор документа);(d) at
(д) на шаге 314 при выполнении шага (г) в интерфейс 106-4 преобразования поступают обратные вызовы, вызывая различные методы (например, startDocument (начало документа), startElement (начало элемента), символы, endElement (конец элемента), endDocument (конец документа) и т.д.);(e) in
(е) на шаге 316 при выполнении методов startDocument и/или startElement интерфейс 106-4 преобразования создает программный объект 110; и(e) in
(ж) на шаге 318 при выполнении метода endElement интерфейс 106-4 преобразования помещает элемент в программный объект 110.(g) in
Описанный выше API-интерфейс SAX имеет множество известных из уровня техники спецификаций. Задачей настоящего изобретения является создание класса, реализующего интерфейс-обработчик содержания, представляющий собой интерфейс, построенный на механизме обратных вызовов и используемый анализаторами документов XML для уведомления программы о событиях SAX по мере их обнаружения в документе XML. Этот интерфейс используется с классом 106-2 обработчика буферизованного содержания (XML2xBufferedContentHandler) и классом 106-1 источника входных данных (XML2xInputSource). Применительно к интерфейсу-обработчику содержания API-интерфейс SAX также может быть реализован в виде интерфейса класса стандартного обработчика (DefaultHandler). Ниже в примере I "преобразование документа XML в пользовательский объект JAVA" подробно описано применение стандартного обработчика для генерирования пользовательского объекта Java Bean из пользовательского документа на языке XML.The SAX API described above has many well-known specifications. An object of the present invention is to provide a class that implements a content handler interface, which is an interface built on a callback mechanism and used by XML document parsers to notify a program of SAX events as they are detected in an XML document. This interface is used with the buffered content handler class 106-2 (XML2xBufferedContentHandler) and the input source class 106-1 (XML2xInputSource). In relation to the content handler interface, the SAX API can also be implemented as an interface of the standard handler class (DefaultHandler). Example I “Converting an XML Document to a JAVA User Object” below describes in detail the use of a standard handler to generate a custom Java Bean from a user XML document.
Пример 1Example 1
Преобразование документа XML в пользовательский объект JAVAConvert an XML document to a custom JAVA object
В примере 1 использованы следующие компоненты (описанные ниже):In example 1, the following components were used (described below):
(A) customer.xml: образец входного документа 108 на языке XML;(A) customer.xml: sample input document 108 in XML;
(Б) XML2CustomerMapping.java: класс 106-2 обработчика, в который анализатор 104 направляет обратные вызовы. Содержит команды по конструированию пользовательского объекта и определению его параметров;(B) XML2CustomerMapping.java: handler class 106-2 to which parser 104 routes callbacks. Contains commands for constructing a custom object and determining its parameters;
(B) executive.java: программа класса 106-3/интерфейса 106-4 преобразования, используемая для осуществления преобразования из языка XML в язык Java и из языка Java в язык XML (Пример II ниже);(B) executive.java: class 106-3 / conversion interface program 106-4 used to convert from XML to Java and from Java to XML (Example II below);
(Г) customer.java: вывод пользовательского объекта 110 на языке Java Bean; и(D) customer.java: output of a user object 110 in the Java Bean language; and
(Д) CustomerSymbols.java: содержит целочисленные константы и схему хеширования. Схема хеширования служит для преобразования имен тегов в целочисленные константы, используемые в XML2CustomerMapping.java.(E) CustomerSymbols.java: contains integer constants and a hash scheme. The hash scheme is used to convert tag names to integer constants used in XML2CustomerMapping.java.
А. Ниже приведен входной документ на языке XML (customer.xml).A. The following is an XML input document (customer.xml).
// START customer.xml// START customer.xml
<?xml version="1.O"?><? xml version = "1.O"?>
<customer><customer>
<FirstName>Jane</FirstName><FirstName> Jane </FirstName>
<LastName>Doe</LastName><LastName> Doe </LastName>
<CustId>xyz.123</CustId><CustId> xyz.123 </CustId>
</customer></customer>
// END customer.xml// END customer.xml
Б. Ниже с некоторыми сокращениями для краткости приведена программа (XML2CustomerMapping.java), служащая для конструирования пользовательского объекта и задания его параметров (т.е., обработчик, в который анализатор событий направляет обратные вызовы).B. The program (XML2CustomerMapping.java), which is used to construct a user-defined object and set its parameters (i.e., a handler to which the event analyzer sends callbacks), is given below for brevity.
// START XML2CustomerMapping.java// START XML2CustomerMapping.java
public class XML2CustomerMapping extendspublic class XML2CustomerMapping extends
corn.xxx.xml2xmapping.XML2xMappingImpl {corn.xxx.xml2xmapping.XML2xMappingImpl {
private StringBuffer fieldCurrentQualifiedElementName=private StringBuffer fieldCurrentQualifiedElementName =
new StringBuffer("");new StringBuffer ("");
private Customer fieldCustomer;private Customer fieldCustomer;
private Stack elementStack;private stack elementStack;
* XMLCustomerInfo2RecordCustomerInfoMapper constructor comment.* XMLCustomerInfo2RecordCustomerInfoMapper constructor comment.
public XML2CustomerMapping() {public XML2CustomerMapping () {
super();super ();
elementStack=new Stack();elementStack = new Stack ();
}}
* characters method comment.* characters method comment.
public void characters(char[] ch, int start, int length) throws org.xrnl.sax.SAXException {public void characters (char [] ch, int start, int length) throws org.xrnl.sax.SAXException {
switch (this.fieldCurrentElementSymbol) {switch (this.fieldCurrentElementSymbol) {
case CustomerSymbols.CUSTOMER_FIRSTNAME:case CustomerSymbols.CUSTOMER_FIRSTNAME:
case CustomerSymbols.CUSTOMER_LASTNAME:case CustomerSymbols.CUSTOMER_LASTNAME:
case CustomerSymbols.CUSTOMER_ID:case CustomerSymbols.CUSTOMER_ID:
((StringBuffer)elementStack.lastElement()).append(ch,start,length);((StringBuffer) elementStack.lastElement ()). Append (ch, start, length);
break;break;
}}
}}
* endElement method comment.* endElement method comment.
public void endElement(String namespaceURI, String localName, String rawName) throws org.xrnl.sax.SAXException {public void endElement (String namespaceURI, String localName, String rawName) throws org.xrnl.sax.SAXException {
String symbolName;String symbolName;
if(namespaceURI.equals("")) symbolName=rawName;if (namespaceURI.equals ("")) symbolName = rawName;
else symbolName=namespaceURI + "_" + localName;else symbolName = namespaceURI + "_" + localName;
this.fieldCurrentElementSymbol=CustomerSymbols.getSymbol(symbolName);this.fieldCurrentElementSymbol = CustomerSymbols.getSymbol (symbolName);
// Get the value// Get the value
String value=, ((StringBuffer)elementStack.pop()).toString();String value =, ((StringBuffer) elementStack.pop ()). ToString ();
switch (this.fieldCurrentElementSymbol) {switch (this.fieldCurrentElementSymbol) {
case CustomerSymbols.CUSTOMER_FIRSTNAME: {case CustomerSymbols.CUSTOMER_FIRSTNAME: {
this.fieldCustomer.setFirstName(value);this.fieldCustomer.setFirstName (value);
break;break;
}}
case CustomerSymbols.CUSTOMER_LASTNAME: {case CustomerSymbols.CUSTOMER_LASTNAME: {
this.fieldCustomer.setLastName(value);this.fieldCustomer.setLastName (value);
break;break;
}}
case CustomerSymbols.CUSTOMER_ID: {case CustomerSymbols.CUSTOMER_ID: {
this.fieldCustomer.setId(value);this.fieldCustomer.setId (value);
break;break;
}}
}}
this.fieldCurrentElementSymbol=0;this.fieldCurrentElementSymbol = 0;
}}
* @return com.xxx.connector.mapping.xml.test.Customer public Customer getCustomer() {* @return com.xxx.connector.mapping.xml.test.Customer public Customer getCustomer () {
return this.fieldCustomer;return this.fieldCustomer;
}}
* startElement method comment.* startElement method comment.
public void startElement(String namespaceURI, String localName, String rawName, org.xml.sax.Attributes atts) throws org.xrnl.sax.SAXException {public void startElement (String namespaceURI, String localName, String rawName, org.xml.sax.Attributes atts) throws org.xrnl.sax.SAXException {
String symbolName;String symbolName;
if (namespaceURI.equals(""))symbolName=rawName;if (namespaceURI.equals ("")) symbolName = rawName;
else symbolName=namespaceURI + "_" + localName;else symbolName = namespaceURI + "_" + localName;
this.fieldCurrentElementSymbol=CustomerSymbols.getSymbol(symbolName);this.fieldCurrentElementSymbol = CustomerSymbols.getSymbol (symbolName);
elementStack.push(new StringBuffer());elementStack.push (new StringBuffer ());
switch (this.fieldCurrentElementSymbol) {switch (this.fieldCurrentElementSymbol) {
case CustomerSymbols.CUSTOMER: {case CustomerSymbols.CUSTOMER: {
this.fieldCustomer=new Customer();this.fieldCustomer = new Customer ();
break;break;
}}
}}
}}
}}
// END XML2CustomerMapping.java// END XML2CustomerMapping.java
В. Ниже с некоторыми сокращениями для краткости приведена программа (execute.java) преобразования из языка XML в язык Java (и из языка Java в язык XML, как это подробно описано ниже в примере II).C. For brevity, the following is a program (execute.java) for converting from XML to Java (and from Java to XML, as described in more detail below in Example II) for brevity.
// START execute.java// START execute.java
package com.xxx.xml2xmapping.sample.customer;package com.xxx.xml2xmapping.sample.customer;
import Java.io.*;import Java.io. *;
import org.xml.sax.*;import org.xml.sax. *;
public class Execute {public class Execute {
* Execute constructor comment.* Execute constructor comment.
public Execute() {public Execute () {
super();super ();
}}
* Starts the application.* Starts the application.
* @param args an array of command-line arguments* @param args an array of command-line arguments
public static void main(Java.lang.String[] args) {public static void main (Java.lang.String [] args) {
int numlterations=1;int numlterations = 1;
XML2CustomerMapping inMapping=new XML2CustomerMapping();XML2CustomerMapping inMapping = new XML2CustomerMapping ();
Customer2XMLMapping outEventBasedMapping=newCustomer2XMLMapping outEventBasedMapping = new
Customer2XMLMapping();Customer2XMLMapping ();
// Create the XML2 Customer handler and the Customer2XML handler XML2CustomerMapping in Mapping=new XML2CustomerMapping();// Create the XML2 Customer handler and the Customer2XML handler XML2CustomerMapping in Mapping = new XML2CustomerMapping ();
Customer2XMLMapping outEventBasedMapping=newCustomer2XMLMapping outEventBasedMapping = new
Customer2XMLMapping();Customer2XMLMapping ();
// read in the customer.xml file// read in the customer.xml file
ByteArrayInputStream inStream=null;ByteArrayInputStream inStream = null;
try {try {
FileInputStream fileInputStream=newFileInputStream fileInputStream = new
FileInputStream("customer.xml");FileInputStream ("customer.xml");
byte[] bytes=new byte[fileInputStream.available()];byte [] bytes = new byte [fileInputStream.available ()];
fileInputStream.read(bytes, 0,fileInputStream.read (bytes, 0,
fileInputStream.available());fileInputStream.available ());
inStream=new ByteArrayInputStream(bytes);inStream = new ByteArrayInputStream (bytes);
} catch (Exception e) {} catch (Exception e) {
e.printStackTrace();e.printStackTrace ();
}}
ByteArrayOutputStream outStream=new ByteArrayOutputStream();ByteArrayOutputStream outStream = new ByteArrayOutputStream ();
try {try {
long ts=System.currentTimeMillis();long ts = System.currentTimeMillis ();
for (int i=0; i<numIterations; i++) {for (int i = 0; i <numIterations; i ++) {
// inbound mapping// inbound mapping
// map from XML document to customer Java Bean inStream. reset();// map from XML document to customer Java Bean inStream. reset ();
inMapping.setInputStream(inStream);inMapping.setInputStream (inStream);
inMapping.execute();inMapping.execute ();
// some execution, here a connector would be called// some execution, here a connector would be called
// get the customer object and print its contents// get the customer object and print its contents
Customer aCustomer=inMapping.getCustomer();Customer aCustomer = inMapping.getCustomer ();
System.out.println("First name from XML document isSystem.out.println ("First name from XML document is
+aCustomer.getFirstName());+ aCustomer.getFirstName ());
System.out.println("Last name from XML document isSystem.out.println ("Last name from XML document is
"+aCustomer.getLastName());"+ aCustomer.getLastName ());
System, out. println("Customer id from XML document is "+aCustomer.getId());System, out. println ("Customer id from XML document is" + aCustomer.getId ());
// Change the values on the customer object// Change the values on the customer object
aCustomer.setFirstName("James");aCustomer.setFirstName ("James");
aCustomer.setLastName("Bond");aCustomer.setLastName ("Bond");
aCustomer.setId("007");aCustomer.setId ("007");
// outbound mapping// outbound mapping
// map from Java to XML// map from Java to XML
outEventBasedMapping.setCustomer(aCustomer);outEventBasedMapping.setCustomer (aCustomer);
// outEventBasedMapping.setOutputStream(outStream);// outEventBasedMapping.setOutputStream (outStream);
outEventBasedMapping.setOutputStream(System.out);outEventBasedMapping.setOutputStream (System.out);
outEventBasedMapping.execute();outEventBasedMapping.execute ();
}}
long te=System.currentTimeMillis();long te = System.currentTimeMillis ();
System.out.println("Average time"+(te-ts)/numlterations+"ms.");System.out.println ("Average time" + (te-ts) / numlterations + "ms.");
} catch (Exception e) {} catch (Exception e) {
e.printStackTrace();e.printStackTrace ();
}}
}}
}}
//END execute.java// END execute.java
Г. Ниже описана пользовательская программа Java Bean (customer.java). Java Bean является многократно используемым компонентом, присоединенным к известной из уровня техники структуре стандартной конструкции. Bean является объектом класса, видимым или невидимым во время выполнения программы.D. The Java Bean user program (customer.java) is described below. The Java Bean is a reusable component attached to the standard structure of the prior art. A bean is a class object, visible or invisible at run time.
//START customer.java// START customer.java
package com.xxx.xml2xmapping. sample.customer;package com.xxx.xml2xmapping. sample.customer;
public class Customer {public class Customer {
private Java.lang.String fieldFirstName=new String();private Java.lang.String fieldFirstName = new String ();
private Java.lang.String fieldLastName=new String();private Java.lang.String fieldLastName = new String ();
private Java.lang.String fieldid=new String ();private Java.lang.String fieldid = new String ();
* Customer constructor comment.* Customer constructor comment.
public Customer() {public Customer () {
super();super ();
}}
* Gets the firstName property (java.lang.String) value.* Gets the firstName property (java.lang.String) value.
* @return The firstName property value.* @return The firstName property value.
* @see #setFirstName* @see #setFirstName
public Java.lang.String getFirstName() {public Java.lang.String getFirstName () {
return fieldFirstName;return fieldFirstName;
}}
* Gets the id property (Java.lang.String) value.* Gets the id property (Java.lang.String) value.
* @return The id property value.* @return The id property value.
* @see #setId* @see #setId
public Java.lang.String getId() {public Java.lang.String getId () {
return fieldId;return fieldId;
}}
* Gets the lastName property (Java.lang.String) value.* Gets the lastName property (Java.lang.String) value.
* @return The lastName property value.* @return The lastName property value.
* @see #setLastName* @see #setLastName
public java.lang.String getLastName() {public java.lang.String getLastName () {
return fieldLastName;return fieldLastName;
}}
* Sets the firstName property (Java.lang.String) value.* Sets the firstName property (Java.lang.String) value.
* @param firstName The new value for the property.* @param firstName The new value for the property.
* @see #getFirstName* @see #getFirstName
public void setFirstName(java.lang.String firstName) {public void setFirstName (java.lang.String firstName) {
fieldFirstName=firstName;fieldFirstName = firstName;
}}
* Sets the id property (Java.lang.String) value.* Sets the id property (Java.lang.String) value.
* @param id The new value for the property.* @param id The new value for the property.
* @see #getId* @see #getId
public void setId(Java.lang.String id) {public void setId (Java.lang.String id) {
fieldId=id;fieldId = id;
}}
/**/ **
* Sets the lastName property (Java.lang.String) value.* Sets the lastName property (Java.lang.String) value.
* @param lastName The new value for the property.* @param lastName The new value for the property.
* @see #getLastName* @see #getLastName
public void setLastName(Java.lang.String lastName) {public void setLastName (Java.lang.String lastName) {
fieldLastName=lastName;fieldLastName = lastName;
}}
}}
//END customer.java// END customer.java
Как следует из примера I, преобразование документа XML в объект Java является эффективным, поскольку анализатор 104 осуществляет обработку событий применительно ко всем начальным тегам, тегам элементов и конечным тегам, за счет чего улучшается отслеживание событий.As follows from Example I, converting an XML document to a Java object is effective because the parser 104 handles events for all start tags, element tags, and end tags, thereby improving event tracking.
В другом примере рассмотрен случай распространения однопользовательского документа на языке XML на массив пользователей. Для генерирования массива пользовательских программ Java beans выполняют следующие шаги:In another example, the case of distributing a single-user XML document to an array of users is considered. To generate an array of custom Java beans programs, follow these steps:
(i) используют startElement применительно к пользователям для создания вектора;(i) use startElement for users to create a vector;
(ii) создают в startElement пользовательский объект применительно к каждому пользователю; и(ii) create a user object in startElement for each user; and
(iii) используют события startElement, getElement, endElement применительно к FirstName, LastName и CustID для заполнения пользовательского объекта, endElement применительно к пользователю - для ввода пользовательского объекта в вектор, а endElement применительно к пользователям - для создания массива пользователей на основе вектора и его ввода в соответствующий объект Java.(iii) use the startElement, getElement, endElement events for FirstName, LastName and CustID to populate the user object, endElement for the user to enter the user object into the vector, and endElement for users to create the user array based on the vector and enter it into the corresponding Java object.
Анализатор 104 поддерживает стек для рекурсивных структур языка XML (т.е. элементов языка XML, отображающих список списков). Объект создается для каждого startElement. Стек может использоваться для поддержания требуемого состояния. После создания дочернего элемента он может быть введен в соответствующий материнский объект.Analyzer 104 maintains a stack for recursive structures of the XML language (i.e., XML language elements displaying a list of lists). An object is created for each startElement. The stack can be used to maintain the required state. After creating a child element, it can be inserted into the corresponding parent object.
Преобразование программного объекта в документ XML;Convert a program object to an XML document;
Как показано на фиг.2, модуль 114 преобразования программного объекта в документ XML имеет следующие компоненты:As shown in figure 2, the module 114 converting a program object into an XML document has the following components:
(а) интерфейс-обработчик 114-1 (X2XMLHandler) для управления анализом событий;(a) handler interface 114-1 (X2XMLHandler) for managing event analysis;
(б) интерфейс преобразования 114-2 (X2XMLMapping) для осуществления преобразования и задания выходных параметров целевого потока;(b) the conversion interface 114-2 (X2XMLMapping) for performing the conversion and setting the output parameters of the target stream;
(в) класс 114-3 преобразования (X2XMLMappingImpl), обеспечивающий методы для преобразования входного объекта 116 на языке Java в выходной документ 118 на языке XML; и(c) a conversion class 114-3 (X2XMLMappingImpl) providing methods for converting an input object 116 in Java to an output document 118 in XML; and
(г) выходной целевой класс 114-4 (X2XMLOutputTarget) для реализации выходного документа 118 на языке XML.(d) the output target class 114-4 (X2XMLOutputTarget) to implement the output document 118 in XML.
В таблице M114-1 приведены основные функции (т.е. не исчерпывающий перечень функций) интерфейса-обработчика 114-1 (X2XMLHandler). Модуль преобразования 114 реализует функции интерфейса 114-1 и регистрирует экземпляр с использованием JSP-контейнера. Документ-шаблон 112 обращается к модулю преобразования для обратного вызова основных, связанных с документом событий, таких как начало и окончание элементов, и получения значений элементов.Table M114-1 lists the main functions (i.e., not an exhaustive list of functions) of the handler interface 114-1 (X2XMLHandler). Conversion module 114 implements the functions of interface 114-1 and registers the instance using the JSP container. The template document 112 refers to the conversion module to call back the main document-related events, such as the start and end of the elements, and obtain the values of the elements.
В целом, контейнер представляет собой сущность, обеспечивающую управление жизненным циклом, безопасность, развертывание и оперативное обслуживание компонентов. Существует множество типов контейнеров (Web, JSP, сервлет, апплет и т.д.), предоставляющих зависимые от компонентов услуги. Контейнер-сервлет является контейнером, предоставляющим сетевые услуги для передачи запросов и ответов, запросов декодирования и запросов форматов. JSP-контейнер является контейнером, предоставляющим услуги, аналогичные услугам сервлета и машины, интерпретирующей и обрабатывающей JSP-страницы в сервлет.In general, a container is an entity that provides lifecycle management, security, deployment, and operational maintenance of components. There are many types of containers (Web, JSP, servlet, applet, etc.) that provide component-dependent services. A servlet container is a container that provides network services for sending requests and responses, decoding requests, and format requests. A JSP container is a container that provides services similar to those of a servlet and a machine that interprets and processes JSP pages in a servlet.
Интерфейс-обработчик X2XMLHandler 114-1 создает зеркальное (но не идентичное) отображение событий, анализируемых анализатором 104. По существу, структура, создаваемая анализатором 104, зеркально отображается на пути от X2XML.The X2XMLHandler 114-1 handler interface creates a mirror (but not identical) representation of the events analyzed by the analyzer 104. In essence, the structure created by the analyzer 104 is mirrored on the way from X2XML.
Если анализатор 104 реализован с использованием интерфейса SAX, события поступают в обработчик 106-2 (т.е. по существу механизм обратного вызова), который осуществляет их обработку. В данном примере обработчик 106-2 используется для заполнения класса Java.If the analyzer 104 is implemented using the SAX interface, events are sent to a handler 106-2 (i.e., essentially a callback mechanism) that processes them. In this example, handler 106-2 is used to populate the Java class.
После активизации шаблона 112 он осуществляет обратный вызов, адресуемый интерфейсу-обработчику X2XMLHandler 114-1. Интерфейс-обработчик X2XMLHandler 114-1 осуществляет обработку обратного вызова, получая запрошенные данные и поддерживая состояние анализа.After invoking template 112, it makes a callback addressed to the X2XMLHandler 114-1 handler interface. The X2XMLHandler 114-1 handler interface handles callback processing, receiving the requested data and maintaining the analysis state.
Несмотря на то, что интерфейс-обработчик 114-1 аналогичен модулю 106 преобразования документа XML в программный объект с точки зрения выполняемых им функций, между ними существуют определенные различия. Имя элемента генерируется или кодируется вручную, а не берется из схемы, поддерживающей пространство имен. Имя элемента может быть уникальным для каждого элемента. Таким образом, для выполнения методов startElement и endElement необходим лишь параметр имени.Despite the fact that the handler interface 114-1 is similar to the module 106 for converting an XML document into a program object in terms of its functions, there are certain differences between them. The element name is generated or encoded manually, and is not taken from a schema that supports a namespace. An item name may be unique for each item. Thus, to execute the startElement and endElement methods, only the name parameter is needed.
При осуществлении модулем 106 преобразования документа XML в программный объект класс 106-1 источника входных данных (т.е. XMLReader) возвращает имя элемента в виде строки. В классе 106-3/интерфейсе 106-4 преобразования имя элемента объединяют с уникальным числом. Данное число используется оператором выбора для управления обработкой элементов. В модуле 114 преобразования программного объекта в документ XML происходит оптимизация обработки и улучшается поддержка кодирования, для чего имя элемента описывается в виде целочисленной константы. Таким образом, при обратных вызовах данных методов вместо строк используются целочисленные константы.When module 106 converts an XML document into a program object, class 106-1 of an input data source (i.e., XMLReader) returns the element name as a string. In class 106-3 / conversion interface 106-4, the element name is combined with a unique number. This number is used by the selection operator to control the processing of elements. In the module 114 for converting a program object into an XML document, processing is optimized and coding support is improved, for which the element name is described as an integer constant. Thus, when calling these methods back, integer constants are used instead of strings.
Порядок следования событий в интерфейсе-обработчике 114-1 зеркально отражает порядок следования информации в самом объекте 116.The sequence of events in the processor interface 114-1 mirrors the sequence of information in the object 116 itself.
В документе-шаблоне 112 на языке XML (записанном с использованием технологии JavaServer Pages) применен описанный ниже стиль кодирования. Технология JSP дает возможность отделять пользовательский интерфейс от генерирования содержания, что позволяет целиком изменять макет страницы, не меняя лежащего в ее основе динамического информационного содержимого. Технология JavaServer Pages является расширенным вариантом технологии Java Servlet, хорошо известной специалистам в данной области техники.An XML document template (written using JavaServer Pages technology) uses the coding style described below. JSP technology makes it possible to separate the user interface from the generation of content, which allows you to completely change the layout of the page without changing the underlying dynamic information content. JavaServer Pages technology is an advanced version of Java Servlet technology, well known to those skilled in the art.
Пример стиля кодирования документа-шаблона 112 на языке XML, записанного с использованием технологии JSP.An example of the coding style of an XML document document 112 recorded using JSP technology.
Обратные вызовы кодируются применительно к начальным и конечным тегам документа 118 и сложным типам. Это позволяет обработчику 114-1 поддерживать состояние. Начальные и конечные теги документа-шаблона 112 на языке XML, записанного с использованием технологии JSP, также кодируют непосредственно, чтобы направлять их в целевой выходной поток. При работе с простыми типами кодирование обратных вызовов не требуется, однако начальные и конечные теги необходимо кодировать, чтобы направлять их в целевой выходной поток.Callbacks are encoded with respect to the start and end tags of document 118 and complex types. This allows handler 114-1 to maintain state. The start and end tags of the XML document template 112 recorded using JSP technology are also encoded directly to direct them to the target output stream. When working with simple types, callback encoding is not required, but the start and end tags must be encoded to direct them to the target output stream.
Если элемент сложного или простого типа является факультативным, в условном выражении внутри шаблона 112 используется функция isOptionalElementPresent(), управляющая генерированием факультативного элемента.If an element of a complex or simple type is optional, the conditional expression inside template 112 uses the isOptionalElementPresent () function that controls the generation of the optional element.
Если атрибут является факультативным, то для сложного типа используется метод isOptionalAttributePresent(int attributeName), а для простого типа - метод isOptionalAttributePresent (int elementName, int attributeName). Если элемент относится к повторяющемуся простому типу, определяют, содержит ли он факультативный атрибут, используя для этого метод isOptionalAttributePresent(int index, int elementName, int attributeName).If the attribute is optional, the isOptionalAttributePresent (int attributeName) method is used for a complex type, and the isOptionalAttributePresent (int elementName, int attributeName) method is used for a simple type. If the element is of a repeating simple type, it is determined whether it contains an optional attribute using the isOptionalAttributePresent (int index, int elementName, int attributeName) method for this.
В отношении повторяющихся элементов используют метод getElementRepetitions, служащий для возврата числа повторяющихся элементов. Это делается для создания в шаблоне 112 цикла для обработки каждого элемента. Для простых типов шаблон 112 должен содержать начальные и конечные теги и вызывать метод getElementValue(int index, int elementName) для получения значения элемента. Поскольку для сложных типов необходимо поддерживать состояние, шаблон 112 должен вызывать методы startElement(int index, int elementName) и endElement(int index, int elementName).For repeating elements, use the getElementRepetitions method, which returns the number of repeating elements. This is done to create a loop in template 112 to process each element. For simple types, template 112 must contain start and end tags and call the getElementValue (int index, int elementName) method to get the value of the element. Since complex types must be stateful, pattern 112 must call the startElement (int index, int elementName) and endElement (int index, int elementName) methods.
В таблице 114-2 приведены основные функции (т.е. не исчерпывающий перечень функций) интерфейса преобразования 114-2 (X2XMLMapping). Интерфейс преобразования 114-2 выполняет функцию преобразования (объекта Java в документ XML) и задает целевой выходной поток. Интерфейс преобразования 114-2 расширяет функции интерфейса-обработчика 114-1, который обеспечивает методы обратного вызова шаблона 112, необходимые для генерирования выходного документа 118 на языке XML.Table 114-2 lists the main functions (i.e., not an exhaustive list of functions) of the conversion interface 114-2 (X2XMLMapping). The conversion interface 114-2 performs the conversion function (of a Java object into an XML document) and sets the target output stream. The conversion interface 114-2 extends the functions of the handler interface 114-1, which provides the callback methods for the template 112 necessary to generate XML output 118.
В таблице 114-3 приведены основные функции (т.е. не исчерпывающий перечень функций) класса 114-3 преобразования (X2XMLMappingImpl). Класс 114-3 преобразования обеспечивает методы преобразования входного объекта 116 на языке Java в выходной документ 118 на языке XML. Как указано выше, при описании определений класса и интерфейса, X2XMLMappingImpl класс 114-3 не используют непосредственно, а выделяют в нем подклассы с использованием содержания, добавленного к соответствующим методам в зависимости от определений типа выходного документа 118 на языке XML, преобразование в который осуществляется, и входного объекта 116 на языке Java, преобразование из которого осуществляется.Table 114-3 lists the main functions (i.e., not an exhaustive list of functions) of conversion class 114-3 (X2XMLMappingImpl). Conversion class 114-3 provides methods for converting an input object 116 in Java to an output document 118 in XML. As described above, when describing class and interface definitions, X2XMLMappingImpl class 114-3 is not used directly, but subclasses are allocated in it using content added to the appropriate methods depending on the definitions of the type of XML output document 118, the conversion to which is performed, and an input object 116 in the Java language, the conversion from which is carried out.
В таблице M114-4 приведены основные функции (т.е. неисчерпывающий перечень функций) выходного целевого класса 114-4 (X2XMLOutput Target).Table M114-4 lists the main functions (i.e., a non-exhaustive list of functions) of the output target class 114-4 (X2XMLOutput Target).
X2XMLOutput Target класс 114-4 позволяет записывать документ 118 на языке XML в поток байтов или символов. Класс 114-4 обеспечивает оптимизацию, в частности, позволяющую позиционировать поток байтов в выходной поток сервлета. Таким образом, документ 118 на языке XML не подвергают буферизации перед контрольным считыванием.The X2XMLOutput Target class 114-4 allows you to write an XML document 118 into a stream of bytes or characters. Class 114-4 provides optimizations, in particular that allow the byte stream to be positioned in the servlet output stream. Thus, the XML document 118 is not buffered before the check read.
Таким образом, X2XMLMappingImpl класс 114-3 реализует функции X2XMLMapping интерфейса 114-2. X2XMLMapping интерфейс 114-2 расширяет функции X2XMLHandler интерфейса 114-1. Таким образом, X2XMLMappingImpl класс 114-3 реализует функции, заложенные в X2XMLHandler интерфейсе 114-1.Thus, the X2XMLMappingImpl class 114-3 implements the X2XMLMapping functions of the 114-2 interface. X2XMLMapping interface 114-2 extends the functions of X2XMLHandler interface 114-1. Thus, the X2XMLMappingImpl class 114-3 implements the functions embedded in the X2XMLHandler interface 114-1.
На фиг.4 проиллюстрирован способ 400 преобразования программного объекта 116 (например, Java Bean) в документ 118 на языке XML, при осуществлении которого:FIG. 4 illustrates a
(а) на шаге 402 получают экземпляр интерфейса 114-2 преобразования (например, X2XMLMapping) для осуществления преобразования из входного объекта Х 116 в выходной документ 118 на языке XML;(a) in
(б) на шаге 404 задают программный объект 116 и выходной поток для документа 118 на языке XML в интерфейсе преобразования 114-3;(b) in
(в) на шаге 406 активизируют интерфейс преобразования 114-2;(c) in
(г) на шаге 408 создают JSP-контейнер;(d) in
(д) на шаге 410 интерфейс преобразования 114-2 активизирует JSP-контейнер, используя документ-шаблон 112 на языке XML, записанный с использованием технологии JSP (шаблон JSP-XML), для создания документа 118 на языке XML;(e) in
(е) на шаге 412 JSP-контейнер компилирует и реализует документ-шаблон 112 на языке XML, записанный с использованием технологии JSP (шаблон JSP-XML);(e) in
(ж) на шаге 414 компилированный документ-шаблон 112 на языке XML, записанный с использованием технологии JSP (шаблон JSP-XML), начинает запись документа 118 на языке XML в заданный (на шаге 404) выходной поток;(g) in
(з) на шаге 416, если это применимо к тегам элементов/данных атрибутов и начальным/конечным тегам, компилированный документ-шаблон 112 на языке XML, записанный с использованием технологии JSP (шаблон JSP-XML), осуществляет обратный вызов интерфейса преобразования 114-2 с целью поддержания состояния обработки и ввода данных в выходной документ 118 на языке XML (данные извлекают из программного объекта 116);(h) in
(и) на шаге 418 компилированный документ-шаблон 112 на языке XML, записанный с использованием технологии JSP (шаблон JSP-XML), может факультативно вызвать метод isOptionalElementPresent или метод isOptionalAtributePresent с тем, чтобы определить необходимость генерирования некоторых частей документа на языке XML;(i) in
(к) на шаге 420 документ-шаблон 112 на языке XML, записанный с использованием технологии JSP (шаблон JSP-XML), осуществляет обратный вызов метода getElementRepetitions для определения количества циклов при генерировании определенных частей документа на языке XML; и(k) in
(л) на шаге 422 состояние обработки поддерживают с использованием стека; это эффективно при генерировании сложных типов внутри документа на языке XML, в котором образуется массив, происходит рекурсия или в одном сложном типе содержится другой сложный тип.(k) in
В преобразовании объекта Java в документ XML используется документ-шаблон 112 на языке XML, который кодируется с использованием аналогичных стандартов, заданных анализатором 104, осуществляющим обработку событий (по меньшей мере для сложных объектов). Например, для сложных типов необходимо кодировать начальные и конечные теги (что не требуется для элементов простых типов). Ниже в примере II "преобразование пользовательского объекта JAVA в документ XML" подробно описано генерирование выходного документа на языке XML из входного пользовательского объекта языка Java.When transforming a Java object into an XML document, an XML template document 112 is used, which is encoded using similar standards defined by the analyzer 104 that processes events (at least for complex objects). For example, for complex types, it is necessary to encode start and end tags (which is not required for elements of simple types). Example II below, “Converting a JAVA User Object to an XML Document”, describes in detail the generation of an XML output document from an input Java user object.
Пример IIExample II
Преобразование пользовательского объекта JAVA в документ XMLConvert a custom JAVA object to an XML document
В примере II использованы следующие компоненты (описанные ниже):In example II, the following components were used (described below):
(A) Customer2XMLMapping.java: класс 114-1 обработчика, который JSP-шаблон 112 вызывает для получения значений из входного пользовательского объекта 116 языка Java и заполнения выходного документа 118 на языке XML;(A) Customer2XMLMapping.java: handler class 114-1 that the JSP template 112 calls to retrieve values from the input user object 116 of the Java language and populate the output document 118 in XML;
(Б) customer.jsp: JSP-шаблон 112, используемый для генерирования выходного документа 118 на языке XML;(B) customer.jsp: JSP template 112 used to generate XML output 118;
(B) customerSymbols.java: содержит константы и схему хеширования. Схема хеширования служит для преобразования имен тегов в целочисленные константы. JSP-шаблон 112 использует целочисленные константы; и(B) customerSymbols.java: contains constants and a hash scheme. The hash scheme is used to convert tag names to integer constants. JSP pattern 112 uses integer constants; and
(Г) execute.java: программа класса 114-2/интерфейса 114-3 преобразования, используемая для осуществления преобразования из языка Java в язык XML и из языка XML в язык Java (аналогично пункту В из примера I выше).(D) execute.java: a class 114-2 / conversion interface program 114-3 program used to convert from Java to XML and from XML to Java (similar to step B of Example I above).
А. Ниже с некоторыми сокращениями для краткости приведена программа (Customer2XMLMapping.java), служащая для создания документа на языке XML из входного объекта языка Java.A. Below, with some abbreviations, for brevity, the program (Customer2XMLMapping.java) is used to create an XML document from an input object of the Java language.
//START Customer2XMLMapping.java// START Customer2XMLMapping.java
package corn.xxx.xml2xmapping.sample.customer;package corn.xxx.xml2xmapping.sample.customer;
import java.util.*;import java.util. *;
import com.ibm.xml2xmapping.util. *;import com.ibm.xml2xmapping.util. *;
public class Customer2XMLMapping extendspublic class Customer2XMLMapping extends
com.xxx.xml2xmapping.X2XMLMappingImpl {com.xxx.xml2xmapping.X2XMLMappingImpl {
private Customer fieldCustomer;private Customer fieldCustomer;
/**/ **
* Customer2XMLMapping constructor comment.* Customer2XMLMapping constructor comment.
*/* /
public Customer2XMLMapping() {public Customer2XMLMapping () {
super();super ();
fieldPageName="customer.jsp";fieldPageName = "customer.jsp";
}}
/**/ **
* getElementRepetitions method comment.* getElementRepetitions method comment.
*/* /
public int getElementRepetitions(int name) {public int getElementRepetitions (int name) {
switch (name) {switch (name) {
} return 0;} return 0;
}}
/**/ **
* getElementValue method comment.* getElementValue method comment.
*/* /
public String getElementValue(int name) {public String getElementValue (int name) {
switch (name) {switch (name) {
case CustomerSymbols.CUSTOMER_FIRSTNAME: {case CustomerSymbols.CUSTOMER_FIRSTNAME: {
return this.fieldCustomer.getFirstName();return this.fieldCustomer.getFirstName ();
}}
case CustomerSymbols.CUSTOMER_LASTNAME: {case CustomerSymbols.CUSTOMER_LASTNAME: {
return this.fieldCustomer.getLastName();return this.fieldCustomer.getLastName ();
} case CustomerSymbols.CUSTOMER_ID: {} case CustomerSymbols.CUSTOMER_ID: {
return this.fieldCustomer.getId();return this.fieldCustomer.getId ();
}}
}}
return "";return "";
}}
* getElementValue method comment.* getElementValue method comment.
public String getElementValue(int index, int name) {public String getElementValue (int index, int name) {
switch (name) {switch (name) {
}}
return "";return "";
}}
* @param aCustomer* @param aCustomer
corn.xxx.xml2xmapping.sample.customer.Customercorn.xxx.xml2xmapping.sample.customer.Customer
public void setCustomer(Customer aCustomer) {public void setCustomer (Customer aCustomer) {
this.fieldCustomer=aCustomer;this.fieldCustomer = aCustomer;
}}
}}
//END Customer2XMLmapping.java// END Customer2XMLmapping.java
Б. Ниже с некоторыми сокращениями для краткости описан документ-шаблон (Customer.jsp), используемый в технологии JSP для модуля 112.B. Below, for brevity, a template document (Customer.jsp) used in JSP technology for module 112 is described below.
//START Customer.jsp// START Customer.jsp
<%@ page import="com.ibm.xml2xmapping.*" %><% @ page import = "com.ibm.xml2xmapping. *"%>
<%@ page<% @ page
import="com.ibm.xml2xmapping. sample.customer.CustomerSymbols"import = "com.ibm.xml2xmapping. sample.customer.CustomerSymbols"
%>%>
<%X2XMLHandler handler=<% X2XMLHandler handler =
(X2XMLHandler)request.getAttribute("com.ibm.xml2xmapping.X2XMLHandler");(X2XMLHandler) request.getAttribute ("com.ibm.xml2xmapping.X2XMLHandler");
handler.setWriter(out);%>handler.setWriter (out);%>
<?xml version="1.0"?><? xml version = "1.0"?>
<customer><customer>
<FirstName><%=handler.getElementValue(CustomerSymbols.CUSTOMER_FI RSTNAME) %></FirstName><FirstName> <% = handler.getElementValue (CustomerSymbols.CUSTOMER_FI RSTNAME)%> </FirstName>
<LastName><%=handler.getElementValue(CustomerSymbols.CUSTOMER_LA STNAME) %></LastName><LastName> <% = handler.getElementValue (CustomerSymbols.CUSTOMER_LA STNAME)%> </LastName>
<CustId><%=handler.getElementValue(CustomerSymbols.CUSTOMER_ID)%></CustId><CustId><%=handler.getElementValue(CustomerSymbols.CUSTOMER_ID)%> </CustId>
</customer></customer>
//END Customer.jsp// END Customer.jsp
В. Ниже с некоторыми сокращениями для краткости приведена программа (Customersymbols.java) схемы хеширования и констант, используемых в документе-шаблоне customer.jsp.C. Below, for brevity, the program (Customersymbols.java) of the hash schemes and constants used in the customer.jsp template document is given below.
//START Customersymbols.java// START Customersymbols.java
package corn.xxx.xml2xmapping.sample.customer;package corn.xxx.xml2xmapping.sample.customer;
import java.util.HashMap;import java.util.HashMap;
public class CustomerSymbols {public class CustomerSymbols {
public static final int CUSTOMER=1;public static final int CUSTOMER = 1;
public static final int CUSTOMER_FIRSTNAME=2;public static final int CUSTOMER_FIRSTNAME = 2;
public static final int CUSTOMER_LASTNAME=3;public static final int CUSTOMER_LASTNAME = 3;
public static final int CUSTOMER_ID=4;public static final int CUSTOMER_ID = 4;
private static CustomerSymbols fieldlnstance;private static CustomerSymbols fieldlnstance;
private HashMap fieldName2SymbolDictionary;private HashMap fieldName2SymbolDictionary;
private static Object anObject=new Object();private static Object anObject = new Object ();
* CustomerInfoElementSymbols constructor comment.* CustomerInfoElementSymbols constructor comment.
private CustomerSymbols() {private CustomerSymbols () {
super();super ();
this.fieldName2SymbolDictionary=new HashMap();this.fieldName2SymbolDictionary = new HashMap ();
this.fieldName2SymbolDictionary.put("customer", newthis.fieldName2SymbolDictionary.put ("customer", new
Integer(CustomerSymbols.CUSTOMER));Integer (CustomerSymbols.CUSTOMER));
this.fieldName2SymbolDictionary.put("FirstName", newthis.fieldName2SymbolDictionary.put ("FirstName", new
Integer(CustomerSymbols.CUSTOMER_FIRSTNAME));Integer (CustomerSymbols.CUSTOMER_FIRSTNAME));
this.fieldName2SymbolDictionary.put("LastName", newthis.fieldName2SymbolDictionary.put ("LastName", new
Integer(CustomerSymbols.CUSTOMER_LASTNAME));Integer (CustomerSymbols.CUSTOMER_LASTNAME));
this.fieldName2SymbolDictionary.put("CustId", newthis.fieldName2SymbolDictionary.put ("CustId", new
Integer(CustomerSymbols.CUSTOMER_ID));Integer (CustomerSymbols.CUSTOMER_ID));
}}
* @return int* @return int
* @param elementName java.lang.String* @param elementName java.lang.String
public static int getSymbol(String elementName) {public static int getSymbol (String elementName) {
if (CustomerSymbols. fieldlnstance==null) {if (CustomerSymbols. fieldlnstance == null) {
synchronized (anObject) {synchronized (anObject) {
if (CustomerSymbols. fieldlnstance=null) {if (CustomerSymbols. fieldlnstance = null) {
CustomerSymbols.fieldlnstance=newCustomerSymbols.fieldlnstance = new
CustomerSymbols();CustomerSymbols ();
}}
}}
}}
returnreturn
((Integer)CustomerSymbols.fieldInstance.fieldName2SymbolDictionar y.get(elementName)).intValue();((Integer) CustomerSymbols.fieldInstance.fieldName2SymbolDictionar y.get (elementName)). IntValue ();
}}
}}
//END Customersymbols.Java// END Customersymbols.Java
Ниже приведен образец измененного документа-шаблона customer.jsp для генерирования документа на языке XML при наличии массива пользователей, как это описано в примере I:The following is a sample of a modified template document customer.jsp for generating an XML document with an array of users, as described in Example I:
for(int i=0;for (int i = 0;
i<handler.getElementRepetitions (CustomerSymbols.CUSTOMERS); i++)i <handler.getElementRepetitions (CustomerSymbols.CUSTOMERS); i ++)
{{
<%handler.startElement(i,CustomerSymboIs.CUSTOMER);%><customer><%handler.startElement(i,CustomerSymboIs.CUSTOMER);%> <customer>
<FirstName><FirstName>
<%=handler.getElementValue (CustomerSymbols.CUSTOMER_FIRSTNAME) %></FirstName><% = handler.getElementValue (CustomerSymbols.CUSTOMER_FIRSTNAME)%> </FirstName>
<LastName><LastName>
<%=handler.getElement Value (CustomerSymbols.CUSTOMER_LASTNAME) %></LastName><% = handler.getElement Value (CustomerSymbols.CUSTOMER_LASTNAME)%> </LastName>
<CustId><%=handler.getElementValue (CustomerSymbols.CUSTOMER_ ID)%></CustId><CustId> <% = handler.getElementValue (CustomerSymbols.CUSTOMER_ ID)%> </CustId>
</customer></customer>
<%=handler.endElement (i,CustomerSymbols.CUSTOMER);%><%}%><% = handler.endElement (i, CustomerSymbols.CUSTOMER);%> <%}%>
Обработчик 114-1 определяет размер массива (т.е. количество выполняемых циклов) и возвращается к методу getElementRepetitions. При вызове из документа-шаблона customer.jsp метода startElement с использованием индекса и имени обработчик 114-1 создает ссылку на данный конкретный пользовательский объект массива.Handler 114-1 determines the size of the array (i.e., the number of loops executed) and returns to the getElementRepetitions method. When the startElement method is called from the template document customer.jsp using the index and name, handler 114-1 creates a link to this particular user-defined array object.
Для обработки рекурсии обработчик 114-1 использует стек. По мере рекурсии объекта обработчик 114-1 проталкивает запись в стек, используя функцию startElement, и выталкивает данные из стека, используя функцию endElement. Рабочим объектом является объект, расположенный на вершине стека.Handler 114-1 uses the stack to handle recursion. As the object recurses, handler 114-1 pushes the write onto the stack using the startElement function, and pushes the data from the stack using the endElement function. A work item is an item located at the top of the stack.
Если объект является факультативным (опциональным), используются методы isOptionalElement() или isOptionalAtribute() с тем, чтобы определить, существует ли объект. В процесс обработки документа-шаблона customer.jsp вносят коррективы с целью ввести условный оператор, использующий возвращаемое булево выражение для одного из методов isOptionalxxx. В целом преимущества примерного варианта осуществления настоящего изобретения заключаются в следующем:If the object is optional (optional), the isOptionalElement () or isOptionalAtribute () methods are used to determine if the object exists. Adjustments are made to the process of processing the template document customer.jsp in order to introduce a conditional statement that uses the return Boolean expression for one of the isOptionalxxx methods. In general, the advantages of an exemplary embodiment of the present invention are as follows:
(а) создание единой интегрированной среды для преобразования документа XML в объект Java и объекта Java в документ XML, в которой используется обработчик, маскирующий способ получения того или иного свойства для преобразования или отображения;(a) creating a single integrated environment for converting an XML document into a Java object and a Java object into an XML document, which uses a handler that masks the way to obtain a property for conversion or display;
(б) использование легко доступных инструментальных средств (например, SAX-анализатора, JSP) для реализации способов преобразования (XML/Java) по настоящему изобретению; и(b) the use of easily accessible tools (e.g., SAX parser, JSP) to implement the conversion methods (XML / Java) of the present invention; and
(в) обеспечение интерфейсов и классов (в среде языка Java), упрощающих структуру процесса преобразования по настоящему изобретению и делающих процесс преобразования сходным в обоих направлениях.(c) providing interfaces and classes (in the Java language environment) that simplify the structure of the transformation process of the present invention and make the transformation process similar in both directions.
Claims (22)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA2,349,905 | 2001-06-07 | ||
CA002349905A CA2349905A1 (en) | 2001-06-07 | 2001-06-07 | System and method of mapping between software objects and structured language element based documents |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2003137567A RU2003137567A (en) | 2005-05-27 |
RU2287181C2 true RU2287181C2 (en) | 2006-11-10 |
Family
ID=4169222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2003137567/09A RU2287181C2 (en) | 2001-06-07 | 2001-12-28 | System and method for mutual transformation of program objects and documents based on elements of structured language |
Country Status (11)
Country | Link |
---|---|
EP (1) | EP1399841A1 (en) |
JP (1) | JP2004530225A (en) |
KR (1) | KR100583517B1 (en) |
CN (1) | CN1313953C (en) |
CA (1) | CA2349905A1 (en) |
CZ (1) | CZ20033330A3 (en) |
HU (1) | HUP0400135A2 (en) |
PL (1) | PL367225A1 (en) |
RU (1) | RU2287181C2 (en) |
TW (1) | TW573278B (en) |
WO (1) | WO2002101579A1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2479016C2 (en) * | 2007-10-11 | 2013-04-10 | Майкрософт Корпорейшн | General model editing system |
RU2520344C2 (en) * | 2008-10-15 | 2014-06-20 | Майкрософт Корпорейшн | Caching runtime generated code |
RU2527201C1 (en) * | 2013-01-24 | 2014-08-27 | Общество с ограниченной ответственностью "Системное моделирование и анализ" | Data conversion method, data conversion device and data conversion system |
RU2571512C2 (en) * | 2009-03-04 | 2015-12-20 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Content conversion on computer |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003091419A (en) * | 2001-09-19 | 2003-03-28 | Just Syst Corp | Information processor and its program |
US7861250B2 (en) | 2003-04-25 | 2010-12-28 | Microsoft Corporation | Runtime polymorphism |
US7194485B2 (en) | 2003-11-21 | 2007-03-20 | International Business Machines Corporation | Mapping XML schema components to qualified java components |
US7418456B2 (en) | 2004-01-16 | 2008-08-26 | International Business Machines Corporation | Method for defining a metadata schema to facilitate passing data between an extensible markup language document and a hierarchical database |
US7212410B2 (en) | 2004-01-16 | 2007-05-01 | Finisar Corporation | Actuator for small form-factor pluggable transceiver |
US7290012B2 (en) | 2004-01-16 | 2007-10-30 | International Business Machines Corporation | Apparatus, system, and method for passing data between an extensible markup language document and a hierarchical database |
US7120864B2 (en) | 2004-01-27 | 2006-10-10 | International Business Machines Corporation | Eliminating superfluous namespace declarations and undeclaring default namespaces in XML serialization processing |
CN1306400C (en) * | 2004-05-20 | 2007-03-21 | 北京大学 | Binary system software member and its manufacturing method |
CN100336023C (en) * | 2004-08-24 | 2007-09-05 | 英业达股份有限公司 | Method for realizing software call through keyword associated mechanism |
KR100653610B1 (en) | 2004-09-15 | 2006-12-04 | (주)웹플러스 | On-line flash editing system with reinforced function of editing navigation bar |
US7694284B2 (en) * | 2004-11-30 | 2010-04-06 | International Business Machines Corporation | Shareable, bidirectional mechanism for conversion between object model and XML |
US20060123345A1 (en) * | 2004-12-06 | 2006-06-08 | International Business Machines Corporation | Platform-independent markup language-based gui format |
US7904417B2 (en) | 2006-02-27 | 2011-03-08 | Microsoft Corporation | Recursive metadata templating |
KR100836736B1 (en) * | 2006-09-27 | 2008-06-10 | 한국전자통신연구원 | Apparatus for Parser Framework using Markup Language and Method thereof |
US8578350B2 (en) * | 2006-11-30 | 2013-11-05 | Ncr Corporation | System and method for interpreting a specification language file to implement a business system |
US8381093B2 (en) | 2006-12-06 | 2013-02-19 | Microsoft Corporation | Editing web pages via a web browser |
CN101355560B (en) * | 2008-09-12 | 2011-12-14 | 深圳市联软科技有限公司 | Method and system for transmitting data |
JP5249092B2 (en) * | 2009-03-09 | 2013-07-31 | Necシステムテクノロジー株式会社 | Information processing apparatus, multidimensional array expansion processing method, and program |
US20100235806A1 (en) * | 2009-03-13 | 2010-09-16 | Microsoft Corporation | Rich Web Site Authoring And Design |
US10089119B2 (en) | 2009-12-18 | 2018-10-02 | Microsoft Technology Licensing, Llc | API namespace virtualization |
CN101826113A (en) * | 2010-05-14 | 2010-09-08 | 珠海世纪鼎利通信科技股份有限公司 | High-efficiency and unified method for storing wireless measurement data |
US8776094B2 (en) | 2011-08-11 | 2014-07-08 | Microsoft Corporation | Runtime system |
US8695021B2 (en) | 2011-08-31 | 2014-04-08 | Microsoft Corporation | Projecting native application programming interfaces of an operating system into other programming languages |
KR101535703B1 (en) | 2012-09-28 | 2015-07-09 | 삼성에스디에스 주식회사 | Apparatus and method for converting Value Object |
US9075618B2 (en) * | 2012-11-02 | 2015-07-07 | Microsoft Technology Licensing, Llc | Cross-platform data visualizations using common descriptions |
KR102095703B1 (en) * | 2013-06-20 | 2020-04-01 | 에스케이플래닛 주식회사 | An apparatus, method and recording medium for Markup parsing |
US10635504B2 (en) | 2014-10-16 | 2020-04-28 | Microsoft Technology Licensing, Llc | API versioning independent of product releases |
CN104636265B (en) * | 2015-01-21 | 2016-04-27 | 广东电网有限责任公司电力科学研究院 | A kind of access method of efficient memory model tissue of CIMXML document |
CN106407679B (en) * | 2016-09-13 | 2019-03-26 | 上海市徐汇区中心医院 | Mobile interchange cross-platform cross equipment remote diagnosis system |
KR102255806B1 (en) * | 2017-07-03 | 2021-05-26 | (주)더리스 | Integrated management method and system of online shopping mall based on API |
CN108519964B (en) * | 2018-03-09 | 2022-03-04 | 中国工程物理研究院计算机应用研究所 | Method for converting XML Schema document into Java code |
CN110795169B (en) * | 2018-08-02 | 2022-11-11 | 武汉斗鱼网络科技有限公司 | Method and related device for acquiring data |
CN110795168B (en) * | 2018-08-02 | 2022-11-11 | 武汉斗鱼网络科技有限公司 | Method for acquiring data and related device |
CN113505269B (en) * | 2021-07-02 | 2024-03-29 | 卡斯柯信号(成都)有限公司 | Binary file detection method and device based on XML |
CN113742008B (en) * | 2021-09-13 | 2024-04-02 | 挂号网(杭州)科技有限公司 | Interface calling method and device, electronic equipment and storage medium |
JP7315253B2 (en) * | 2021-09-29 | 2023-07-26 | 株式会社スカイディスク | System, server and method |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5926189A (en) * | 1996-03-29 | 1999-07-20 | Apple Computer, Inc. | Method and apparatus for typographic glyph construction including a glyph server |
US6343265B1 (en) * | 1998-07-28 | 2002-01-29 | International Business Machines Corporation | System and method for mapping a design model to a common repository with context preservation |
US6226675B1 (en) * | 1998-10-16 | 2001-05-01 | Commerce One, Inc. | Participant server which process documents for commerce in trading partner networks |
US6125391A (en) * | 1998-10-16 | 2000-09-26 | Commerce One, Inc. | Market makers using documents for commerce in trading partner networks |
AU778101B2 (en) * | 1999-06-14 | 2004-11-18 | Integral Development Corporation | System and method for conducting web-based financial transactions in capital markets |
US6327628B1 (en) * | 2000-05-19 | 2001-12-04 | Epicentric, Inc. | Portal server that provides a customizable user Interface for access to computer networks |
-
2001
- 2001-06-07 CA CA002349905A patent/CA2349905A1/en not_active Abandoned
- 2001-08-22 TW TW90120639A patent/TW573278B/en not_active IP Right Cessation
- 2001-12-28 HU HU0400135A patent/HUP0400135A2/en unknown
- 2001-12-28 RU RU2003137567/09A patent/RU2287181C2/en not_active IP Right Cessation
- 2001-12-28 CN CNB018233392A patent/CN1313953C/en not_active Expired - Fee Related
- 2001-12-28 WO PCT/US2001/049577 patent/WO2002101579A1/en not_active Application Discontinuation
- 2001-12-28 CZ CZ20033330A patent/CZ20033330A3/en unknown
- 2001-12-28 JP JP2003504271A patent/JP2004530225A/en active Pending
- 2001-12-28 EP EP01993317A patent/EP1399841A1/en not_active Withdrawn
- 2001-12-28 KR KR1020037014561A patent/KR100583517B1/en not_active IP Right Cessation
- 2001-12-28 PL PL01367225A patent/PL367225A1/en unknown
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2479016C2 (en) * | 2007-10-11 | 2013-04-10 | Майкрософт Корпорейшн | General model editing system |
RU2520344C2 (en) * | 2008-10-15 | 2014-06-20 | Майкрософт Корпорейшн | Caching runtime generated code |
US9250938B2 (en) | 2008-10-15 | 2016-02-02 | Microsoft Technology Licensing, Llc | Caching runtime generated code |
RU2571512C2 (en) * | 2009-03-04 | 2015-12-20 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Content conversion on computer |
RU2527201C1 (en) * | 2013-01-24 | 2014-08-27 | Общество с ограниченной ответственностью "Системное моделирование и анализ" | Data conversion method, data conversion device and data conversion system |
Also Published As
Publication number | Publication date |
---|---|
EP1399841A1 (en) | 2004-03-24 |
PL367225A1 (en) | 2005-02-21 |
HUP0400135A2 (en) | 2004-08-30 |
CN1313953C (en) | 2007-05-02 |
CZ20033330A3 (en) | 2004-03-17 |
KR20040007545A (en) | 2004-01-24 |
CA2349905A1 (en) | 2002-12-07 |
TW573278B (en) | 2004-01-21 |
RU2003137567A (en) | 2005-05-27 |
JP2004530225A (en) | 2004-09-30 |
WO2002101579A1 (en) | 2002-12-19 |
CN1513145A (en) | 2004-07-14 |
KR100583517B1 (en) | 2006-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2287181C2 (en) | System and method for mutual transformation of program objects and documents based on elements of structured language | |
US20040168124A1 (en) | System and method of mapping between software objects & structured language element-based documents | |
US8126901B2 (en) | Method and apparatus for generating a dynamic web page | |
US6981212B1 (en) | Extensible markup language (XML) server pages having custom document object model (DOM) tags | |
US7233956B2 (en) | Method and apparatus for data migration between databases | |
US20040034830A1 (en) | XML streaming transformer | |
US20020143816A1 (en) | Method and system for using a generalized execution engine to transform a document written in a markup-based declarative template language into specified output formats | |
US20070028164A1 (en) | Computer readable storage medium and document processing method | |
Fisher et al. | The next 700 data description languages | |
Meijer et al. | Haskell server pages-functional programming and the battle for the middle tier | |
US7890855B2 (en) | Method and computer system for separating and processing layout information and data of a document | |
US20050234924A1 (en) | Automated patching of code for schema derived classes | |
US8650536B2 (en) | Modular server architecture | |
Simeoni et al. | Language bindings to XML | |
Fan et al. | Composable XML integration grammars | |
KR20020017669A (en) | XML-based application providing system and XML-based application recorded in computer-readable media | |
Leung | Professional XML Development with Apache Tools: Xerces, Xalan, FOP, Cocoon, Axis, Xindice | |
Gapeyev et al. | Statically typed document transformation: An Xtatic experience | |
Kirchner et al. | Xemantics: a rewriting calculus-based semantics of XSLT | |
Trancón y Widemann et al. | Automatic construction of XML-based tools seen as meta-programming | |
Yafi et al. | Syntax Recovery for Uniface as a Domain Specific Language | |
Sarang | Pro Apache XML | |
Marinos et al. | Towards an XML-based user interface for electronic health record | |
Badros et al. | The Extensible Templating Language: An XML-based Restricted Markup-Generating Laguage. | |
Rasmussen et al. | A case for new MPI Fortran bindings |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20081229 |