Transclusión

Incluir un conjunto de datos dentro de otro automáticamente
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 se realiza normalmente 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 formado por 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 sola vez y se distribuye para su reutilización en múltiples documentos. Las actualizaciones o correcciones de un recurso se reflejan luego en cualquier documento de referencia .

En los sistemas en los que no se puede realizar la transclusión, y en algunas situaciones en las que sí se puede pero no es deseable, la sustitución suele ser la opción complementaria, por la que se integra una copia estática de la "única fuente de verdad" en el documento pertinente. Se ofrecen ejemplos de ambas opciones en las formas en que se utilizan para crear el contenido de Wikipedia (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 . Actualmente es una técnica común empleada por los escritores de libros de texto, donde un solo tema/asunto necesita ser discutido en múltiples capítulos. Una ventaja de este sistema en los libros de texto es que ayuda a la redundancia de datos y mantiene el libro en un tamaño manejable.

Consideraciones técnicas

Neutralidad del contexto

La transclusión funciona mejor cuando las secciones de texto transcluidas son autónomas, 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, lo que causa 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 repetitivo . Para ayudar a superar los problemas de sensibilidad al contexto como los mencionados anteriormente, los sistemas capaces de transcluir a menudo también son capaces de suprimir elementos particulares dentro del contenido transcluido. Por ejemplo, Wikipedia puede usar etiquetas como " noinclude ", "onlyinclude" e "includeonly" para este propósito. Ejemplos típicos de elementos que a menudo requieren tales excepciones son los títulos de documentos, las notas al pie y las referencias cruzadas; de esta manera, se pueden suprimir automáticamente tras la transclusión, sin tener que volver a trabajar manualmente para cada caso.

Parametrización

En algunas circunstancias y en algunos contextos técnicos, las secciones de texto transcluidas pueden no requerir una estricta adherencia al principio de "neutralidad de 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 pueden cambiarse de forma independiente. Esto se hace habitualmente proporcionando a un texto transcluido uno o más marcadores de posición de sustitución . Estos marcadores de posición se reemplazan luego con los valores de variable correspondientes antes de presentar el resultado transcluido final en contexto.

Orígenes

El concepto de reutilización del contenido de un archivo comenzó con los lenguajes de programación informática: COBOL en 1960, [2] seguido por BCPL , PL/I , C , [3] y en 1978, incluso FORTRAN . Una directiva include permite reutilizar el código fuente común al tiempo que se evitan los problemas 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 include pueden proporcionar el mismo contenido que otra directiva include, provocando inadvertidamente repeticiones del mismo código fuente en el resultado final, lo que da como resultado un error . Las protecciones de inclusión ayudan a resolver esto al, después de una única inclusión de contenido, omitir a partir de entonces el contenido duplicado. [4]

La idea de una única fuente de información reutilizable dio lugar a conceptos como " No repetirse" 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 con cada entorno informático. [5]

Historia e implementación del Proyecto Xanadu

Ted Nelson, creador de las palabras hipertexto e hipermedia , también acuñó el término transclusión en su libro Literary Machines (Máquinas literarias) 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 formaba parte de su descripción del hipertexto de 1965. [6] 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 (lo que él llama transentrega ) o una cita explícita que permanece conectada a sus orígenes (lo que él llama transcitación ).

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

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). [8] Crea un nuevo formato basado en direcciones de partes de páginas web; cuando se desreferencia, 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 un soporte rudimentario para la transclusión a través del servicio de bytes : especificando 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:

  • Un documento HTML puede ser compuesto previamente por el servidor antes de entregarlo al cliente mediante Server-Side Includes u otra aplicación del lado del servidor.
  • El cliente puede analizar entidades XML u objetos HTML y luego solicitar los recursos correspondientes por separado del documento principal.
  • Un navegador web puede almacenar en caché elementos utilizando sus propios algoritmos, que pueden funcionar sin directivas explícitas en el marcado del documento.
  • AngularJS emplea transclusión para la operación de directivas anidadas. [9]

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

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

Los mashups utilizan la transclusión para reunir recursos o datos en una nueva aplicación, por ejemplo, colocando fotos geoetiquetadas en un mapa interactivo o mostrando métricas comerciales en un tablero interactivo .

HTML del lado del cliente

HTML define elementos para la transclusión del lado del cliente de imágenes , scripts, hojas de estilo , otros documentos y otros tipos de medios . 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.

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

Es posible que futuras versiones de HTML admitan 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 solicitados comúnmente.

Un popular marco de interfaz de usuario 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 padre más cercana que usa la transclusión.

Transclusión del lado del servidor

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

Transclusión de código fuente

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

Transclusión en la gestión de contenidos

En la gestión de contenidos para publicaciones de una sola fuente , los sistemas de gestión de contenidos de primera clase cada vez más permiten la transclusión y la sustitución. Los sistemas de gestión de contenidos por componentes , en particular, apuntan a llevar el principio de diseño modular a su grado óptimo. MediaWiki proporciona transclusión y sustitución y es una buena opción lista para usar para muchas organizaciones más pequeñas (como pequeñas organizaciones sin fines de lucro y pymes ) que pueden no tener el presupuesto para otras opciones comerciales; para obtener más detalles, consulte Sistema de gestión de contenidos por componentes .

Implementación en el desarrollo de software

Una característica común en los lenguajes de programación es la capacidad de un archivo de código fuente de transcluir, total o parcialmente, otro archivo de código fuente. La parte transcluida se interpreta como si fuera parte del archivo transcluido. Algunos de los métodos son:

  • Incluir: algunos programas INCLUIRÁN explícitamente otro archivo. El archivo incluido puede constar de código ejecutable, declaraciones, instrucciones del compilador y/o ramificaciones a partes posteriores del documento, según las variables de tiempo de compilación.
  • Macro: Los lenguajes ensambladores y algunos lenguajes de programación de alto nivel generalmente proporcionan macros, instrucciones con nombre especial que se utilizan para crear definiciones, generar código ejecutable, proporcionar bucles y otras decisiones, y modificar el documento producido de acuerdo con los parámetros suministrados a la macro cuando se representa el archivo.
  • Copiar: El lenguaje de programación Cobol tiene el comando COPY, en el que se inserta un archivo copiado en el documento que se está copiando, reemplazando el comando COPY. El código y las declaraciones en el archivo copiado se pueden modificar mediante un argumento REPLACING como parte del comando de copia.

Véase también

Referencias

  1. ^ Glushko, Robert J. , ed. (2013). La disciplina de la organización . Cambridge, Massachusetts: MIT Press. pág. 231. ISBN 9780262518505.
  2. ^ Especificaciones iniciales para un LENGUAJE COMÚN ORIENTADO A LOS NEGOCIOS (COBOL) para la programación de computadoras digitales electrónicas (PDF) . Washington: Departamento de Defensa. Abril de 1960. pp. V-27. INCLUDE: Función: Ahorrar el esfuerzo del programador incorporando automáticamente subrutinas de biblioteca en el programa fuente.
  3. ^ Ritchie, Dennis M. (1993-03-01). "El desarrollo del lenguaje C". ACM SIGPLAN Notices . 28 (3): 201–208. doi :10.1145/155360.155580. Archivado desde el original el 27 de febrero de 2020. Muchos otros cambios ocurrieron 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 de 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, se amplió, principalmente por Mike Lesk y luego por John Reiser, para incorporar macros con argumentos y compilación condicional . El preprocesador se consideró originalmente un complemento opcional del lenguaje mismo.URL alternativa archivada el 4 de febrero de 2020 en Wayback Machine
  4. ^ Stallman, Richard M. ; Weinberg, Zachary. "Header Files" (PDF) . El preprocesador de C: para la versión 6.3.0 de gcc (GCC) . págs. 10-11. Alternativas al contenedor #ifndef : CPP admite dos formas más de indicar que un archivo de encabezado debe leerse solo una vez. Ninguna es tan portátil como un contenedor '#ifndef' y le recomendamos que no los use 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 leerá nuevamente, pase lo que pase.
  5. ^ Johnson, SC ; Ritchie, DM (julio-agosto de 1978). "Sistema de tiempo compartido UNIX: Portabilidad de programas C y el sistema UNIX". The Bell System Technical Journal . 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 había dado cuenta, como se mencionó anteriormente, de que muchos programas dependían en un grado indeseable no solo 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 ", e implementó este paquete en las máquinas Honeywell e IBM, así como en el PDP-11, en un esfuerzo generalmente exitoso por superar las deficiencias de los paquetes anteriores.
  6. ^ Theodor H. Nelson, "Una estructura de archivo para lo complejo, lo cambiante y lo indeterminado". Actas de la 20.ª Conferencia Nacional de la ACM (1965), págs. 84-100
  7. ^ 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 .
  8. ^ El pequeño transcitador Xanadu.com.au
  9. ^ "AngularJS". docs.angularjs.org . Consultado el 11 de agosto de 2016 .

Lectura adicional

  • Di Iorio, A.; Vitali, F. (agosto de 2003). "Un entorno de edición colaborativa xanalógica" (PDF) . Actas del Segundo Taller Internacional de Análisis de Documentos Web 2003 (WDA2003) . Edimburgo, Reino Unido.
  • Kolbitsch, J.; Maurer, H. (junio de 2006). "Transclusiones en un entorno basado en HTML". Revista de informática y tecnología de la información . 14 (2): 161–174. doi : 10.2498/cit.2006.02.07 .
  • Kolbitsch, J. (junio de 2005). "Transclusiones de granularidad fina de documentos multimedia en HTML". Journal of Universal Computer Science . 11 (6).
  • Krottmaier, H. (2002). "Documentos transcluidos: ventajas de reutilizar fragmentos de documentos" (PDF) . Actas de la 6.ª Conferencia internacional ICCC/IFIP sobre publicación electrónica (ELPUB2002) . República Checa: Karlovy Vary. pp. 359–367. Archivado desde el original (PDF) el 17 de mayo de 2005.
  • Krottmaier, H.; D., Helic (2002). "Cuestiones de transclusiones" (PDF) . Actas de la Conferencia Mundial sobre Aprendizaje Electrónico en Empresas, Gobierno, Salud y Educación Superior (E-Learn 2002) . Montreal, Canadá. pp. 1730–1733. Archivado desde el original (PDF) el 20 de junio de 2015. Consultado el 25 de mayo de 2006 .
  • Krottmaier, H.; Maurer, H. (julio de 2001). "Transclusiones en el siglo XXI" ( PDF , HTML , PostScript ) . Journal of Universal Computer Science . 7 (12): 1125–1136. CiteSeerX  10.1.1.106.9923 .
  • Moore, A.; et al. (2001). "Enseñanza personalizada en WHURLE mediante traducción condicional". Actas de la duodécima conferencia de la ACM sobre hipertexto e hipermedia . Aarhus, Dinamarca. págs. 163-164.
  • Nelson, TH (1993) [1980]. Máquinas literarias . Mindful Press.
  • Nelson, TH (1995). "El corazón de la conexión: hipermedia unificada por la transclusión". Comunicaciones de la ACM . 38 (8): 31–33. doi : 10.1145/208344.208353 . S2CID  16604206.
  • Nelson, TH (1996). "Enlaces generalizados, micropagos y transcopyright". Almaden Research Center . Archivado desde el original el 2006-12-05 . Consultado el 2006-09-27 .
  • Nelson, TH (1998). "Transcopyright: autorización previa para republicación virtual".
  • Nelson, TH (1999). "Estructura xanalógica, necesaria ahora más que nunca: documentos paralelos, enlaces profundos al contenido, control de versiones profundo y reutilización profunda". ACM Computing Surveys . 31 (4es): 33–es. CiteSeerX  10.1.1.418.7740 . doi :10.1145/345966.346033. S2CID  12852736.
  • Pam, A. (1997). "Transclusión de grano fino en el lenguaje de marcado de hipertexto" (Texto) . Borrador de Internet .
  • Wilde, E.; Lowe, D. (2002). "Capítulo 7: Lenguaje de enlace XML". XPath, XLink, XPointer y XML: una guía práctica para la hipervinculación y la transclusión web . Addison-Wesley Professional. págs. 169–198. ISBN 9780201703443.
  • Ted Nelson: Transclusión: cómo solucionar la literatura electrónica —en Google Tech Talks, 29 de enero de 2007.
Obtenido de "https://es.wikipedia.org/w/index.php?title=Transclusión&oldid=1246523347"