Трансклюзия
Трансклюзия в информатике — включение одного электронного документа или его части в другие электронные документы посредством гипертекстовой ссылки. Трансклюзия обычно подразумевает отображение документа, на который делается ссылка. Документ (запись) отображается автоматически и доступен конечному пользователю. Кажется, что в результате трансклюзии образуется единый сложный документ, в то время как на самом деле его части были оперативно собраны из разных источников, которые могут храниться на разных удаленных друг от друга компьютерах.
С помощью трансклюзии реализуется модульность: ресурс можно собрать один раз, а затем повторно использовать во множестве документов. Тогда обновления и исправления, внесенные в ресурс, будут отображаться и во всех ссылающихся на него документах. Термин предложен Тедом Нельсоном в «нелинейной» книге 1980 года «Литературные машины» (книга составлена таким образом, что её части можно читать не по порядку).
Технические аспекты
Независимость от контекста
Создание документов с помощью трансклюзии приводит к лучшему результату, когда составные части текста автономны, так что их ценность и содержательность не зависят от контекста, в который они включены. Например, формулировка «как было описано выше» нежелательна, потому что с помощью трансклюзии любая часть текста может быть помещена в другой контекст и тогда она будет непонятна.
Содержание контекстно нейтральной записи может быть очень разным. Например, в ней может заключаться информация о компании или шаблон документа. Контекстно-нейтральная запись может также быть (аннотированным или озаглавленным) видео-, аудиофайлом, картинкой и т. п.
Параметризация
При определённых обстоятельствах и в некоторых контекстах, включение частей текста в другие документы посредством трансклюзии может не требовать строгого следования принципу «контекстной нейтральности». Под «параметризаций» записей (фрагментов текста) Тед Нельсон понимает возможность уточнять их содержимое при помощи формул с переменными, которые зависят от контекста. Обычно параметризация обеспечивается включением в запись одной или нескольких лакун (substitution placeholders), которые затем заполняются переменными значениями, прежде чем завершенная таким образом запись предстает читателю в контексте.
История
Тед Нельсон, также впервые предложивший понятия «гипертекст» и «гипермедиа», предложил термин «трансклюзия» (англ. transclusion) в книге 1980 года «Литературные машины». Частью предложенной им концепции было представление о том, что микроплатежи могут автоматически взиматься с читателя за весь текст вне зависимости от того, сколько фрагментов содержимого взято из разных источников. Соответственно, правообладатели будут получать доход за счёт включения принадлежащих им фрагментов в другие тексты.
Однако, как пишет Нельсон, концепция трансклюзии уже частично входила и в описание «гипертекста», сделанного им в 1965 году. Нельсон определяет трансклюзию как «одно и то же содержимое, доступное более чем в одном источнике»[1]. Он отличает трансклюзию от более частных случаев, таких, как включение содержимого, хранящего на разных носителеях (которое он называет «транс-передача» («transdelivery»)) или «очевидное цитирование, сохраняющее связь с оригиналом» (которое он называет «транс-цитирование» («transquotation»)).
Некоторые гипертекстные системы, в том числе — проект «Занаду» самого Теда Нельсона, — позволяют пользоваться трансклюзией. Нельсон создал демонстрацию Интернет-трансклюзии, Маленький Транс-цитатник (который Эндрю Пэм запрограммировал в 2004—2005 годах, следуя инструкциям Нельсона)[2]. Он представляет собой новый формат интернет-портала, построенный на обращении к частям других Интернет-страниц; каждый фрагмент на итоговой странице остается связанным с исходным контекстом.
Реализация в интернете
HTTP как протокол передачи частично поддерживает трансклюзию, допуская фрагментарное скачивание.
Трансклюзия может произойти как до (на стороне сервера), так и после передачи (на стороне клиента). Например:
- сервер может подготовить документ HTML для клиента заранее, используя Включения на стороне сервера или какой-либо схожий механизм со стороны сервера;
- при разборе сущностей XML или объектов HTML клиент отправляет отдельные от основного документа запросы на получение соответствующих ресурсов;
- веб-браузер может с помощью внутренних алгоритмов кэшировать некоторые элементы без явных указаний в разметке документа;
- AngularJS использует трансклюзию для работы вложенных директив.
Производители интернет-контента могут выдвинуть обвинения за трансклюзию материала с их сайтов на другие сайты, или же требовать запроса на их предварительное согласие. Критики трансклюзии обычно ссылаются на различные формы хотлинков[неизвестный термин] или личинга[неизвестный термин].
Другие владельцы сайтов, наоборот, могут специально добиваться включения своего материала в другие сайты посредством трансклюзии, не только в форме интернет-рекламы, но и в виде различных устройств, как, например, счетчик посещений.
Приложения типа мэшап[неизвестный термин] могут использовать трансклюзию для сбора ресурсов или информации в новом приложении, вставляя фотографии с определённой геопозицией в интерактивную карту или показывая бизнес-показатели в панели индикаторов.
HTML на клиенте
HTML определяет элементы для трансклюзии со стороны клиента: изображений, скриптов, стилей, других документов и других типов медиа. С момента своего появления HTML использует трансклюзию на клиенте, вместо внедрения содержимого объектов в разметку интернет-страницы. Это, в свою очередь, позволяет пользователю просматривать интернет-страницу раньше, чем загрузятся все элементы.
Используя Ajax, скрипт, прилагающийся к HTML-документу, может попросить браузер изменить часть документа. Раньше же требовалось загружать с сервера новую версию страницы целиком. Такие скрипты могут вставлять элементы или документы с сервера с помощью трансклюзии уже после того, как браузер отобразил страницу, например, по запросу пользователя или реагируя на внешние изменения.
Будущие версии HTML, может быть, будут поддерживать трансклюзию частей документов, используя технологии XML (SGML entity), адресацию документов XPointer и XSLT-обращения. (XPointer является запатентованной технологией[3]).
Интересный пример использования трансклюзии можно найти в одностраничном приложении TiddlyWiki[4].
Прокси-серверы могут использовать трансклюзию для того, чтобы уменьшить избыточную пересылку часто запрашиваемых ресурсов. AngularJS поддерживает директиву «ng-transclude», для обозначения точки включения DOM-дерева в ближайшую родительскую директиву, которая использует трансклюзию.
Трансклюзия на уровне пользователя
Есть продукты, которые являются показательными примерами использования элементов трансклюзии инструментами пользователя (без программирования). Некоторые вики-системы, такие как MediaWiki (технология, лежащая в основе Википедии) и TWiki, позволяют пользователю напрямую включать отдельные документы в другие документы посредством ссылки. Другие решения, такие как Author-It, позволяют создавать вложимые фрагменты («компоненты»). Изменение копии компонента в одном месте изменяет все её экземпляры в других местах[5].
В то время, как социальные сети, форумы и другие медиа-сервисы позволяют хранить и скачивать копии изображений, некоторые сервисы позволяют использовать изображения только с внешнего хостинга, поддерживая таким образом трансклюзию изображений. Типичным сценарием внедрения роликов Youtube и других видео-хранилищ в веб-страницы является трансклюзия, в противоположность хранению копий на сервере.
Реализация в вики-проектах
Трансклюзия на сервере
Трансклюзия может выполняться на сервере посредством SSI или ссылок на SGML-сущности, разрешаемые ПО сервера. Трансклюзия также может выполняться шаблонизатором.
Трансклюзия исходного кода
Трансклюзия исходного кода в проектную или справочную документацию позволяет представлять исходный код в документе. Исходный код тогда не будет считаться частью документа и сохранит смысловую последовательность внутреннего кода, в отличие от основания кода его источника.
См. такжe
- Составной документ[уточнить]
- Darwin Information Typing Architecture (DITA)[уточнить]
- Макрокоманда[уточнить]
- Object Linking and Embedding (OLE)[уточнить]
- Издатель-подписчик[уточнить]
Примечания
- ↑ Theodor H. Nelson, «A File Structure for the Complex, the Changing and the Indeterminate.» Proceedings of the ACM 20th National Conference (1965), pp. 84-100
- ↑ The Little Transquoter Xanadu.com.au
- ↑ XPointer Patent Statements
- ↑ TiddlyWiki — a non-linear personal web notebook
- ↑ «A Modern Approach to the World’s Content Problem» http://connect.author-it.com/why-components Архивная копия от 14 сентября 2016 на Wayback Machine
Литература
- A. Di Iorio. A Xanalogical Collaborative Editing Environment // Proceedings of the Second International Workshop of Web Document Analysis 2003 (WDA2003). — Edinburgh, UK.
- Kolbitsch, J.; Maurer, H. Transclusions in an HTML-Based Environment (неопр.) // Journal of Computing and Information Technology. — 2006. — June (т. 14, № 2). — С. 161—174. — doi:10.2498/cit.2006.02.07. Архивировано 6 июня 2007 года.
- Kolbitsch, J. Fine-Grained Transclusions of Multimedia Documents in HTML (англ.) // Journal of Universal Computer Science[англ.] : journal. — 2005. — June (vol. 11, no. 6).
- H. Krottmaier. Transcluded Documents: Advantages of Reusing Document Fragments // Proceedings of the 6th International ICCC/IFIP Conference on Electronic Publishing (ELPUB2002). — Czech Republic: Karlovy Vary, 2002. — P. 359–367.
Архивная копия от 17 мая 2005 на Wayback Machine
- H. Krottmaier. Issues of Transclusions // Proceedings of the World Conference on E-Learning in Corporate, Government, Healthcare, & Higher Education (E-Learn 2002). — Montreal, Canada, 2002. — P. 1730–1733.
Архивная копия от 20 июня 2015 на Wayback Machine
- Krottmaier, H.; Maurer, H. Transclusions in the 21st Century (англ.) // Journal of Universal Computer Science[англ.] : journal. — 2001. — July (vol. 7, no. 12). — P. 1125—1136.
- A. Moore. Personally tailored teaching in WHURLE using conditional translucion // Proceedings of the Twelfth ACM Conference on Hypertext and Hypermedia. — Aarhus, Danmark, 2001. — P. 163–164.
- Nelson, T. H. Literary Machines (неопр.). — Mindful Press, 1993.
- Nelson, T. H. The Heart of Connection: Hypermedia Unified by Transclusion (англ.) // Communications of the ACM : journal. — 1995. — Vol. 38, no. 8. — P. 31—33. — doi:10.1145/208344.208353.
- Nelson, T. H. Generalized Links, Micropayment and Transcopyright . Almaden Research Center (1996).
- Nelson, T. H. Transcopyright: Pre-Permission for Virtual Republishing (1998).
- Nelson, T. H. Xanalogical Structure, Needed Now More than Ever: Parallel Documents, Deep Links to Content, Deep Versioning and Deep Re-Use (англ.) // ACM Computing Surveys[англ.] : journal. — 1999. — Vol. 31, no. 4es. — P. 33. — doi:10.1145/345966.346033.
- Pam, A. Fine-Grained Transclusion in the Hypertext Markup Language (Text). Internet Draft (1997).
- Wilde, E.; Lowe, D. Chapter 7: XML Linking Language // XPath, XLink, XPointer, and XML: A Practical Guide to Web Hyperlinking and Transclusion (англ.). — Addison-Wesley Professional, 2002. — P. 169—198.
- Kochuguev, Sergey et al. Datagrav: A Framework for Knowledge Sharing Using Transclusion Enabled Collaboration Media (2016).