Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
В этом примере данные файла B является в включены через документ A .

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

Включение упрощает модульную конструкцию : ресурс сохраняется один раз и распространяется для повторного использования в нескольких документах. Затем обновления или исправления ресурса отражаются во всех ссылочных документах. Тед Нельсон ввел термин для своей нелинейной книги 1980 года « Литературные машины» , но идея мастер-копии и вхождений была применена 17 лет назад в Sketchpad .

Технические соображения [ править ]

Контекстная нейтральность [ править ]

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

Параметризация [ править ]

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

Истоки [ править ]

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

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

История и реализация Project Xanadu [ править ]

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

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

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

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

Реализация в Интернете [ править ]

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

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

  • HTML-документ может быть предварительно составлен сервером перед доставкой клиенту с использованием серверных включений или другого серверного приложения.
  • XML-сущности или HTML-объекты могут анализироваться клиентом, который затем запрашивает соответствующие ресурсы отдельно от основного документа.
  • Веб-браузер может кэшировать элементы, используя свои собственные алгоритмы, которые могут работать без явных указаний в разметке документа.
  • AngularJS использует включение для операции вложенных директив. [10]

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

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

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

Клиентский HTML [ править ]

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

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

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

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

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

Включение на стороне сервера [ править ]

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

Включение исходного кода [ править ]

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

См. Также [ править ]

  • Составной документ
  • Перекрестная ссылка
  • Дарвиновская архитектура типизации информации (DITA) и повторное использование контента
  • Макро (информатика)
  • Связывание и внедрение объектов (OLE)
  • Публикация и подписка (Mac OS)
  • Публикация из одного источника
  • Подпрограмма
  • Включить директиву

Ссылки [ править ]

  1. ^ Глушко, Роберт Дж. , Изд. (2013). Дисциплина организации . Кембридж, Массачусетс: MIT Press. п. 231. ISBN. 9780262518505.
  2. ^ Начальные спецификации для ОБЩЕСТВЕННОГО БИЗНЕС-ОРИЕНТИРОВАННОГО ЯЗЫКА (COBOL) для программирования электронных цифровых компьютеров (PDF) . Вашингтон: Министерство обороны. Апрель 1960. С. V-27. INCLUDE: Функция: для экономии усилий программиста за счет автоматического включения библиотечных подпрограмм в исходную программу.
  3. ^ Ричи, Деннис М. (1993-03-01). «Развитие языка Си» . Уведомления ACM SIGPLAN . 28 (3): 201–208. DOI : 10.1145 / 155360.155580 . Архивировано из оригинального 27 февраля 2020. Многие другие изменения произошли вокруг 1972-3, но самым важным было введение препроцессора , отчасти по настоянию Алана Снайдера [Snyder 74], но и в знак признания полезности в [так] механизмы включения файлов , доступных в BCPL и PL / I . Его исходная версия была чрезвычайно простой и предусматривала только включенные файлы и простую замену строк.: #include и #define макросов без параметров. Вскоре после этого он был расширен, в основном Майком Леском, а затем Джоном Рейзером, для включения макросов с аргументами и условной компиляции . Изначально препроцессор считался необязательным дополнением к самому языку. Альтернативный URL
  4. ^ Адамс, Жанна С .; Брейнерд, Уолтер С .; Мартин, Жанна Т .; Смит, Брайан Т .; Вагенер, Джеррольд Л. (1992). Справочник Fortran 90: Полный справочник ANSI / ISO (PDF) . Нью-Йорк : Книжная компания Макгроу-Хилл. п. 65. ISBN  0-07-000406-4. Строка INCLUDE - это новая функция в Fortran, которая позволяет включать исходный код из указанного файла. Это удобный способ разместить один и тот же текст в нескольких местах программы.[ мертвая ссылка ] Альтернативный 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 . Пакет подпрограмм, называемый « переносимой библиотекой ввода-вывода », был написан ME Lesk и реализован на машинах 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. ^ "AngularJS" . docs.angularjs.org . Проверено 11 августа 2016 .
  11. ^ "Заявления о патентах XPointer" . Консорциум World Wide Web .

Дальнейшее чтение [ править ]

  • Ди Иорио, А .; Виталий, Ф. (август 2003 г.). «Xanalogical Collaborative Editing Environment» (PDF) . Труды Второго международного семинара по анализу веб-документов 2003 г. (WDA2003) . Эдинбург, Великобритания.
  • Kolbitsch, J .; Маурер, Х. (июнь 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 года.
  • Krottmaier, H .; Д., Гелик (2002). «Проблемы включения» (PDF) . Труды Всемирной конференции по электронному обучению в корпоративном, государственном, здравоохранении и высшем образовании (E-Learn 2002) . Монреаль, Канада. С. 1730–1733. Архивировано из оригинального (PDF) 20 июня 2015 года . Проверено 25 мая 2006 .
  • Krottmaier, H .; Маурер, Х. (июль 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). «Сердце связи: гипермедиа, объединенная включением». Коммуникации ACM . 38 (8): 31–33. DOI : 10.1145 / 208344.208353 . S2CID  16604206 .
  • Нельсон, TH (1996). «Общие ссылки, микроплатежи и транскрипция» . Исследовательский центр Альмадена .
  • Нельсон, TH (1998). «Transcopyright: предварительное разрешение на виртуальное переиздание» .
  • Нельсон, TH (1999). «Ксаналогическая структура, которая сейчас нужна больше, чем когда-либо: параллельные документы, глубокие ссылки на контент, глубокое управление версиями и глубокое повторное использование» . ACM Computing Surveys . 31 (4es): 33 – es. CiteSeerX  10.1.1.418.7740 . DOI : 10.1145 / 345966.346033 . S2CID  12852736 .
  • Пэм, А. (1997). «Тонкое включение в язык гипертекстовой разметки» (текст) . Интернет-проект .
  • Wilde, E .; Лоу, Д. (2002). «Глава 7: Язык связывания XML» . XPath, XLink, XPointer и XML: Практическое руководство по гиперссылкам и переходам в Интернете . Эддисон-Уэсли Профессионал. С. 169–198. ISBN 9780201703443.

Внешние ссылки [ править ]

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