Jump to content

Включение

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

В информатике включение это включение части или всего электронного документа в один или несколько других документов посредством ссылки через гипертекст . Включение обычно выполняется при отображении ссылочного документа и обычно является автоматическим и прозрачным для конечного пользователя. [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 как части команды копирования.

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

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

  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-3 годах, но наиболее важным было введение препроцессора , частично по настоянию Алана Снайдера [Snyder 74], но также и в знак признания полезности препроцессора. [sic] механизмы включения файлов, доступные в BCPL и PL/I . Его первоначальная версия была чрезвычайно простой и содержала только включаемые файлы и простые замены строк : #include и #define для макросов без параметров. Вскоре после этого он был расширен, в основном Майком Леском , а затем Джоном Райзером, для включения макросов с аргументами и условной компиляции . Препроцессор изначально считался необязательным дополнением к самому языку. Альтернативный URL-адрес. Архивировано 4 февраля 2020 г. на Wayback Machine.
  4. ^ Столлман, Ричард М .; Вайнберг, Закари. «Файлы заголовков» (PDF) . Препроцессор C: для gcc версии 6.3.0 (GCC) . стр. 10–11. Альтернативы Wrapper #ifndef : CPP поддерживает еще два способа указать, что файл заголовка должен быть прочитан только один раз. Ни один из них не является столь переносимым, как оболочка #ifndef, и мы рекомендуем вам не использовать их в новых программах с оговоркой, что #import является стандартной практикой в ​​Objective-C . [...] Другой способ предотвратить повторное включение заголовочного файла — это использовать директиву « #pragma Once ». Если при сканировании файла заголовка отображается «#pragma Once», этот файл больше никогда не будет прочитан, несмотря ни на что.
  5. ^ Джонсон, Южная Каролина ; Ричи, 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 в целом успешной попытке преодолеть недостатки более ранних пакетов.
  6. ^ Теодор Х. Нельсон, «Файловая структура для сложного, изменяющегося и неопределенного». Материалы 20-й национальной конференции ACM (1965), стр. 84–100.
  7. ^ Колбич, Йозеф; Маурер, Герман (27 января 2017 г.). «Включения в среде на основе HTML» (PDF) . Архивировано из оригинала (PDF) 1 июля 2017 года . Проверено 27 января 2017 г.
  8. ^ Маленький трансцитатор Xanadu.com.au
  9. ^ «АнгулярДжС» . docs.angularjs.org . Проверено 11 августа 2016 г.

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

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

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ea59447226a18225e5482670ccc03adb__1717849860
URL1:https://arc.ask3.ru/arc/aa/ea/db/ea59447226a18225e5482670ccc03adb.html
Заголовок, (Title) документа по адресу, URL1:
Transclusion - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)