КОДИРОВАНИЕ ДАННЫХ ЯЗЫКА РАЗМЕТКИ
ENCODING MARKUP LANGUAGE DATA

Предшествующий уровень техники
Когда данные передаются между отправителем и получателем (например, между сервером и клиентом) по сети, и отправитель, и получатель должны знать формат передаваемых данных прежде, чем случится передача. Например, если отправитель отправляет данные по форме для определенной базы данных, то чтобы использовать данные, получатель должен знать, какой используется формат базы данных, и должен знать детали этого формата. Если получатель не знает, какой формат использовался или деталей этого формата, то данные, посланные должным образом на стороне отправителя, будут нераспознаваемы на стороне получателя.
Как пример, формат базы данных может включать в себя набор записей, где каждая запись содержит номер записи в некотором размере за ним следует поле фамилии в некотором размере, поле имени в некотором размере, и поле даты в некотором размере. Этим записям может предшествовать заголовок. Однако, даже если отправитель отправляет данные, в совершенстве придерживаясь формата, до тех пор, пока получатель не узнает формата, нет никакой возможности для получателя, чтобы понять данные правильно.
Чтобы гарантировать, что и отправитель, и получатель имеют необходимую информацию о формате, они часто должны выполнять не только одно и то же приложение, но одну и ту же версию приложения. Например, если отправитель отправил данные из более новой версии приложения базы данных получателю, выполняющему более раннюю версию, то версия получателя, возможно, не распознает формат, и как обсуждается выше, данные могут оказаться потерянными или бесполезными.
Чтобы помочь решить эти проблемы и увеличить гибкость передач, был разработан расширяемый язык разметки (XML) - язык разметки, основанный на Стандартном Обобщенном Языке Разметки (SGML). Язык разметки - это язык, который позволяет содержимому быть структурировано переданным вместе с метасодержимым, таким как стиль, синтаксис или семантическая информация. XML называют расширяемым, потому что он не является языком разметки установленного формата. HTML (язык разметки гипертекста) - это язык разметки установленного формата, определяющий только один формат. XML - это скорее язык разметки, который на самом деле является метаформатом, языком, который позволяет пользователю описывать другие форматы. Что позволяет пользователю проектировать язык разметки и затем выражать его через XML. Таким образом XML предоставляет гибкий стандартизированный формат хранения данных, который обеспечивает гибкость на уровне формата, и, таким образом, может облегчить взаимодействие между отправителем и получателем даже в отсутствие предварительного соглашения относительно строгого формата. Чтобы достичь этого, XML использует систему тэгов с текстовым интерфейсом, подобную (HTML), чтобы описывать и хранить данные структурированным образом. Например, ввод данных в базу данных для записи служащего может быть представлен в формате XML следующим образом:
<employee>
<firstname> Джон </firstname>
<lastname> Смит </lastname>
<employee>
Эти данные XML включают два вида элементов - элементы тэгов, которые начинаются и заканчиваются угловыми скобками (например, тэги начала, типа “<firstname>” и тэги окончания, типа “</firstname>”), и элементы данных (например, "Джон"). Как показано, в документе XML тэги начала и окончания могут быть вложены в пределах других тэгов начала и окончания. Все элементы, которые появляются в пределах конкретного элемента, имеют свои тэги начала и окончания и появляются перед тэгом окончания этого конкретного элемента, что определяет древовидную структуру.
Пример XML выше включает элементы данных "Джон" и "Смит", но также включает и информацию (в элементах тэгов), указывающую, что элемент данных "Джон" является firstname и что он также является частью, наряду с lastname "Смит", записи служащего. Если отправитель передает этот XML файл, то любые приложения, которые распознают XML, будут в состоянии прочесть эту запись служащего, получить данные и понять ее компоненты.
В то время как XML не требует, чтобы получатель знал, какой формат файла используется и детали формата файла, он действительно обладает недостатками. Во-первых, посылаемый файл чрезвычайно велик из-за большого количества элементов тэгов, используемых, чтобы описать данные. Фактически, XML файлы могут в среднем по размеру быть в 2-10 раз больше, чем нормальные файлы данных. Такие большие размеры файлов увеличивают время передачи посылаемых данных, а также требуют более длительной продолжительности обработки. Поэтому передача и использование XML могут быть очень дорогими.
Чтобы сбалансировать конкурирующие интересы гибкости с более быстрой передачей и маленьким размером файла, могут использоваться некоторые методики, называемые бинарными XML. Хотя различные бинарные методики XML могут различаться в зависимости от использованных в них методик, две особенности стандартны в каждом бинарном XML формате.
Во-первых, бинарные XML форматы переносят двоичные значения, а не символьные значения. Во-вторых, бинарные XML форматы “маркируют” XML тэги, заменяя тэги более короткими маркерами. Например, бинарный формат XML может назначить следующие бинарные представления для тэгов, показанных выше:
1: <employee>
2: </employee>
3: <firstname>
4: </firstname>
5: <lastname>
6: </lastname>
Показанная выше запись тогда может быть представлена как:
1 3 Джон 4 5 Смит 6 2
(Показанные выше числа будут представлены в бинарной форме; введение отступов не является значимым и используется просто для того, чтобы улучшить понятность в момент, когда документ с языком разметки отображается). Замена текстовых тэгов такими представлениями-маркерами приводит к тому, что сжатый файл, который может выдавать XML файл, может быть в одну четверть или одну треть от размера исходного XML файла. Маркирование тэгов происходит либо согласно точным предварительно определенным заменам маркер/тэг (известным и отправителю и получателю, известным как “статический словарь”), либо согласно определениям, которые посылаются как часть переданного файла (такие передаваемые определения известны как “динамический словарь”).
Хотя размер файла является меньшим, недостатки в методиках бинарных XML все еще наличествуют. Во-первых, могут иметь место избыточные замены, которые делают методику неэффективной. Например, если число используется как тэг в распакованном файле XML, то оно может быть закодировано в другое число и затем должно быть декодировано, без экономии места, но за плату за кодирование/декодирование при использовании бинарного XML. Кроме того, даже при использовании методики бинарного XML, данные не сжимаются полностью к наименьшему размеру файла, потому что многие тэги повторяются. Это может быть иллюстрировано случаем, когда много записей данных, которые используют одни и те же тэги, содержатся в одном XML файле. В подобном случае, даже при том, что текстовые тэги, такие как <lastname>, будучи закодированными, могут быть заменены числовыми значениями, все еще будут наличествовать многократные копии одного и того же повторяющегося тэга.
Таким образом, есть потребность в методике, позволяющей кодировать данные более эффективно и в файлы меньшего размера.
Сущность изобретения
Согласно некоторым вариантам воплощений изобретения, документы с языком разметки преобразуются в уплотненную форму с языком разметки с помощью по меньшей мере одного параметризированного макроса. Макрос используется для того, чтобы заменять элементы, найденные в документе с языком разметки, на более уплотненную форму. Параметризованный макрос расширяется в упорядоченный набор элементов (тэгов и/или элементов данных), включающий по меньшей мере некоторые данные параметров, которые передаются в качестве параметров для макроса. Таким образом, данные языка разметки уплотняются.
Определение параметризированного макроса находится либо в статическом словаре, либо в динамическом словаре. Если определение находится в динамическом словаре, то в некоторых вариантах воплощений это означает, что определение передано с уплотненными данными языка разметки. В некоторых случаях используемый макрос будет смешением определенных динамически макросов и дополнительного макроса, определенного в статическом словаре.
Уплотненные документы с языком разметки могут затем быть преобразованы в неуплотненную форму с языком разметки при использовании описания макроса для того, чтобы развернуть макрос и параметры, содержащиеся в уплотненных данных языка разметки, в ряд элементов, которые они представляют.
Эти и другие варианты воплощений более полно описаны ниже.
Краткое описание чертежей
Предшествующее описание сущности изобретения, так же как следующее подробное описание предпочтительных вариантов воплощений, более понятны, будучи прочитаны совместно с приложенными чертежами. Для цели иллюстрирования изобретения здесь, на чертежах, показаны типичные варианты осуществления изобретения; однако изобретение не ограничено до отдельных раскрытых способов и средств.
В чертежах:
Фиг.1 - это блок-схема обычной компьютерной среды, в которой могут быть осуществлены разновидности данного изобретения;
Фиг.2 - это блок-схема обычной системы, в которой может быть осуществлено данное изобретение;
Фиг.3 - это блок-схема способа для кодирования информации с языком разметки;
Фиг.4 показывает систему для подготовки информации с языком разметки к передаче согласно одному варианту воплощения данного изобретения; и
Фиг.5 - это блок-схема, изображающая декодирование сжатых документов с языком разметки согласно одному варианту воплощения данного изобретения.
Подробное описание иллюстративных вариантов воплощений
Типичная компьютерная среда
Фиг.1 показывает типичную компьютерную среду, в которой могут быть осуществлены разновидности данного изобретения. Компьютерная среда системы 100 - это только один пример подходящей компьютерной среды, и его целью не является предположение любого ограничения относительно объема использования функциональных возможностей данного изобретения. Компьютерная среда 100 не должна интерпретироваться ни как обладающая какой-либо зависимостью либо потребностью в любой из комбинаций компонентов, иллюстрированных в обычной компьютерной среде 100.
Изобретение работоспособно и в многочисленных других компьютерных системах или конфигурациях для общих целей или специальных целей. Примеры широко известных компьютерных систем, сред и/или конфигураций, которые могут быть подходящими для реализации данного изобретения, включают, но не ограничены до, персональные компьютеры, компьютерные сервера, карманные устройства или ноутбуки, многопроцессорные системы, системы на основе микропроцессора, телеприставки, программируемую бытовую электронику, сетевые PC, миникомпьютеры, компьютеры мэйнфрэйм, встроенные системы, распределенные компьютерные среды, которые включают любые из вышеупомянутых систем или устройств, и т.п.
Изобретение может быть описано в общем контексте выполнимых компьютером команд, таких как выполняемые компьютером программные модули. В целом, программные модули включают в себя подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или осуществляют конкретные абстрактные типы данных. Изобретение также может быть осуществлено в распределенных компьютерных средах, где задачи выполняются удаленными устройствами обработки, которые связаны между собой посредством системы связи или другой среды передачи данных. В распределенной компьютерной среде программные модули и другие данные могут быть расположены как на локальных, так и на удаленных компьютерных носителях данных, включая запоминающие устройства памяти.
Со ссылкой на фиг.1, типичная система для осуществления изобретения включает в себя универсальное вычислительное устройство в форме компьютера 110. Компоненты компьютера 110 могут содержать, но не ограничены, модуль процессора 120, системную память 130 и системную шину 121, которая соединяет различные системные компоненты, в том числе и системную память с модулем процессора 120. Модуль процессора 120 может представлять собой множество логических процессорных устройств, как это реализовано в процессоре с поддержкой многопоточности. Системная шина 121 может быть любой из нескольких типов шинных структур, в том числе шиной памяти или контроллером памяти, периферийной шиной или локальной шиной, использующей любое из разнообразия шинных архитектур. Для примера, но не для ограничения, такие архитектуры включают в себя шину Стандартной Промышленной Архитектуры (ISA), шину Микроканальной Архитектуры (MCA), шину Усовершенствованной ISA (EISA), локальную шину Ассоциации по Стандартам в Области Видеоэлектроники (VESA) или шину Соединения Периферийных Компонентов (PCI) (известную так же, как шина Второго уровня). Системная шина 121 также может быть осуществлена как подключение точка-точка, коммутирующая матрица или тому подобное, среди устройств, осуществляющих связь.
Компьютер 110 обычно содержит разнообразие читаемых компьютером носителей. Читаемые компьютером носители могут быть любыми подходящими носителями, которые могут быть доступны компьютеру 110 и содержат и энергозависимые, и энергонезависимые носители, сменные и несменные носители. В качестве примера, но не ограничения, читаемые компьютером носители могут включать в себя компьютерные носители и носители передачи. Компьютерные носители содержат и энергозависимые, и энергонезависимые, сменные и несменные носители, реализованные любым способом или технологией для хранения информации, такой как читаемые компьютером команды, структуры данных, модули программ или другие данные. Компьютерные носители содержат, но не ограничены, RAM, ROM, EEPROM, флэш-память или другие технологии памяти, CD-ROM, универсальные цифровые диски (DVD) или другие оптические дисковые носители, магнитные кассеты, магнитные ленты, магнитные накопители на диске или другие устройства магнитных носителей, а также любые другие носители данных, которые могут использоваться, чтобы хранить желаемую информацию, и которые могут быть доступны компьютеру 110. Носители передачи обычно воплощают читаемые компьютером команды, структуры данных, программные модули или другие данные в виде модулированного сигнала данных, такого как электромагнитный сигнал или другой транспортный механизм, и содержат любые доставляющие информацию носители. Термин “модулированный сигнал данных” означает сигнал, в котором одна или более из его характеристик установлена или изменена таким образом, чтобы закодировать информацию в сигнале. В качестве примера, но не ограничения, носители передачи содержат проводные носители, такие как проводные сети или прямые проводные подключения, и беспроводные носители, такие как акустические, RF, инфракрасные и другие беспроводные носители. Комбинации любого из вышеупомянутых носителей также должны быть включены в рамки читаемых компьютером носителей.
Системная память 130 содержит компьютерные носители в форме энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ROM) 131 или оперативная память (RAM) 132. Базовая система ввода-вывода 133 (BIOS), содержащая элементарные подпрограммы, которые помогают передавать информацию между элементами в пределах компьютера 110, как например, в ходе запуска, обычно хранится в ROM 131. RAM 132 обычно содержит данные и/или программные модули, которые находятся в доступе в настоящее время и/или которые только что обрабатывались процессором 120. В качестве примера, но не ограничения, Фиг.1 иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и данные программы 137.
Компьютер 110 может также содержать другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители. Только в качестве примера, Фиг.1 иллюстрирует дисковод 141 с жестким диском, который читает или пишет на несменный энергонезависимый магнитный носитель, дисковод 151 с магнитным диском, который читает или пишет на сменный энергонезависимый магнитный диск 152, и оптический дисковод 155, который читает или пишет на сменный энергонезависимый оптический диск 156, такой как CD-ROM или другой оптический носитель. Другие сменные/несменные энергозависимые/энергонезависимые компьютерные носители, которые могут использоваться в обычной рабочей среде, содержат, но не ограничены, кассеты магнитной ленты, карты флэш-памяти, универсальные цифровые диски, цифровые видеоленты, твердотельную RAM, твердотельную ROM и т.п. Дисковод 141 для жестких дисков обычно связан с системной шиной 121 через интерфейс несменной памяти, такой как интерфейс 140, а магнитный дисковод 151 и оптический дисковод 155 обычно связаны с системной шиной 121 интерфейсом сменной памяти, таким как интерфейс 150.
Дисководы и связанные с ними компьютерные носители, обсуждаемые выше и проиллюстрированные на Фиг.1, обеспечивают хранение читаемых компьютером команд, структур данных, модулей программы и других данных для компьютера 110. На Фиг.1, например, дисковод 141 для жестких дисков проиллюстрирован как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и данные программы 147. Заметим, что эти компоненты могут быть похожи или отличны от операционной системы 134, прикладных программ 135, других программных модулей 136 и данных 137 программы. Операционной системе 144, прикладным программам 145, другим программным модулям 146 и данным программы 147 здесь даны отличные номера, чтобы проиллюстрировать, что они, как минимум, являются различными копиями. Пользователь может вводить команды и информацию в компьютер посредством устройств ввода данных, таких как клавиатура 162 и указательное устройство 161, обычно называемое мышью, трэкболом или сенсорной клавиатурой. Другие устройства ввода данных (не показанные здесь) могут содержать микрофон, джойстик, игровую клавиатуру, спутниковую антенну, сканер или тому подобное. Эти и другие устройства ввода данных часто связаны с процессором 120 через пользовательский интерфейс 160 ввода, который присоединен к системной шине, но могут быть связаны и другими интерфейсами и шинными структурами, такими как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191 или другой тип устройства отображения также связан с системной шиной 121 через интерфейс, такой как видеоинтерфейс 190. В дополнение к монитору, компьютеры могут также содержать другие периферийные устройства вывода, такие как динамики 197 и принтер 196, которые могут быть подсоединены через интерфейс 195 внешних устройств вывода.
Компьютер 110 может работать в сетевом окружении, используя логические подключения к одному или более удаленным компьютерам, таким как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым PC, одноранговым устройством или другим обычным сетевым узлом, и обычно содержит многие или все элементы, описанные выше относительно компьютера 110, хотя только запоминающее устройство 181 памяти проиллюстрировано на Фиг.1. Логические подключения, изображенные на Фиг.1, содержат локальную сеть (LAN) 171 и глобальную сеть (WAN) 173, но могут также содержать другие сети. Такие сетевые среды являются обычными в офисах, компьютерных сетях масштаба предприятия, сетях интранет и Интернете.
Будучи использован в среде сети LAN, компьютер 110 связан с LAN 171 через сетевой интерфейс или адаптер 170. Будучи использован в среде сети WAN, компьютер 110 обычно содержит модем 172 или другие средства для того, чтобы установить связь с WAN 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, может быть связан с системной шиной 121 через пользовательский интерфейс ввода 160 или через другой подходящий механизм. В сетевом окружении программные модули, изображенные относительно компьютера 110 или его частей, могут быть сохранены на удаленном запоминающем устройстве памяти. В качестве примера, но не ограничения, Фиг.1 иллюстрирует удаленные прикладные программы 185 как постоянно находящиеся на устройстве памяти 181. Будет понятно, что показанные сетевые подключения являются типичными и что могут использоваться и другие средства установления линии связи между компьютерами.
Компьютерная среда 100 обычно содержит по меньшей мере некоторую форму читаемых компьютером носителей. Читаемые компьютером носители могут быть любыми подходящими носителями, к которым можно обратиться компьютерной средой 100. В качестве примера, но не ограничения, читаемые компьютером носители могут включать в себя компьютерные носители и носители передачи. Компьютерные носители содержат энергозависимые и энергонезависимые, сменные и несменные носители, реализованные с помощью любого способа или технологии хранения информации, такой как читаемые компьютером команды, структуры данных, модули программы или другие данные. Компьютерные носители содержат, но не ограничены, RAM, ROM, EEPROM, флэш-память или другие технологии памяти, CD-ROM, универсальные цифровые диски (DVD) или другие оптические дисковые носители, магнитные кассеты, магнитные ленты, магнитные накопители на диске или другие устройства магнитных носителей, а также любые другие носители данных, которые могут использоваться, чтобы хранить желаемую информацию и которые могут быть доступны компьютерной среде 100. Носители передачи обычно воплощают читаемые компьютером команды, структуры данных, программные модули или другие данные в виде модулированного сигнала данных, такого как электромагнитный сигнал или другой транспортный механизм, и содержат любые доставляющие информацию носители. Термин “модулированный сигнал данных” означает сигнал, в котором одна или более из его характеристик установлена или изменена таким образом, чтобы закодировать информацию в сигнале. В качестве примера, но не ограничения, носители передачи содержат проводные носители, такие как проводные сети или прямые проводные подключения, и беспроводные носители, такие как акустические, RF, инфракрасные и другие беспроводные носители. Комбинации любого из вышеупомянутых носителей также должны быть заключены в рамки читаемых компьютером носителей.
Кодирование документов с языком разметки, используя параметризованный макрос
Со ссылкой на Фиг.2, типичная система, в которой может быть осуществлено данное изобретение, содержит отправителя 210, сеть 220 и получателя 230. Отправитель 210 и получатель 230 связаны через сеть 220, которая может состоять из частной сети(ей) (например, LAN) и/или общедоступных сетей (например, Интернет). В одном варианте воплощения изобретения отправитель 210 сжимает документ с языком разметки для передачи, используя один или более параметризированных макросов. В одном варианте воплощения изобретения, получатель 230 получает сжатый документ с языком разметки и использует один или более параметризированных макросов, на которые ссылается сжатый документ, чтобы распаковать документ для его использования. Макрос, в общем, содержит информацию о том, как использовать параметры, чтобы сгенерировать последовательность. Никакое ограничение на типы макроса не подразумевается - без ограничений, подразумеваются простые макросы, которые просто содержат определение, показывающее каким образом параметры должны быть использованы, чтобы сгенерировать последовательность. Дополнительно, подразумеваются выполняемый макрос, например макрос, выраженный как или включающий в себя код, который, будучи выполнен, результатом дает последовательность.
В некоторых вариантах воплощений, информация с языком разметки закодирована для передачи посредством определения по меньшей мере одной последовательности (в том числе, элемента тэга и элемента данных), которая может быть закодирована с использованием параметризированного макроса. Фиг.3 - это блок-схема способа кодирования информации с языком разметки. Как показано на Фиг.3, на первом шаге 310 выбирается параметризированный макрос, соответствующий последовательности в документе с языком разметки. Выбранный параметризированный макрос - это тот, который получает один или более параметров, в том числе элемент данных, из последовательности, и когда макрос, будучи использован с параметром(ми), приводит к последовательности. На втором шаге 320 последовательность в информации с языком разметки заменяется ссылкой на макрос и на параметры (заменяя последовательность в информации с языком разметки ссылкой на макрос и на параметры для макроса).
На шаге 310 выбор макроса может быть выбором макроса из предварительно определенной группы макросов. Например, статический словарь, известный отправителю и, предположительно, известный получателю, может быть источником для отобранного макроса. С другой стороны, выбор макроса может быть сделан так, чтобы соответствовать последовательности. Например, если информация с языком разметки содержит несколько сходных последовательностей, которые отличаются только элементом данных, тогда может быть создан макрос, который, будучи использован с элементом данных в качестве параметра, генерирует правильную последовательность. В этом случае такой макрос может быть использован, чтобы заменить каждую такую последовательность (с различными параметрами, чтобы генерировать последовательности правильно).
В некоторых вариантах воплощений, где макрос генерируется, а не является частью статического словаря, определение макроса может быть включено в сжатую информацию с языком разметки, которая передается. В более общем случае, определение любого макроса, который будет нужен получателю, чтобы развернуть информацию с языком разметки, может быть включено как часть сжатой информации с языком разметки. С другой стороны, подобные определения могут быть предоставлены получателю другими способами. Например, отдельный файл словаря может быть предоставлен получателю. Например, если было сжато много файлов с языком разметки, и использовался общий набор макросов, которые не являются частью статического словаря, доступного получателю, этот общий набор макросов должен быть передан получателю только один раз. Достаточно передачи общего набора макросов получателю в отдельном файле словаря или только в одном из сжатых файлов. Таким образом, получатель получит информацию по использованным макросам, без необходимости передачи множества копий одних и тех же определений макросов. Эти методики раскрытия определений макросов не являются взаимоисключающими, но могут использоваться вместе, когда это уместно.
Шаги 310 и 320, как показано стрелкой 325, могут быть выполнены итерационно, заменяя несколько последовательностей. Стрелка 325 показана штриховой линией, потому что такая итерация не присутствует в каждом варианте воплощения. Алгоритм сжатия данных без потерь, такой как разновидности алгоритма Лемпел-Зив-Велша (LZW), может использоваться, дабы облегчить процесс путем выбора, какую последовательность из данных сжимать, или как сгенерировать макрос, который обеспечит лучшее сжатие.
В то время как начальная замененная последовательность составлена из элементов языка разметки, по мере продолжения итераций сжатая информация с языком разметки будет содержать ссылки на макрос. Такие ссылки на макрос могут также быть включены в состав последовательности, которая заменена ссылочной информацией макроса. Как показано на Фиг.3, в дополнение к использованию параметризированного макроса, непараметризированный макрос также может использоваться, чтобы сжимать информацию с языком разметки. Дополнительно, маркирование может использоваться, чтобы далее сжимать информацию с языком разметки. Маркирование может иметь место перед процессом замены последовательностей на ссылки на макрос и параметры или после него.
Как пример процесса сжатия рассмотрим следующие данные языка разметки:
<file>
<record>
<firstname> Джон </firstname>
<lastname> Адамс </lastname>
<birthyear> 1735 </birthyear>
<inauguration_year>1797</inauguration_year>
</record>
<record>
<firstname> Джон </firstname>
<lastname> Ханкок </lastname>
<birthyear> 1737 </birthyear>
</record>
<record>
<firstname> Томас </firstname>
<lastname> Пэйн </lastname>
<birthyear> 1737 </birthyear>
</record>
<record>
<firstname> Патрик </firstname>
<lastname> Генри </lastname>
<birthyear> 1735 </birthyear>
</record>
</file>
(отступы не являются значимыми и используются просто для того, чтобы облегчить понимание) Можно видеть, что данный файл содержит четыре записи, каждая из которых содержит firstname, lastname, и birthyear. Кроме того, одна запись содержит inauguration_year. В данном примере, на шаге 310, макрос выбирается, чтобы соответствовать последовательности: “<record> <firstname> Джон </firstname> <lastname> Адамс </lastname> <birthyear> 1735 </birthyear>” Этот макрос M1 будучи использован с параметрами p1, p2, p3 результатом дает “<record> <firstname> p1 </firstname> <lastname> p2 </lastname> <birthyear> p3 </birthyear>”. Этот макрос может или быть существующим макросом, или может быть создан конкретно для данного применения. Когда p1 - "Джон", p2 - “ Адамс”, и p3 - “1735”, макрос результатом дает правильную последовательность. На шаге 320, последовательность заменяется в информации с языком разметки на информацию о ссылках на макрос и параметры. Таким образом, видоизмененная информация с языком разметки такова:
<file>
M1 Джон Адамс 1735
<inauguration_year>1797</inauguration_year>
</record>
<record>
<firstname> Джон </firstname>
<lastname> Ханкок </lastname>
<birthyear> 1737 </birthyear>
</record>
<record>
<firstname> Томас </firstname>
<lastname> Пэйн </lastname>
<birthyear> 1737 </birthyear>
</record>
<record>
<firstname> Патрик </firstname>
<lastname> Генри </lastname>
<birthyear> 1735 </birthyear>
</record>
</file>
Данный макрос M1 может также использоваться для замены в трех других случаях (каждая из последовательностей, начинающихся с <record> и заканчивающихся </birthyear>. Результат после трех дополнительных замен таков:
<file>
M1 Джон Адамс 1735
<inauguration_year>1797</inauguration_year>
</record>
M1 Джон Ханкок 1737
</record>
M1 Томас Пэйн 1737
</record>
M1 Патрик Генри 1735
</record>
</file>
Дополнительные две замены могут быть сделаны с использованием другого макроса M2, который, будучи использован с параметрами p4 и p5, результатом дает “M1 p4 p5 1737 </record>”. Что результатом дает сжатую информацию с языком разметки, как изложено ниже:
<file>
M1 Джон Адамс 1735
<inauguration_year>1797</inauguration_year>
</record>
M2 Джон Ханкок
M2 Томас Пэйн
M1 Патрик Генри 1735
</record>
</file>
Из этого примера видно, что размер информации с языком разметки сильно уменьшен. В общем случае, число и длина повторных последовательностей, которые присутствуют в информации с языком разметки, первоначально непосредственно связаны с выгодой от замены ссылок на макросы для последовательностей. Маркирование и другие методики могут использоваться, чтобы далее сжимать размер сжатой информации с языком разметки.
Фиг.4 показывает систему для подготовки информации с языком разметки к передаче согласно одному варианту воплощения данного изобретения. Согласно изображению, система 400 содержит хранилище макроса 410, селектор макроса 420 и заменитель последовательностей 430. Хранилище макроса 410 хранит макросы, которые используются для сжатия информации с языком разметки. Селектор макроса 420 выбирает макрос, чтобы использовать его при замене последовательности в информации с языком разметки на ссылки на макрос и параметр(ы). Заменитель последовательностей 430 делает замену. Селектор макроса 420 может также сгенерировать макрос и сохранить его в хранилище макроса 410, а затем выбирать этот макрос, чтобы использовать его, чтобы заменить последовательность. Хранилище макроса 410 может быть загружено вместе с содержимым одного или более статических словарей. Несколько последовательностей могут быть заменены заменителем последовательностей 430, в том числе последовательности, которые содержат макрос, помещенный в них заменителем последовательностей 430 до того. Дополнительно, в данном варианте воплощения, маркировщик используется, чтобы маркировать видоизмененную информацию с языком разметки.
Декодирование документов с языковой разметкой, используя параметризированный макрос
Чтобы декодировать сжатую информацию с языком разметки, используются определения макросов, на которые ссылаются в сжатой информации с языком разметки, позволяя производить последовательности, которыми заменяют данные макроса (ссылки на макрос и ссылку(и) на параметры) в сжатой информации с языком разметки. Фиг.5 - это блок-схема, изображающая декодирование сжатых документов с языком разметки согласно одному варианту воплощения изобретения. Как показано на Фиг.5, на шаге 510 принята информация, содержащая данные макроса (ссылки на макрос и ссылку(и) на параметры).
На шаге 520, получено определение макроса для макроса, на который сделана ссылка. Макрос может быть получен из статического словаря. С другой стороны, макрос может быть получен из некоторого определения, включенного в сжатый документ с языком разметки, из связанного файла данных или из некоторого другого источника.
На шаге 530 применяется определение макроса, результатом давая последовательность ту же, что и на шаге 540, в результате чего последовательность подставляется в информацию. Эти шаги могут быть выполнены итерационно, чтобы "распаковать" множество ссылок на макрос путем замены.
Если сжатый документ с языком разметки был маркирован, шаг 510 получения информации дополнительно содержит развертывание маркеров - в действительности реверсируя процесс маркирования - чтобы результатом дать документ до маркирования.
Шаги 510, 520 и 530 могут быть выполнены итерационно, с заменой нескольких последовательностей. Там, где в сжатом документе с языком разметки присутствуют ссылки на непараметризированный макрос, ссылки на непараметризированный макрос также развертываются путем замены согласно определению макроса.
Система, включающая декодер, может использоваться, чтобы декодировать закодированный документ. Поскольку макрос должен быть применен, чтобы в результате дать документ с языковой разметкой в его запланированной форме, то можно говорить, что макрос управляет декодером.
Заключение
Уже отмечено, что предшествующие примеры обеспечены просто для целей разъяснения и никоим образом не должны быть рассмотрены как ограничение существующего изобретения. В то время как изобретение было описано со ссылкой на различные варианты воплощения, понятно, что слова, использованные здесь - это слова описания и иллюстрации, а не слова ограничения. Более того, хотя изобретение и было описано здесь со ссылкой на конкретные механизмы, детали и варианты воплощений, изобретение не предназначено быть ограниченным до частностей, раскрытых здесь; скорее изобретение простирается на все функционально эквивалентные структуры, способы и применения, такие как в объеме приложенной формулы изобретения. Специалисты в данной области техники, обладая преимуществом, полученным из этой спецификации, могут произвести многочисленные модификации к ней, и изменения могут быть сделаны без отступления от духа и объема изобретения в его аспектах.