stringtranslate.com

Transclusión

En este ejemplo, los datos del archivo B se transcluyen en el documento A.

En informática , la transclusión es la inclusión de parte o la totalidad de un documento electrónico en uno o más documentos mediante referencia a través de hipertexto . La transclusión generalmente se realiza cuando se muestra el documento de referencia y normalmente es automática y transparente para el usuario final. [1] El resultado de la transclusión es un único documento integrado hecho de partes ensambladas dinámicamente a partir de fuentes separadas, posiblemente almacenadas en diferentes computadoras en lugares dispares.

La transclusión facilita el diseño modular (utilizando el modelo de " fuente única de verdad ", ya sea en datos , código o contenido ): un recurso se almacena una vez y se distribuye para su reutilización en múltiples documentos. Las actualizaciones o correcciones de un recurso se reflejan en cualquier documento de referencia .

En sistemas donde la transclusión no está disponible, y en algunas situaciones donde está disponible pero no es deseable, la sustitución es a menudo la opción complementaria, mediante la cual se integra una copia estática de la "única fuente de verdad" en el documento relevante. Se proporcionan ejemplos de ambos por las formas en que se utilizan en la creación del contenido de Wikipedia, por ejemplo (consulte Wikipedia:Transclusión y Wikipedia:Sustitución para obtener más información). Las copias estáticas sustituidas introducen un conjunto diferente de consideraciones para el control de versiones que la transclusión, pero a veces son necesarias.

Ted Nelson acuñó el término para su libro no lineal Literary Machines de 1980 , pero la idea de copia maestra y ocurrencias se aplicó 17 años antes, en Sketchpad .

Consideraciones técnicas

Neutralidad del contexto

La transclusión funciona mejor cuando las secciones transcluidas del texto son independientes, de modo que el significado y la validez del texto son independientes del contexto. Por ejemplo, formulaciones como "como se explicó en la sección anterior" son problemáticas porque la sección transcluida puede aparecer en un contexto diferente, causando confusión. Lo que constituye un texto "neutral al contexto" varía, pero a menudo incluye cosas como información de la empresa o texto estándar . Para ayudar a superar problemas de sensibilidad al contexto como los mencionados anteriormente, los sistemas capaces de transclusión a menudo también son capaces de suprimir elementos particulares dentro del contenido transcluido. Por ejemplo, Wikipedia puede utilizar etiquetas como "noinclude", "onlyinclude" e "includeonly" para este fin. Ejemplos típicos de elementos que a menudo requieren tales excepciones son los títulos de los documentos, las notas a pie de página y las referencias cruzadas; de esta manera, se pueden suprimir automáticamente tras la transclusión, sin necesidad de volver a trabajar manualmente en cada caso.

Parametrización

En algunas circunstancias, y en algunos contextos técnicos, es posible que las secciones transcluidas de texto no requieran un estricto cumplimiento del principio de "neutralidad del contexto", porque las secciones transcluidas son susceptibles de parametrización . La parametrización implica la capacidad de modificar ciertas porciones o subsecciones de un texto transcluido dependiendo de variables exógenas que se pueden cambiar de forma independiente. Esto se suele hacer proporcionando un texto transcluido con uno o más marcadores de posición de sustitución . Estos marcadores de posición luego se reemplazan con los valores de las variables correspondientes antes de representar el resultado final transcluido en contexto.

Orígenes

El concepto de reutilización del contenido de archivos comenzó con los lenguajes de programación de computadoras: COBOL en 1960, [2] seguido de BCPL , PL/I , C , [3] y en la década de 1990, incluso FORTRAN . [4] Una directiva de inclusión permite reutilizar el código fuente común evitando al mismo tiempo los peligros de la programación de copiar y pegar y la codificación rígida de constantes. Como ocurre con muchas innovaciones, surgió un problema. Varias directivas de inclusión pueden proporcionar el mismo contenido que otra directiva de inclusión, lo que provoca inadvertidamente repeticiones del mismo código fuente en el resultado final, lo que genera un error . Incluir guardias ayuda a resolver este problema al, después de una única inclusión de contenido, omitir el contenido duplicado. [5]

La idea de una fuente de información única y reutilizable conduce a conceptos como: No te repitas y el principio de abstracción . Se encontró un uso adicional para hacer que los programas sean más portátiles . El código fuente portátil utiliza una directiva de inclusión para especificar una biblioteca estándar , que contiene código fuente específico del sistema que varía según cada entorno informático. [6]

Historia e implementación del Proyecto Xanadú

Ted Nelson, quien originó las palabras "hipertexto" e " hipermedia ", también acuñó el término "transclusión" en su libro Literary Machines de 1980 . Parte de su propuesta era la idea de que se pudieran exigir micropagos automáticamente al lector por todo el texto, sin importar cuántos fragmentos de contenido se tomaran de varios lugares.

Sin embargo, según Nelson, el concepto de transclusión ya había formado parte de su descripción del hipertexto de 1965 . [7] Nelson define la transclusión como "... el mismo contenido que se puede conocer en más de un lugar", diferenciándolo de casos más especiales, como la inclusión de contenido de una ubicación diferente (que él llama transdelivery ) o una transferencia explícita. cita que permanece conectada a sus orígenes (lo que él llama transcitación ).

Algunos sistemas de hipertexto, incluido el Proyecto Xanadu de Ted Nelson , admiten la transclusión. [8]

Nelson ha realizado una demostración de transclusión web, el Little Transquoter (programado según las especificaciones de Nelson por Andrew Pam en 2004-2005). [9] Crea un nuevo formato basado en direcciones parciales de páginas web; cuando se elimina la referencia, cada parte de la página resultante permanece conectada mediante un clic a su contexto original.

Implementación en la Web

HTTP , como protocolo de transmisión, tiene soporte rudimentario para la transclusión mediante servicio de bytes : especificar un rango de bytes en un mensaje de solicitud HTTP.

La transclusión puede ocurrir antes (del lado del servidor) o después (del lado del cliente) de la transmisión. Por ejemplo:

Los editores de contenido web pueden oponerse a la transclusión de material de sus propios sitios web a otros sitios web, o pueden requerir un acuerdo para hacerlo. Los críticos de esta práctica pueden referirse a varias formas de enlaces en línea como robo o absorción de ancho de banda .

Otros editores pueden buscar específicamente que sus materiales se transcluyan a otros sitios web, como en forma de publicidad web o como widgets como un contador de visitas o un error web .

Los mashups utilizan la transclusión para reunir recursos o datos en una nueva aplicación, como colocar fotos geoetiquetadas en un mapa interactivo o mostrar métricas comerciales en un panel interactivo .

HTML del lado del cliente

HTML define elementos para la transclusión de imágenes , scripts, hojas de estilo , otros documentos y otros tipos de medios del lado del cliente . HTML ha dependido en gran medida de la transclusión del lado del cliente desde los primeros días de la Web (para que las páginas web pudieran mostrarse más rápidamente antes de que los elementos multimedia terminaran de cargarse), en lugar de incrustar los datos sin procesar de dichos objetos en línea en el marcado de una página web.

A través de técnicas como Ajax , los scripts asociados con un documento HTML pueden indicarle a un navegador web que modifique el documento en el lugar, a diferencia de la técnica anterior de tener que extraer una versión completamente nueva de la página del servidor web. Dichos scripts pueden transcluir elementos o documentos de un servidor después de que el navegador web haya mostrado la página, en respuesta a la entrada del usuario o a condiciones cambiantes, por ejemplo.

Las versiones futuras de HTML pueden admitir una transclusión más profunda de partes de documentos utilizando tecnologías XML como entidades , referencias de documentos XPointer y manipulaciones XSLT .

Los servidores proxy pueden emplear transclusión para reducir las transmisiones redundantes de recursos comúnmente solicitados.

Un popular marco frontal conocido como AngularJS desarrollado y mantenido por Google tiene una directiva llamada ng-transclude que marca el punto de inserción para el DOM transcluido de la directiva principal más cercana que utiliza transclusión.

Transclusión del lado del servidor

La transclusión se puede lograr en el lado del servidor, a través de las inclusiones del lado del servidor y las referencias de entidades de marcado resueltas por el software del servidor. Es una característica de las plantillas de sustitución .

Transclusión del código fuente

La transclusión del código fuente en el diseño de software o materiales de referencia permite que el código fuente se presente dentro del documento, pero no se interprete como parte del documento, preservando la coherencia semántica del código insertado en relación con su código fuente base.

Transclusión en la gestión de contenidos

En la gestión de contenidos para la publicación de una sola fuente , los sistemas de gestión de contenidos de primera clase prevén cada vez más la transclusión y la sustitución. Los sistemas de gestión de contenido de componentes , especialmente, tienen como objetivo llevar el principio de diseño modular a su grado óptimo. MediaWiki proporciona transclusión y sustitución y es una buena opción disponible para muchas organizaciones más pequeñas (como pequeñas organizaciones sin fines de lucro y PYME ) que pueden no tener presupuesto para otras opciones comerciales; Para obtener más información, consulte Sistema de gestión de contenido de componentes .

Ver también

Referencias

  1. ^ Glushko, Robert J. , ed. (2013). La disciplina de organizar . Cambridge, Massachusetts: MIT Press. pag. 231.ISBN _ 9780262518505.
  2. ^ Especificaciones iniciales para un LENGUAJE COMÚN ORIENTADO A NEGOCIOS (COBOL) para la programación de computadoras digitales electrónicas (PDF) . Washington: Departamento de Defensa. Abril de 1960. págs. V-27. INCLUIR: Función: Ahorrar esfuerzo al programador incorporando automáticamente subrutinas de biblioteca en el programa fuente.
  3. ^ Ritchie, Dennis M. (1 de marzo de 1993). "El desarrollo del lenguaje C". Avisos ACM SIGPLAN . 28 (3): 201–208. doi :10.1145/155360.155580. Archivado desde el original el 27 de febrero de 2020. Se produjeron muchos otros cambios alrededor de 1972-3, pero el más importante fue la introducción del preprocesador , en parte a instancias de Alan Snyder [Snyder 74], pero también en reconocimiento de la utilidad del los mecanismos de inclusión de archivos disponibles en BCPL y PL/I . Su versión original era extremadamente simple y solo proporcionaba archivos incluidos y reemplazos de cadenas simples : #include y #define de macros sin parámetros. Poco después, fue ampliado, principalmente por Mike Lesk y luego por John Reiser, para incorporar macros con argumentos y compilación condicional . Originalmente, el preprocesador se consideraba un complemento opcional del propio lenguaje.URL alternativa Archivado el 4 de febrero de 2020 en Wayback Machine.
  4. ^ Adams, Jeanne C.; Brainerd, Walter S.; Martín, Jeanne T.; Smith, Brian T.; Wagener, Jerrold L. (1992). Manual de Fortran 90: referencia completa de ANSI / ISO (PDF) . Ciudad de Nueva York : McGraw-Hill Book Company. pag. 65.ISBN _ 0-07-000406-4. La línea INCLUDE es una nueva característica de Fortran que permite la inclusión de código fuente de un archivo específico. Es una forma cómoda de colocar el mismo texto en varios lugares de un programa.[ enlace muerto ] URL alternativa
  5. ^ Stallman, Richard M .; Weinberg, Zachary. "Archivos de encabezado" (PDF) . El preprocesador C: para gcc versión 6.3.0 (GCC) . págs. 10-11. Alternativas al Wrapper #ifndef: CPP admite dos formas más de indicar que un archivo de encabezado debe leerse solo una vez. Ninguno de ellos es tan portátil como el contenedor '#ifndef' y recomendamos no usarlos en programas nuevos, con la salvedad de que '#import' es una práctica estándar en Objective-C . [...] Otra forma de evitar que un archivo de encabezado se incluya más de una vez es con la directiva ' #pragma once '. Si se ve '#pragma once' al escanear un archivo de encabezado, ese archivo nunca se volverá a leer, pase lo que pase.
  6. ^ Johnson, Carolina del Sur ; Ritchie, DM (julio-agosto de 1978). "Sistema de tiempo compartido UNIX: Portabilidad de programas C y el sistema UNIX". La revista técnica de Bell System . 57 (6): 2021-2048. doi :10.1002/j.1538-7305.1978.tb02141.x. ISSN  0005-8580. S2CID  17510065 . Consultado el 27 de febrero de 2020 . Incluso antes de la llegada de la máquina Interdata , se comprendió, como se mencionó anteriormente, que muchos programas dependían en un grado indeseable no sólo de las convenciones de E/S de UNIX sino también de detalles de estrategias de almacenamiento en búfer particularmente favorables para el PDP-11 . ME Lesk escribió un paquete de rutinas, llamado " biblioteca de E/S portátil ", que se implementó en las máquinas Honeywell e IBM, así como en el PDP-11, en un esfuerzo generalmente exitoso para superar las deficiencias de paquetes anteriores.
  7. ^ Theodor H. Nelson, "Una estructura de archivos para lo complejo, lo cambiante y lo indeterminado". Actas de la 20ª Conferencia Nacional de la ACM (1965), págs. 84-100
  8. ^ Kolbitsch, Josef; Maurer, Hermann (27 de enero de 2017). "Transclusiones en un entorno basado en HTML" (PDF) . Archivado desde el original (PDF) el 1 de julio de 2017 . Consultado el 27 de enero de 2017 .
  9. ^ El pequeño transquoter Xanadu.com.au
  10. ^ "AngularJS". docs.angularjs.org . Consultado el 11 de agosto de 2016 .

Otras lecturas

enlaces externos