stringtranslate.com

Включение

В этом примере данные файла B включаются в документ A.

В информатике включение это включение части или всего электронного документа в один или несколько других документов посредством ссылки через гипертекст . Включение обычно выполняется при отображении ссылочного документа и обычно является автоматическим и прозрачным для конечного пользователя. [1] Результатом трансклюзии является единый интегрированный документ, составленный из частей, динамически собранных из отдельных источников, возможно, хранящихся на разных компьютерах в разных местах.

Включение упрощает модульную конструкцию (с использованием модели « единого источника истины », будь то данные , код или контент ): ресурс сохраняется один раз и распространяется для повторного использования в нескольких документах. Обновления или исправления ресурса затем отражаются во всех ссылочных документах.

В системах, где включение недоступно, а также в некоторых ситуациях, когда оно доступно, но нежелательно, замена часто является дополнительным вариантом, при котором статическая копия «единого источника истины» интегрируется в соответствующий документ. Примерами того и другого служат способы их использования, например, при создании контента Википедии ( дополнительную информацию см. Википедия:Переключение и Википедия:Замена ). Замещенные статические копии требуют иного подхода к контролю версий , чем включение, но иногда они необходимы.

Тед Нельсон придумал этот термин для своей нелинейной книги «Литературные машины» 1980 года , но идея мастер-копии и явлений была применена 17 лет назад в Sketchpad .

Технические соображения

Контекстная нейтральность

Включение работает лучше, когда включенные разделы текста являются самостоятельными, так что значение и достоверность текста не зависят от контекста. Например, такие формулировки, как «как объяснено в предыдущем разделе», являются проблематичными, поскольку включенный раздел может появиться в другом контексте, вызывая путаницу. То, что представляет собой «контекстно-нейтральный» текст, может быть разным, но часто включает в себя такие вещи, как информация о компании или шаблон . Чтобы помочь преодолеть проблемы контекстной чувствительности, такие как вышеупомянутые, системы, способные к включению, часто также способны подавлять определенные элементы в включенном контенте. Например, Википедия может использовать для этой цели такие теги, как «noinclude», «onlyinclude» и «includeonly». Типичными примерами элементов, для которых часто требуются такие исключения, являются заголовки документов, сноски и перекрестные ссылки; таким образом, их можно автоматически подавлять при включении без ручной обработки для каждого экземпляра.

Параметризация

При некоторых обстоятельствах и в некоторых технических контекстах включенные разделы текста могут не требовать строгого соблюдения принципа «контекстной нейтральности», поскольку включенные разделы допускают параметризацию . Параметризация подразумевает возможность изменять определенные части или подразделы включенного текста в зависимости от экзогенных переменных, которые можно изменять независимо. Обычно это делается путем снабжения включенного текста одним или несколькими заполнителями замены . Эти заполнители затем заменяются соответствующими значениями переменных перед визуализацией окончательного включенного вывода в контексте.

Происхождение

Концепция повторного использования содержимого файла началась с языков компьютерного программирования: COBOL в 1960 году [2] , за которым последовали BCPL , PL/I , C , [3] и к 1990-м годам даже FORTRAN . [4] Директива include позволяет повторно использовать общий исходный код , избегая при этом ошибок программирования копирования и вставки и жесткого кодирования констант. Как и во многих нововведениях, возникла проблема. Несколько директив include могут предоставлять тот же контент, что и другая директива include, что непреднамеренно приводит к повторению одного и того же исходного кода в конечном результате, что приводит к ошибке . Охранники включения помогают решить эту проблему, после однократного включения контента исключая дублирующийся контент. [5]

Идея единого, многократно используемого источника информации привела к таким концепциям, как: « Не повторяйся» и принципу абстракции . Было найдено дальнейшее применение для того, чтобы сделать программы более переносимыми . Переносимый исходный код использует директиву include для указания стандартной библиотеки , которая содержит исходный код, специфичный для системы, который варьируется в зависимости от компьютерной среды. [6]

История и реализация Project Xanadu

Тед Нельсон, автор слов «гипертекст» и « гипермедиа », также ввел термин «трансклюзия» в своей книге «Литературные машины» 1980 года . Частью его предложения была идея, что микроплатежи можно будет автоматически взимать с читателя за весь текст, независимо от того, сколько фрагментов контента взято из разных мест.

Однако, по словам Нельсона, концепция включения уже стала частью его описания гипертекста в 1965 году . [7] Нельсон определяет трансклюзию как «...один и тот же контент, познаваемый более чем в одном месте», отделяя его от более частных случаев, таких как включение контента из другого места (которое он называет трансдоставкой ) или явная трансдоставка. цитата , которая остается связанной со своим источником (что он называет трансцитацией ).

Некоторые гипертекстовые системы, в том числе собственный проект Теда Нельсона Xanadu Project , поддерживают включение. [8]

Нельсон провел демонстрацию веб-включения, Little Transquoter (запрограммированный по спецификации Нельсона Эндрю Пэмом в 2004–2005 годах). [9] Он создает новый формат, основанный на адресах частей веб-страниц; при разыменовании каждая часть результирующей страницы остается связанной с исходным контекстом.

Реализация в Интернете

HTTP , как протокол передачи, имеет элементарную поддержку включения через обслуживание байтов : указание диапазона байтов в сообщении HTTP-запроса.

Включение может происходить либо до (на стороне сервера), либо после (на стороне клиента) передачи. Например:

Издатели веб-контента могут возражать против включения материалов со своих собственных веб-сайтов на другие веб-сайты или могут потребовать для этого согласия. Критики этой практики могут называть различные формы встроенных ссылок кражей полосы пропускания или хищением .

Другие издатели могут специально стремиться к включению своих материалов на другие веб-сайты, например, в форме веб-рекламы или в виде виджетов, таких как счетчик посещений или веб-жучок .

В гибридных приложениях включение используется для объединения ресурсов или данных в новое приложение, например, путем размещения фотографий с географическими тегами на интерактивной карте или путем отображения бизнес-показателей на интерактивной информационной панели .

Клиентский HTML

HTML определяет элементы для включения изображений , сценариев, таблиц стилей , других документов и других типов мультимедиа на стороне клиента . HTML в значительной степени полагался на включение на стороне клиента с самых первых дней существования Интернета (чтобы веб-страницы могли отображаться быстрее до завершения загрузки мультимедийных элементов), а не на встраивание необработанных данных для таких объектов в разметку веб-страницы.

С помощью таких методов, как Ajax , сценарии, связанные с HTML-документом, могут указать веб-браузеру изменить документ на месте, в отличие от более раннего метода, когда приходилось получать совершенно новую версию страницы с веб-сервера. Такие сценарии могут транслировать элементы или документы с сервера после того, как веб-браузер отобразил страницу, например, в ответ на ввод пользователя или изменение условий.

Будущие версии HTML могут поддерживать более глубокое включение частей документов с использованием технологий XML , таких как сущности , ссылки на документы XPointer и манипуляции XSLT .

Прокси-серверы могут использовать трансклюзию для уменьшения избыточной передачи часто запрашиваемых ресурсов.

Популярная интерфейсная платформа, известная как AngularJS, разработанная и поддерживаемая Google , имеет директиву callend ng-transclude, которая отмечает точку вставки для включенного DOM ближайшей родительской директивы, использующей включение.

Включение на стороне сервера

Включение может быть выполнено на стороне сервера, например, посредством включения на стороне сервера и ссылок на объекты разметки, разрешенных серверным программным обеспечением. Это особенность шаблонов подмены .

Включение исходного кода

Включение исходного кода в проект программного обеспечения или справочные материалы позволяет исходному коду быть представленным в документе, но не интерпретироваться как часть документа, сохраняя семантическую согласованность вставленного кода по отношению к его исходной кодовой базе.

Включение в управление контентом

В управлении контентом для публикации из одного источника первоклассные системы управления контентом все чаще предусматривают включение и замену. Системы управления контентом компонентов , в частности, стремятся довести принцип модульного дизайна до оптимальной степени. MediaWiki обеспечивает включение и замену и является хорошим готовым вариантом для многих небольших организаций (таких как небольшие некоммерческие организации и МСП ), у которых может не быть бюджета на другие коммерческие варианты; подробнее см. Система управления контентом компонентов .

Смотрите также

Рекомендации

  1. ^ Глушко, Роберт Дж. , изд. (2013). Организационная дисциплина . Кембридж, Массачусетс: MIT Press. п. 231. ИСБН 9780262518505.
  2. ^ Первоначальные спецификации ОБЩЕГО БИЗНЕС-ОРИЕНТИРОВАННОГО ЯЗЫКА (COBOL) для программирования электронных цифровых компьютеров (PDF) . Вашингтон: Министерство обороны. Апрель 1960 г. стр. V-27. ВКЛЮЧИТЬ: Функция: экономить усилия программиста за счет автоматического включения библиотечных подпрограмм в исходную программу.
  3. ^ Ричи, Деннис М. (1 марта 1993 г.). «Развитие языка Си». Уведомления ACM SIGPLAN . 28 (3): 201–208. дои : 10.1145/155360.155580. Архивировано из оригинала 27 февраля 2020 года. Многие другие изменения произошли примерно в 1972-1973 годах, но наиболее важным было введение препроцессора , частично по настоянию Алана Снайдера [Snyder 74], но также и в знак признания полезности препроцессора. [sic] механизмы включения файлов, доступные в BCPL и PL/I . Его первоначальная версия была чрезвычайно простой и содержала только включаемые файлы и простые замены строк : #include и #define для макросов без параметров. Вскоре после этого он был расширен, в основном Майком Леском , а затем Джоном Райзером, для включения макросов с аргументами и условной компиляции . Препроцессор изначально считался необязательным дополнением к самому языку.Альтернативный URL-адрес. Архивировано 4 февраля 2020 г. на Wayback Machine.
  4. ^ Адамс, Жанна С.; Брейнерд, Уолтер С.; Мартин, Жанна Т.; Смит, Брайан Т.; Вагенер, Джеррольд Л. (1992). Справочник по Fortran 90: Полный справочник по ANSI/ISO (PDF) . Нью-Йорк : Книжная компания McGraw-Hill. п. 65. ИСБН 0-07-000406-4. Строка INCLUDE — это новая функция Фортрана, которая позволяет включать исходный код из указанного файла. Это удобный способ разместить один и тот же текст в нескольких местах программы.[ неработающая ссылка ] Альтернативный URL
  5. ^ Столлман, Ричард М .; Вайнберг, Закари. «Файлы заголовков» (PDF) . Препроцессор C: для gcc версии 6.3.0 (GCC) . стр. 10–11. Альтернативы Wrapper #ifndef : CPP поддерживает еще два способа указать, что файл заголовка должен быть прочитан только один раз. Ни один из них не является столь переносимым, как оболочка #ifndef, и мы рекомендуем вам не использовать их в новых программах, с оговоркой, что #import является стандартной практикой в ​​Objective-C . [...] Другой способ предотвратить повторное включение заголовочного файла — это использовать директиву « #pragma Once ». Если при сканировании файла заголовка отображается «#pragma Once», этот файл больше никогда не будет прочитан, несмотря ни на что.
  6. ^ Джонсон, Южная Каролина ; Ричи, DM (июль – август 1978 г.). «Система разделения времени UNIX: переносимость программ C и системы UNIX». Технический журнал Bell System . 57 (6): 2021–2048. doi :10.1002/j.1538-7305.1978.tb02141.x. ISSN  0005-8580. S2CID  17510065 . Проверено 27 февраля 2020 г. Еще до появления машины Interdata , как упоминалось выше, было понятно, что многие программы в нежелательной степени зависят не только от соглашений ввода-вывода UNIX , но и от деталей особенно благоприятных стратегий буферизации для PDP-11 . Пакет подпрограмм, названный « переносной библиотекой ввода-вывода », был написан М. Е. Леском и реализован на машинах Honeywell и IBM, а также PDP-11 в целом успешной попытке преодолеть недостатки более ранних пакетов.
  7. ^ Теодор Х. Нельсон, «Файловая структура для сложного, изменяющегося и неопределенного». Материалы 20-й национальной конференции ACM (1965), стр. 84–100.
  8. ^ Кольбич, Йозеф; Маурер, Герман (27 января 2017 г.). «Включения в среде на основе HTML» (PDF) . Архивировано из оригинала (PDF) 1 июля 2017 года . Проверено 27 января 2017 г.
  9. ^ Маленький трансцитатор Xanadu.com.au
  10. ^ "УгловойJS". docs.angularjs.org . Проверено 11 августа 2016 г.

дальнейшее чтение

Внешние ссылки