En ciencias de la computación , la transclusión es la inclusión de parte o la totalidad de un documento electrónico en uno o más documentos por referencia 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 de fuentes separadas, posiblemente almacenadas en diferentes computadoras en lugares dispares.
La transclusión facilita el diseño modular : un recurso se almacena una vez y se distribuye para su reutilización en varios documentos. Las actualizaciones o correcciones de un recurso se reflejan en los documentos de referencia. 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 tecnicas
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, 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 .
Parametrización
En algunas circunstancias, y en algunos contextos técnicos, es posible que las secciones de texto translúcidas no requieran una adhesión estricta al principio de "neutralidad del contexto", porque las secciones transcluidas pueden parametrizarse . La parametrización implica la capacidad de modificar ciertas partes o subsecciones de un texto transcluido en función de variables exógenas que se pueden cambiar de forma independiente. Esto se hace habitualmente proporcionando un texto transcluido con uno o más marcadores de posición de sustitución . Luego, estos marcadores de posición se reemplazan con los valores de las variables correspondientes antes de representar la salida final transcluida en contexto.
Orígenes
El concepto de reutilizar el contenido del archivo 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 include permite reutilizar el código fuente común al tiempo que evita las trampas 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, provocando inadvertidamente repeticiones del mismo código fuente en el resultado final, lo que da como resultado un error . Incluir guardias ayuda a resolver esto, después de una sola inclusión de contenido, luego omite el contenido duplicado. [5]
La idea de una fuente de información única y reutilizable conduce a conceptos como: No te repitas a ti mismo y al principio de abstracción . Se encontró un uso adicional para hacer que los programas fueran más portátiles . El código fuente portátil utiliza una directiva de inclusión para especificar una biblioteca estándar , que contiene un código fuente específico del sistema que varía con cada entorno informático. [6]
Historia e implementación por Project Xanadu
Ted Nelson, quien también originó las palabras "hipertexto" e " hipermedia ", acuñó el término "transclusión" en su libro Literary Machines de 1980 . Parte de su propuesta era la idea de que los micropagos podrían exigirse automáticamente al lector por todo el texto, sin importar cuántos fragmentos de contenido se tomen 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 de manera conocida en más de un lugar", separándolo de casos más especiales, como la inclusión de contenido de una ubicación diferente (que él llama transentrega ) o un cita que permanece conectada a sus orígenes, (que él llama transcotación ).
Algunos sistemas de hipertexto, incluido el propio 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 de partes 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 un soporte rudimentario para la transclusión mediante el 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:
- El servidor puede componer previamente un documento HTML antes de entregarlo al cliente mediante las inclusiones del lado del servidor u otra aplicación del lado del servidor.
- El cliente puede analizar las entidades XML u objetos HTML, que luego solicita los recursos correspondientes por separado del documento principal.
- Un navegador web puede almacenar elementos en caché utilizando sus propios algoritmos, que pueden funcionar sin directivas explícitas en el marcado del documento.
- AngularJS emplea la transclusión para la operación directiva anidada. [10]
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 la práctica pueden referirse a varias formas de vinculación en línea como robo de ancho de banda o sanguijuelas .
Otros editores pueden buscar específicamente que sus materiales se trasladen a otros sitios web, como en forma de publicidad web , o como widgets como un contador de visitas o un error web .
Los mashups hacen uso de la transclusión para ensamblar recursos o datos en una nueva aplicación, como colocando fotos etiquetadas geográficamente 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 se ha basado en gran medida en la transclusión del lado del cliente desde los primeros días de la Web (por lo que las páginas web se pueden mostrar más rápidamente antes de que los elementos multimedia terminen 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 indicar 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 renderizado la página, en respuesta a la entrada del usuario o 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 . XPointer está patentado pero tiene una licencia libre de regalías . [11]
Los servidores proxy pueden emplear la transclusión para reducir las transmisiones redundantes de los recursos comúnmente solicitados.
Un popular marco de interfaz conocido como AngularJS desarrollado y mantenido por Google tiene una directiva llamadand ng-transclude que marca el punto de inserción para el DOM transcluido de la directiva principal más cercana que usa la 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 de código fuente
La transclusión del código fuente en 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 consistencia semántica del código insertado en relación con su base de código fuente.
Ver también
- Documento compuesto
- Referencia cruzada
- Arquitectura de tipificación de información de Darwin (DITA) y reutilización de contenido
- Macro (informática)
- Vinculación e incrustación de objetos (OLE)
- Publicar y suscribirse (Mac OS)
- Publicación de fuente única
- Subrutina
- Incluir directiva
Referencias
- ^ Glushko, Robert J. , ed. (2013). La disciplina de organizar . Cambridge, Massachusetts: MIT Press. pag. 231. ISBN 9780262518505.
- ^ 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. págs. V-27.
INCLUYE: Función: Para ahorrar el esfuerzo del programador incorporando automáticamente subrutinas de la biblioteca en el programa fuente.
- ^ 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 [sic] 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 simples de cadenas : #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 . El preprocesador se consideró originalmente un complemento opcional del lenguaje en sí.
Alt URL Archivado el 4 de febrero de 2020 en la Wayback Machine. - ^ Adams, Jeanne C .; Brainerd, Walter S .; Martin, 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 conveniente de colocar el mismo texto en varios lugares de un programa.
[ enlace muerto ] URL alternativa - ^ Stallman, Richard M .; Weinberg, Zachary. "Archivos de encabezado" (PDF) . El preprocesador de 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 los dos es tan portátil como un contenedor '#ifndef' y le recomendamos que no los utilice 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, no importa qué.
- ^ Johnson, SC ; Ritchie, DM (julio-agosto de 1978). "Sistema de tiempo compartido UNIX: portabilidad de programas C y el sistema UNIX" . El diario técnico 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 dio 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 de los detalles de las 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 los paquetes anteriores.
- ^ Theodor H. Nelson, "Una estructura de archivo para lo complejo, lo cambiante y lo indeterminado". Actas de la 20a Conferencia Nacional de ACM (1965), págs. 84-100
- ^ 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 .
- ^ El pequeño transquoter Xanadu.com.au
- ^ "AngularJS" . docs.angularjs.org . Consultado el 11 de agosto de 2016 .
- ^ "Declaraciones de patentes de XPointer" . Consorcio World Wide Web .
Otras lecturas
- Di Iorio, A .; Vitali, F. (agosto de 2003). "Un entorno de edición colaborativa de Xanalogical" (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 detalladas de documentos multimedia en HTML" . Revista de Ciencias de la Computación Universal . 11 (6).
- Krottmaier, H. (2002). "Documentos incorporados: 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. págs. 359–367. Archivado desde el original (PDF) el 17 de mayo de 2005.
- Krottmaier, H .; D., Helic (2002). "Problemas de las transclusiones" (PDF) . Actas de la Conferencia Mundial sobre E-Learning en Empresas, Gobierno, Salud y Educación Superior (E-Learn 2002) . Montreal Canadá. págs. 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 ) . Revista de Ciencias de la Computación Universal . 7 (12): 1125-1136. CiteSeerX 10.1.1.106.9923 .
- Moore, A .; et al. (2001). "Enseñanza personalizada en WHURLE usando translucion condicional". Actas de la Duodécima Conferencia ACM sobre hipertexto e hipermedia . Aarhus, Dinamarca. págs. 163-164.
- Nelson, TH (1993) [1980]. Máquinas literarias . Prensa consciente.
- Nelson, TH (1995). "El corazón de la conexión: hipermedia unificada por transclusión". Comunicaciones de la ACM . 38 (8): 31–33. doi : 10.1145 / 208344.208353 . S2CID 16604206 .
- Nelson, TH (1996). "Vínculos Generalizados, Micropago y Transcopyright" . Centro de Investigaciones de Almaden .
- Nelson, TH (1998). "Transcopyright: permiso previo para la republicación virtual" .
- Nelson, TH (1999). "Estructura Xanalogical, más necesaria que nunca: documentos paralelos, enlaces profundos al contenido, versiones profundas y reutilización profunda" . Encuestas de computación ACM . 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 vinculación XML" . XPath, XLink, XPointer y XML: una guía práctica para el hipervínculo y la transclusión web . Addison-Wesley Professional. págs. 169–198. ISBN 9780201703443.
enlaces externos
- Ted Nelson: Transclusion: Fixing Electronic Literature — on Google Tech Talks, 29 de enero de 2007.