Включение
![]() | Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( январь 2016 г. ) |

В информатике включение — это включение части или всего электронного документа в один или несколько других документов посредством ссылки через гипертекст . Включение обычно выполняется при отображении ссылочного документа и обычно является автоматическим и прозрачным для конечного пользователя. [1] Результатом включения является единый интегрированный документ, составленный из частей, динамически собранных из отдельных источников, возможно, хранящихся на разных компьютерах в разных местах.
Включение упрощает модульную конструкцию (с использованием модели « единого источника истины », будь то данные , код или контент ): ресурс сохраняется один раз и распространяется для повторного использования в нескольких документах. Обновления или исправления ресурса затем отражаются во всех ссылочных документах.
В системах, где включение недоступно, а также в некоторых ситуациях, когда оно доступно, но нежелательно, замена часто является дополнительным вариантом, при котором статическая копия «единого источника истины» интегрируется в соответствующий документ. Примерами того и другого служат способы их использования, например, при создании контента Википедии ( см. Arc.Ask3.Ru:Переключение и Arc.Ask3.Ru:Замена дополнительную информацию ). Замещенные статические копии требуют иного подхода к контролю версий , чем включение, но иногда они необходимы.
Тед Нельсон придумал этот термин для своей нелинейной книги «Литературные машины» 1980 года , но идея мастер-копии и явлений была применена 17 лет назад в Sketchpad . В настоящее время это распространенный метод, используемый авторами учебников, когда одну тему/предмет необходимо обсудить в нескольких главах. Преимущество этой системы в учебниках заключается в том, что она обеспечивает избыточность данных и сохраняет размер книги приемлемым.
Технические соображения [ править ]
нейтральность Контекстная
Включение работает лучше, когда включенные разделы текста являются самостоятельными, так что значение и достоверность текста не зависят от контекста. Например, такие формулировки, как «как объяснено в предыдущем разделе», являются проблематичными, поскольку включенный раздел может появиться в другом контексте, вызывая путаницу. То, что представляет собой «контекстно-нейтральный» текст, может быть разным, но часто включает в себя такие вещи, как информация о компании или шаблон . Чтобы помочь преодолеть проблемы контекстной чувствительности, такие как вышеупомянутые, системы, способные к включению, часто также способны подавлять определенные элементы в включенном контенте. Например, Arc.Ask3.Ru может использовать для этой цели такие теги, как « noinclude », «onlyinclude» и «includeonly». Типичными примерами элементов, для которых часто требуются такие исключения, являются заголовки документов, сноски и перекрестные ссылки; таким образом, их можно автоматически подавлять при включении без ручной обработки для каждого экземпляра.
Параметризация [ править ]
При некоторых обстоятельствах и в некоторых технических контекстах включенные разделы текста могут не требовать строгого соблюдения принципа «контекстной нейтральности», поскольку включенные разделы допускают параметризацию . Параметризация подразумевает возможность изменять определенные части или подразделы включенного текста в зависимости от экзогенных переменных, которые можно изменять независимо. Обычно это делается путем снабжения включенного текста одним или несколькими заполнителями замены . Эти заполнители затем заменяются соответствующими значениями переменных перед рендерингом окончательного включенного вывода в контексте.
Происхождение [ править ]
Концепция повторного использования содержимого файлов началась с языков программирования: COBOL в 1960 году. [2] за которым следуют BCPL , PL/I , C , [3] а к 1978 году даже FORTRAN . Директива include позволяет повторно использовать общий исходный код , избегая при этом ошибок программирования копирования и вставки и жесткого кодирования констант. Как и во многих нововведениях, возникла проблема. Несколько директив include могут предоставлять тот же контент, что и другая директива include, что непреднамеренно приводит к повторению одного и того же исходного кода в конечном результате, что приводит к ошибке . Охранники включения помогают решить эту проблему, после однократного включения контента исключая дублирующийся контент. [4]
Идея единого, многократно используемого источника информации привела к появлению таких концепций, как: « Не повторяйся» и принцип абстракции . Было найдено еще одно применение — сделать программы более портативными . Переносимый исходный код использует директиву include для указания стандартной библиотеки , которая содержит исходный код, специфичный для системы, который варьируется в зависимости от компьютерной среды. [5]
Project Xanadu реализация История и
Тед Нельсон, который придумал слова «гипертекст» и « гипермедиа », также ввел термин «трансклюзия» в своей книге «Литературные машины » 1980 года . Частью его предложения была идея о том, что микроплатежи можно будет автоматически взимать с читателя за весь текст, независимо от того, сколько фрагментов контента взято из разных мест.
Однако, по словам Нельсона, концепция включения уже стала частью его описания гипертекста в 1965 году . [6] Нельсон определяет трансклюзию как «...один и тот же контент, познаваемый более чем в одном месте», отделяя его от более особых случаев, таких как включение контента из другого места (что он называет трансдоставкой ) или явное цитирование , которое остается связано с его происхождением (которое он называет трансцитацией ).
Некоторые гипертекстовые системы, включая собственный проект Теда Нельсона Xanadu Project , поддерживают включение. [7]
Нельсон провел демонстрацию веб-включения, Little Transquoter (запрограммированный по спецификации Нельсона Эндрю Пэмом в 2004–2005 годах). [8] Он создает новый формат, основанный на адресах частей веб-страниц; при разыменовании каждая часть результирующей страницы остается связанной с исходным контекстом.
Реализация в сети [ править ]
HTTP , как протокол передачи, имеет элементарную поддержку включения через обслуживание байтов : указание диапазона байтов в сообщении HTTP-запроса.
Включение может происходить либо до (на стороне сервера), либо после (на стороне клиента) передачи. Например:
- HTML-документ может быть предварительно составлен сервером перед доставкой клиенту с помощью серверных включений или другого серверного приложения.
- Объекты XML или объекты HTML могут анализироваться клиентом, который затем запрашивает соответствующие ресурсы отдельно от основного документа.
- Веб-браузер может кэшировать элементы, используя свои собственные алгоритмы, которые могут работать без явных директив в разметке документа.
- AngularJS использует включение для работы с вложенными директивами. [9]
Издатели веб-контента могут возражать против включения материалов с их собственных веб-сайтов на другие веб-сайты или могут потребовать для этого согласия. Критики этой практики могут называть различные формы встроенных ссылок кражей полосы пропускания или хищением .
Другие издатели могут специально стремиться к включению своих материалов на другие веб-сайты, например, в форме веб-рекламы или в виде виджетов, таких как счетчик посещений или веб-жучок .
В гибридных приложениях включение используется для объединения ресурсов или данных в новое приложение, например, путем размещения фотографий с географическими тегами на интерактивной карте или путем отображения бизнес-показателей на интерактивной информационной панели .
Клиентский HTML [ править ]
HTML на стороне клиента определяет элементы для включения изображений , сценариев, таблиц стилей , других документов и других типов мультимедиа . HTML в значительной степени полагался на включение на стороне клиента с самых первых дней существования Интернета (чтобы веб-страницы могли отображаться быстрее до завершения загрузки мультимедийных элементов), а не на встраивание необработанных данных для таких объектов в разметку веб-страницы.
С помощью таких методов, как Ajax , сценарии, связанные с HTML-документом, могут указать веб-браузеру изменить документ на месте, в отличие от более раннего метода, когда приходилось получать совершенно новую версию страницы с веб-сервера. Такие сценарии могут транслировать элементы или документы с сервера после того, как веб-браузер отобразил страницу, например, в ответ на ввод пользователя или изменение условий.
Будущие версии HTML могут поддерживать более глубокое включение частей документов с использованием технологий XML , таких как сущности , ссылки на документы XPointer и манипуляции XSLT .
Прокси-серверы могут использовать трансклюзию для уменьшения избыточной передачи часто запрашиваемых ресурсов.
Популярная интерфейсная платформа, известная как AngularJS, разработанная и поддерживаемая Google, имеет директиву callend ng-transclude, которая отмечает точку вставки для включенного DOM ближайшей родительской директивы, использующей включение.
Включение на стороне сервера [ править ]
Включение может быть выполнено на стороне сервера, например, посредством включения на стороне сервера и ссылок на объекты разметки, разрешенных серверным программным обеспечением. Это особенность шаблонов подмены .
Включение исходного кода [ править ]
Включение исходного кода в проект программного обеспечения или справочные материалы позволяет исходному коду быть представленным в документе, но не интерпретироваться как часть документа, сохраняя семантическую согласованность вставленного кода по отношению к его базе исходного кода.
Включение в управление контентом [ править ]
В управлении контентом для публикации из одного источника первоклассные системы управления контентом все чаще предусматривают включение и замену. Системы управления контентом компонентов , в частности, стремятся довести принцип модульного дизайна до оптимальной степени. MediaWiki обеспечивает включение и замену и является хорошим готовым вариантом для многих небольших организаций (таких как небольшие некоммерческие организации и МСП ), у которых может не быть бюджета на другие коммерческие варианты; подробнее см. Система управления контентом компонентов .
Внедрение в разработку программного обеспечения [ править ]
Общей особенностью языков программирования является способность одного файла исходного кода полностью или частично включать другой файл исходного кода. Включенная часть интерпретируется так, как если бы она была частью включаемого файла. Некоторые из методов:
- Включить: некоторые программы явно ВКЛЮЧАЮТ другой файл. Включенный файл может состоять из исполняемого кода, объявлений, инструкций компилятора и/или переходов к более поздним частям документа, в зависимости от переменных времени компиляции.
- Макрос: языки ассемблера и некоторые языки программирования высокого уровня обычно предоставляют макросы, специальные именованные инструкции, используемые для определения, генерации исполняемого кода, обеспечения циклов и других решений, а также изменения документа, созданного в соответствии с параметрами, предоставленными макросу, когда файл рендерится.
- Копирование. В языке программирования Cobol есть команда COPY, при которой скопированный файл вставляется в копируемый документ, заменяя команду COPY. Код и объявления в скопированном файле можно изменить с помощью аргумента REPLACING как части команды копирования.
См. также [ править ]
- Составной документ – Формат электронного документа.
- Перекрестная ссылка – ссылка в одном месте книги на информацию в другом месте той же работы.
- Darwin Information Typing Architecture (DITA) — модель данных XML для тематического создания и публикации, а также повторного использования контента.
- Макрос (информатика) - Правило замены заданного входа заданным выходом.
- Связывание и внедрение объектов (OLE) — технология, разработанная Microsoft.
- Публикация и подписка (Mac OS) — модель связывания документов, представленная Apple Computer в System 7.
- Публикация из одного источника – метод публикации контента
- Подпрограмма — последовательность программных инструкций, вызываемых другим программным обеспечением.
- XInclude — стандарт XML для включения контента из других файлов.
Ссылки [ править ]
- ^ Глушко, Роберт Дж. , изд. (2013). Организационная дисциплина . Кембридж, Массачусетс: MIT Press. п. 231. ИСБН 9780262518505 .
- ^ Первоначальные спецификации ОБЩЕГО БИЗНЕС-ОРИЕНТИРОВАННОГО ЯЗЫКА (COBOL) для программирования электронных цифровых компьютеров (PDF) . Вашингтон: Министерство обороны. Апрель 1960 г. стр. V-27.
ВКЛЮЧИТЬ: Функция: экономить усилия программиста за счет автоматического включения библиотечных подпрограмм в исходную программу.
- ^ Ричи, Деннис М. (1 марта 1993 г.). «Развитие языка Си» . Уведомления ACM SIGPLAN . 28 (3): 201–208. дои : 10.1145/155360.155580 . Архивировано из оригинала 27 февраля 2020 года.
Многие другие изменения произошли примерно в 1972-3 годах, но наиболее важным было введение препроцессора , частично по настоянию Алана Снайдера [Snyder 74], но также и в знак признания полезности препроцессора. [sic] механизмы включения файлов, доступные в BCPL и PL/I . Его первоначальная версия была чрезвычайно простой и содержала только включаемые файлы и простые замены строк : #include и #define для макросов без параметров. Вскоре после этого он был расширен, в основном Майком Леском , а затем Джоном Райзером, для включения макросов с аргументами и условной компиляции . Препроцессор изначально считался необязательным дополнением к самому языку.
Альтернативный URL-адрес. Архивировано 4 февраля 2020 г. на Wayback Machine. - ^ Столлман, Ричард М .; Вайнберг, Закари. «Файлы заголовков» (PDF) . Препроцессор C: для gcc версии 6.3.0 (GCC) . стр. 10–11.
Альтернативы Wrapper #ifndef : CPP поддерживает еще два способа указать, что файл заголовка должен быть прочитан только один раз. Ни один из них не является столь переносимым, как оболочка #ifndef, и мы рекомендуем вам не использовать их в новых программах с оговоркой, что #import является стандартной практикой в Objective-C . [...] Другой способ предотвратить повторное включение заголовочного файла — это использовать директиву « #pragma Once ». Если при сканировании файла заголовка отображается «#pragma Once», этот файл больше никогда не будет прочитан, несмотря ни на что.
- ^ Джонсон, Южная Каролина ; Ричи, DM (июль – август 1978 г.). «Система разделения времени UNIX: переносимость программ на языке C и системы UNIX» . Технический журнал Bell System . 57 (6): 2021–2048. дои : 10.1002/j.1538-7305.1978.tb02141.x . ISSN 0005-8580 . S2CID 17510065 . Проверено 27 февраля 2020 г.
Еще до появления машины Interdata , как упоминалось выше, было понятно, что многие программы в нежелательной степени зависят не только от соглашений ввода-вывода UNIX , но и от деталей особенно благоприятных стратегий буферизации для PDP-11 . Пакет подпрограмм, названный « переносимой библиотекой ввода-вывода », был написан М. Е. Леском и реализован на машинах Honeywell и IBM, а также PDP-11 в целом успешной попытке преодолеть недостатки более ранних пакетов.
- ^ Теодор Х. Нельсон, «Файловая структура для сложного, изменяющегося и неопределенного». Материалы 20-й национальной конференции ACM (1965), стр. 84–100.
- ^ Колбич, Йозеф; Маурер, Герман (27 января 2017 г.). «Включения в среде на основе HTML» (PDF) . Архивировано из оригинала (PDF) 1 июля 2017 года . Проверено 27 января 2017 г.
- ^ Маленький трансцитатор Xanadu.com.au
- ^ «АнгулярДжС» . docs.angularjs.org . Проверено 11 августа 2016 г.
Дальнейшее чтение [ править ]
- Ди Иорио, А.; Виталий, Ф. (август 2003 г.). «Среда ксанологического совместного редактирования» (PDF) . Материалы второго международного семинара по анализу веб-документов 2003 г. (WDA2003) . Эдинбург, Великобритания.
- Колбич, Дж.; Маурер, Х. (июнь 2006 г.). «Включения в среде на основе HTML» . Журнал вычислительной техники и информационных технологий . 14 (2): 161–174. doi : 10.2498/cit.2006.02.07 .
- Колбич, Дж. (июнь 2005 г.). «Детализация мультимедийных документов в HTML» . Журнал универсальной информатики . 11 (6).
- Кроттмайер, Х. (2002). «Включенные документы: преимущества повторного использования фрагментов документов» (PDF) . Материалы 6-й Международной конференции ICCC/IFIP по электронным публикациям (ELPUB2002) . Чехия: Карловы Вары. стр. 359–367. Архивировано из оригинала (PDF) 17 мая 2005 г.
- Кроттмайер, Х.; Д., Гелик (2002). «Проблемы трансклюзий» (PDF) . Материалы Всемирной конференции по электронному обучению в корпоративном, государственном, здравоохранении и высшем образовании (E-Learn 2002) . Монреаль, Канада. стр. 1730–1733. Архивировано из оригинала (PDF) 20 июня 2015 г. Проверено 25 мая 2006 г.
- Кроттмайер, Х.; Маурер, Х. (июль 2001 г.). «Транклюзии в 21 веке» ( PDF , HTML , PostScript ) . Журнал универсальной информатики . 7 (12): 1125–1136. CiteSeerX 10.1.1.106.9923 .
- Мур, А.; и др. (2001). «Индивидуально подобранное обучение в WHURLE с использованием условной транслюции». Материалы двенадцатой конференции ACM по гипертексту и гипермедиа . Орхус, Дания. стр. 163–164.
- Нельсон, TH (1993) [1980]. Литературные машины . Внимательная пресса.
- Нельсон, TH (1995). «Сердце связи: гипермедиа, объединенная трансклюзией» . Коммуникации АКМ . 38 (8): 31–33. дои : 10.1145/208344.208353 . S2CID 16604206 .
- Нельсон, TH (1996). «Общие ссылки, микроплатежи и трансавторское право» . Альмаденский исследовательский центр . Архивировано из оригинала 5 декабря 2006 г. Проверено 27 сентября 2006 г.
- Нельсон, TH (1998). «Транскопирское право: предварительное разрешение на виртуальную повторную публикацию» .
- Нельсон, TH (1999). «Ксанологическая структура необходима сейчас больше, чем когда-либо: параллельные документы, глубокие ссылки на контент, глубокое управление версиями и глубокое повторное использование» . Обзоры вычислительной техники ACM . 31 (4с): 33–с. CiteSeerX 10.1.1.418.7740 . дои : 10.1145/345966.346033 . S2CID 12852736 .
- Пэм, А. (1997). «Детальная трансклюзия в языке гипертекстовой разметки» (Текст) . Интернет-проект .
- Уайльд, Э.; Лоу, Д. (2002). «Глава 7: Язык связывания XML» . XPath, XLink, XPointer и XML: практическое руководство по веб-гиперссылкам и трансклюзии . Аддисон-Уэсли Профессионал. стр. 169–198. ISBN 9780201703443 .
Внешние ссылки [ править ]

- Тед Нельсон: Включение: исправление электронной литературы — на Google Tech Talks, 29 января 2007 г.