Un identificador público formal ( FPI , por sus siglas en inglés) es un fragmento de texto breve con una estructura particular que se puede utilizar para identificar de forma única un producto, especificación o documento. Los FPI se introdujeron como parte del lenguaje de marcado generalizado estándar (SGML, por sus siglas en inglés) y cumplen funciones específicas en formatos derivados históricamente de SGML ( HTML y XML ). Algunos de sus usos más comunes son como parte de las declaraciones de tipo de documento (DOCTYPE, por sus siglas en inglés) y las definiciones de tipo de documento (DTD, por sus siglas en inglés) en SGML, XML e históricamente HTML, pero también se utilizan en los formatos de archivo vCard e iCalendar para identificar el producto de software que generó el archivo.
Más recientemente, los identificadores uniformes de recursos (URI) y los identificadores universalmente únicos (UUID) se utilizan habitualmente para identificar objetos de forma única. Los FPI se han convertido en un sistema heredado .
Sintaxis
Un FPI consta de un identificador de propietario , seguido de una doble barra inclinada ( //), seguido de un identificador de texto . [ 1 ] : 381–382 Por ejemplo, el identificador " -//W3C//DTD HTML 4.01//EN" puede dividirse en dos partes: el identificador de propietario que indica el emisor del FPI, y el identificador de texto que indica el documento u objeto particular que identifica el FPI. [ 2 ] En el ejemplo, el identificador de propietario es " -//W3C" y el identificador de texto es " DTD HTML 4.01//EN".
El identificador de texto en sí consta de múltiples partes constituyentes. [ 1 ] : 385 Las secuencias de espacios en blanco se tratan como equivalentes a un solo espacio. [ 1 ] : 381–382
Identificador del propietario
Existen tres tipos de identificadores de propietario, que se distinguen por sus tres primeros caracteres: ISOun identificador de propietario ISO , -//un identificador de propietario no registrado o +//un identificador de propietario registrado . [ 1 ] : 383–384
Identificador del propietario ISO
Un identificador de propietario ISO es un número de publicación ISO, como ISO 8879:1986, o un número de registro ISO-IR, como , por ejemplo, ISO Registration Number 111para ISO-IR-111 . Este último tipo solo está permitido para CHARSETFPI (véase más abajo). En ambos casos, se distingue por comenzar con los caracteres ISO, y no requiere ningún prefijo antes de dichos caracteres. [ 1 ] : 383–384
El año se separaba anteriormente del número estándar mediante un guion ( -, p. ej. ISO 8879-1986), [ 3 ] cuyo uso ahora está en desuso . [ 4 ] Ahora, en cambio, el guion se utiliza para separar el número de pieza del número estándar [ 2 ] (reemplazando el uso anterior de una sola barra ( /) para ese propósito); [ 5 ] el año sigue a cualquier número de pieza si está presente, y se separa mediante dos puntos ( :). [ 2 ]
Identificador de propietario no registrado
Un identificador de propietario no registrado comienza con -//. [ 1 ] : 384–385 Entre los propietarios que utilizan identificadores no registrados se incluyen el W3C ( -//W3C), [ 6 ] : 8–9 el Grupo de Trabajo de Ingeniería de Internet ( -//IETF), [ 7 ] el Departamento de Defensa de los Estados Unidos ( -//USA-DOD), [ 8 ] el Parlamento Europeo ( -//EP) [ 9 ] y otros. Dado que no está registrado, no se garantiza su unicidad (otro propietario puede elegir el mismo identificador de propietario), lo que debilita la garantía de unicidad del FPI en su conjunto, aunque sigue garantizado que es distinto tanto de todos los demás FPI con el mismo propietario como de todos los FPI con propietarios registrados. [ 1 ] : 186
Identificador del propietario registrado
Un identificador de propietario registrado comienza con los caracteres +//. Se refiere a un identificador registrado según lo estipulado por ISO 9070. [ 1 ] : 384 La parte que realmente se registra es el prefijo del propietario registrado , que sigue a +//y puede ir seguido opcionalmente de una o más partes asignadas al propietario que podrían identificar, por ejemplo, departamentos dentro de una organización. [ 1 ] : 184 Si se utilizan componentes del nombre del propietario adicionales al prefijo registrado, se separan del prefijo mediante un ::par. [ 2 ] [ 10 ] : 63
Un prefijo de propietario registrado que cumpla con la norma ISO 9070 puede ser uno de los siguientes: [ 2 ]
- Un prefijo de autoridad de normalización ISO , un identificador de una norma ISO o ISO/IEC . [ 2 ] Aunque estos FPI no necesitan tener un prefijo inicial
+//como se mencionó anteriormente, [ 1 ] : 184, 383–384 dicho prefijo se ve ocasionalmente en referencias a normas ISO en FPI, especialmente en aquellas que también son normas IEC . [ 10 ] : 318–319 - Un prefijo de autoridad de registro ISO , que puede ser:
- Un prefijo de autoridad de registro completo (un identificador de una norma ISO sin el año, seguido de
/RAsin distinción entre mayúsculas y minúsculas) [ 2 ] - Un prefijo ISO 2375 (la cadena
ISO Registration Numbery un espacio seguido de un número ISO-IR [ 2 ] aunque, como se mencionó anteriormente, se+//puede omitir en este caso). [ 1 ] : 383–384 - Un prefijo ISBN (la cadena
ISBN, un espacio y un ISBN), [ 2 ] [ 10 ] : 321–325 cuya aceptación se agregó en una enmienda posterior a ISO 9070 [ 1 ] : 184, 384 - Más recientemente, también se permiten los nombres de dominio registrados (siguiendo y un espacio). [ 11 ] [ 12 ] Por ejemplo, el propietario de podría emitir FPI utilizando el identificador de propietario " ".
IDNexample.net+//IDN example.net
- Un prefijo de autoridad de registro completo (un identificador de una norma ISO sin el año, seguido de
- Un prefijo de organismo miembro de la ISO , es decir, un identificador para una organización de normalización que es miembro de la ISO. [ 2 ] [ 1 ] : 184, 384
- Prefijo de autoridad de organización identificada por ISO : la cadena
ICDseguida, sin espacio intermedio, por un código de organización ISO 6523. [ 2 ] [ 1 ] : 184
Identificador de texto
Los identificadores de texto se pueden dividir en clase , descripción e idioma . En el ejemplo -//W3C//DTD HTML 4.01//EN, la clase es " DTD", lo que indica que el FPI representa una definición de tipo de documento; la descripción es " HTML 4.01"; y el idioma es " EN", lo que sugiere que la definición de tipo de documento está escrita en inglés (aunque los documentos que cumplen con la DTD no necesitan estar en inglés). [ 6 ] : 7 La clase está separada de la descripción mediante un espacio; la descripción está separada del idioma mediante una doble barra. El identificador de texto puede contener opcionalmente un indicador de versión después del idioma, también separado por una doble barra.
Clase
El identificador de texto sigue inmediatamente al //par después del identificador del propietario, y debe comenzar con una de las siguientes palabras en mayúsculas seguidas de un espacio, especificando la clase de texto público : [ 1 ] : 385–387
CAPACITYCHARSETDOCUMENTDTDELEMENTSENTITIESLPDNONSGMLNOTATIONSD[ 13 ]SHORTREFSUBDOCSYNTAXTEXT
DOCUMENTy hacer referencia a documentos SGML o fragmentos de documentos SGML. [ 1 ] : 386 Aquellos de la clase están destinados a ser referenciados usando una entidad de texto (sin una palabra clave de tipo de entidad, es decir, insertada directamente en el documento), mientras que aquellos de la SUBDOCclase están destinados a ser referenciados usando una entidad de subdocumento (con la palabra clave en la declaración de la entidad, es decir, interpretada con sus propios esquemas individuales, espacios de nombres, etc.). [ 1 ] : 294–296, 400–401 Aquellos de la clase no están destinados a ser referenciados como una entidad de un documento contenedor.TEXTTEXTSUBDOCSUBDOCDOCUMENT
CAPACITYy SYNTAXse refieren a partes de una declaración SGML. SD(para una declaración SGML completa) se agregó a esta lista mediante una extensión posterior agregada al estándar como un anexo, que también especifica ciertas extensiones requeridas por XML. [ 13 ]LPD se refiere a una definición de proceso de enlace SGML (que define una transformación de un formato SGML a otro). ELEMENTS, ENTITIESy SHORTREFse refieren a partes de una definición de tipo de documento (DTD) que consisten en tipos específicos de declaración de marcado. DTDse refiere a una DTD completa.
Los tres restantes se refieren a conceptos ajenos a SGML: CHARSETse refiere a un conjunto de caracteres codificados , NOTATIONa un formato como un formato de archivo (ya sea para referencias a entidades de archivos externos o para interpretar un formato de texto contenido dentro de un elemento), [ 1 ] : 336–337 y NONSGMLa un activo en un formato que no es SGML.
Indicador de disponibilidad y descripción
El espacio después del nombre de la clase de texto va seguido de la secuencia -//si el FPI se refiere a un texto público no disponible [ 1 ] : 385 —es decir, un documento, archivo o especificación que no está disponible para el acceso o la compra por parte del público en general. [ 1 ] : 182 La descripción del texto público sigue a este marcador; para un texto público disponible , la descripción sigue inmediatamente al espacio después del nombre de la clase de texto. [ 1 ] : 385 Para una publicación ISO, la descripción se toma del último elemento del título de la publicación, sin contar ningún número de parte; de lo contrario, puede ser cualquier cadena adecuada y única de caracteres permitidos. [ 1 ] : 387 La descripción termina con otro //par. [ 1 ] : 385
Secuencia de designación ISO 2022
La parte del FPI que sigue a la descripción depende de la clase de texto. Para CHARSETlos FPI, es una secuencia de designación de texto público , [ 1 ] : 385 que proporciona una representación textual de una secuencia de escape de designación ISO/IEC 2022 en notación de columna/línea (por ejemplo, ESC 2/8 4/0); se espera que los escapes de designación registrados coincidan con el identificador del propietario ISO dado, mientras que los escapes de designación de uso privado están espaciados por el identificador del propietario del FPI. [ 1 ] : 389–390 Como ejemplo de este tipo de FPI, el FPI ISO Registration Number 177//CHARSET ISO/IEC 10646-1:1993 UCS-4 with implementation level 3//ESC 2/5 2/15 4/6se utiliza en la declaración SGML de HTML 4 para identificar Unicode . [ 14 ]
Idioma
Para todos los demás FPI (es decir, aquellos donde la clase no es CHARSET), la parte que sigue a la descripción es un lenguaje de texto público que es una secuencia de letras mayúsculas, se recomienda encarecidamente (pero no es obligatorio) que sea un código ISO 639-1 . [ 1 ] : 387–388 No exigir el uso de un código ISO 639-1 evita que el software de validación tenga que comprobar si el lenguaje es un código ISO 639-1, y también permite la extensibilidad : [ 1 ] : 387 por ejemplo, un pequeño número de FPI utilizados en la práctica utilizan códigos ISO 639-3 (como NDSpara el bajo alemán ) [ 15 ] o etiquetas de lenguaje IETF con guiones eliminados (como SRLATNpara el serbio escrito en Gajica ) [ 16 ] para casos en los que los códigos ISO 639-1 resultan insuficientes para distinguir un recurso de versiones en otros idiomas o variedades de lenguaje. De acuerdo con las recomendaciones de la norma ISO 9070 , Steven DeRose y David G. Durand sugieren su uso XXsi no se aplica ningún código ISO 639. [ 10 ] : 62
La especificación señala que, si bien el idioma del recurso puede afectar los datos y nombres definidos y el idioma de cualquier comentario del código fuente, el idioma afecta la usabilidad de algunas clases de texto más que otras. [ 1 ] : 387 Por ejemplo, el idioma ENdado en el FPI en una declaración DOCTYPE de HTML 4 o XHTML 1 no debe cambiarse, independientemente del idioma de la página web en sí; [ 6 ] : 7 por el contrario, las hojas de estilo DSSSL para DocBook utilizan internamente FPI con diferentes idiomas para identificar conjuntos de entidades de tabla de cadenas para localizaciones particulares . [ 17 ]
Versión de visualización de la entidad
Además, excepto para CHARSET, CAPACITY, NOTATIONy SYNTAXFPI, para los cuales la secuencia de designación o el idioma debe ser la parte final, [ 1 ] : 390 el código de idioma puede ir seguido de otro //par, [ 1 ] : 385 seguido de una versión de visualización de texto público , que especifica una plataforma particular a la que debe apuntar la implementación de entidades SGML . [ 1 ] : 389–390 Por ejemplo, el conjunto de entidades base ISO 8879:1986//ENTITIES Added Latin 1//ENdefine las entidades nombradas Latin-1 usando SDATAentidades tautológicas, [ 1 ] : 506–507 [ 18 ] mientras que ISO 8879:1986//ENTITIES Added Latin 1//EN//XMLlas implementa usando referencias de puntos de código Unicode para su uso en XML . [ 19 ] De manera similar, el conjunto de entidades común para HTML 5 y MathML usa el FPI -//W3C//ENTITIES HTML MathML Set//EN//XML. [ 20 ]
Ejemplos de FPI
Uso en XML, SGML y HTML
El FPI es, sin duda, la parte menos comprendida de la declaración de tipo de documento (DOCTYPE), un componente integral de los documentos HTML , XML y SGML ( Lenguaje de Marcado Generalizado Estándar ) válidos. [ 29 ] El efecto del Identificador Público Formal sobre su documento anfitrión es inusual, ya que puede depender no solo de su propia corrección sintáctica y del comportamiento del programa que lo analiza , sino también del estado de registro ISO de la organización responsable del esquema al que hace referencia el FPI. [ 30 ]
Identificadores públicos e identificadores de sistema en SGML
SGML utiliza dos formas de identificadores para los recursos: los identificadores de sistema son únicos y significativos solo dentro de un sistema particular, mientras que los identificadores públicos son únicos y significativos dentro de un ámbito más amplio. [ 1 ] : 186 El término "público" aquí no significa necesariamente que el recurso esté disponible para el público en general; puede estar disponible solo dentro de una sola organización, por ejemplo (en cuyo caso, es un texto público no disponible ), sino solo que existe fuera del contexto del entorno del sistema o documento particular en el que se hace referencia. [ 1 ] : 182 Un FPI es un identificador público "formal" en el sentido de que sigue la estructura formal establecida por el estándar SGML (ISO 8879); [ 1 ] : 183 los identificadores públicos que no siguen la estructura formal y, por lo tanto, no son FPI, a veces se denominan identificadores públicos "informales". [ 1 ] : 186
Aunque las restricciones de los identificadores públicos formales (en contraposición a los informales) son una característica opcional, debido a que la especificación para los FPI se introdujo tardíamente en el desarrollo de ISO 8879, se recomienda encarecidamente el uso de FPI para los identificadores públicos, ya que la estructura FPI garantiza que los FPI asignados por un propietario no entren en conflicto con los FPI asignados por otros propietarios (excepto en el caso de propietarios no registrados con nombres que entren en conflicto), mientras que los identificadores públicos informales no tienen garantía de unicidad, lo que significa que los asignados por un propietario pueden entrar en conflicto con los identificadores públicos formales o informales asignados por otro. [ 1 ] : 186 Una característica que permite la interpretación de identificadores públicos utilizando la estructura formal, lo que requiere que los identificadores públicos sean FPI, puede habilitarse dentro de la declaración SGML utilizando el FORMALnombre de la característica. [ 1 ] : 64, 88, 378
Los identificadores de sistema, por el contrario, no tienen una estructura definida por SGML en sí mismo; podrían ser nombres de archivo, claves de base de datos o incluso direcciones para almacenamiento indexable, pero son interpretados por el componente de gestión de entidades del sistema SGML para identificar la ubicación de la entidad. [ 1 ] : 378 Por lo tanto, ISO/IEC 8879 no utiliza el término identificador formal de sistema (FSI), que en cambio se define en una enmienda a ISO/IEC 10744 ( HyTime ). [ 31 ]
Un identificador externo SGML consiste en la palabra clave PUBLICseguida de un literal para el identificador público y un literal opcional para el identificador del sistema, o la palabra clave SYSTEMseguida de un literal opcional para el identificador del sistema. [ 1 ] : 379 Los literales se anteponen y sufijan con el delimitador literal o el delimitador literal alternativo , [ 1 ] : 380–381 generalmente establecido por la declaración SGML a las comillas ASCII dobles y simples, como están en la sintaxis concreta de referencia para SGML, [ 1 ] : 372 y también en XML. [ 32 ] Se permite el uso de la SYSTEMpalabra clave en una definición de entidad SGML sin un identificador de sistema posterior, si el gestor de entidades puede resolver la entidad solo a partir de su nombre. [ 1 ] : 378 Los identificadores externos se utilizan en las declaraciones de tipo de documento (DOCTYPE) que hacen referencia a las definiciones de tipo de documento (DTD), [ 1 ] : 403 en las especificaciones de entidades externas [ 1 ] : 400 y en las declaraciones de notación [ 1 ] : 427 dentro de las DTD, y en las declaraciones de tipo de enlace que hacen referencia a las definiciones de proceso de enlace (LPD). [ 1 ] : 433–434
Novedades en XML
Introducción de URI y marginación de FPI.
Los identificadores externos en XML están más restringidos que en SGML en general, y los cambios desplazan el enfoque de los identificadores públicos como FPI hacia la estandarización de la forma que adoptan los identificadores del sistema. El identificador del sistema debe tratarse como una URI (absoluta o relativa) , [ 33 ] [ 34 ] pero no debe contener un identificador de fragmento de URI (parte que comienza con #). [ 34 ] El identificador del sistema también es generalmente requerido: [ 35 ] la SYSTEMpalabra clave debe ir seguida de un literal de identificador del sistema, y la PUBLICpalabra clave debe, en la sintaxis para identificadores externos generales, ir seguida de literales tanto para los identificadores públicos como para los del sistema. [ 34 ] Sin embargo, como excepción a esto, las declaraciones de notación pueden usar un identificador público sin un identificador del sistema. [ 36 ]
A diferencia del requisito de que el identificador del sistema sea una URI (clasificada para fines de HyTime como un tipo de identificador formal del sistema o FSI, [ 31 ] [ 37 ] : 19 o más específicamente como un identificador de objeto de almacenamiento ), [ 31 ] la característica SGML FORMALestá deshabilitada en XML, [ 33 ] [ 38 ] ya que el formato de los identificadores públicos no está especificado por XML (es decir, no se requiere explícitamente que sean FPI, aunque pueden serlo). Los únicos detalles que la especificación XML estipula sobre el identificador público son que puede proporcionarse junto con el identificador del sistema y puede ser utilizado por un procesador XML junto con otra información para determinar una URI alternativa (de lo contrario, se requiere utilizar la URI proporcionada en el identificador del sistema). [ 34 ]
Las cadenas de identificación para los espacios de nombres XML deben ser URI no vacías (como una URL absoluta; el uso de URL relativas está obsoleto), [ 39 ] aunque no es necesario que sean URL resolubles y pueden, por ejemplo, ser URN . [ 35 ]
Sustitución de DTD
Además, formatos de esquema alternativos como XML Schema (XSD) sirven como competidor de DTD en un contexto XML, superando algunas de las limitaciones de DTD. XSD puede (a diferencia de DTD) validarse utilizando las mismas herramientas que cualquier otro documento XML, [ 40 ] incluye soporte para espacios de nombres XML (que DTD solo puede interpretar como porciones fijas de los nombres de elementos y atributos en cuestión), [ 41 ] permite colocar restricciones de expresiones regulares en el formato de datos de texto como números de teléfono, y es más capaz de expresar estructuras de modelos de contenido complejas. [ 40 ]
Por lo tanto, es menos común que los formatos XML utilicen un DTD (como el que podría usar FPI para notaciones o entidades externas), y por lo tanto, es menos común que uno contenga un DOCTYPE que haga referencia a un DTD (ya sea por FPI o solo por URI, aunque un DOCTYPE todavía puede usarse para definiciones de entidades incrustadas dentro del propio archivo XML). [ 42 ] Por ejemplo, la mayoría de las versiones de RSS (excepto RSS 0.91) no tienen un DTD oficial. [ 43 ] De manera similar, el formato DocBook , que inicialmente usaba una declaración de tipo de documento que identificaba un DTD por un FPI, cambió su definición de esquema principal de DTD a RELAX NG en la versión 5.0, y dejó de usar declaraciones de tipo de documento en ese momento, [ 44 ] y Scalable Vector Graphics (SVG) hizo lo mismo en la versión 1.2. [ 42 ]
Búsqueda y resolución de FPI
Si no se proporciona un identificador de sistema (como una ruta o URL) para un recurso identificado por un identificador público como un FPI, el gestor de entidades de un sistema SGML generará uno con referencia al identificador público. Aunque la especificación SGML en sí no especifica cómo debe hacerlo el gestor de entidades, [ 7 ] : 65–66 la intención era que utilizara una tabla que asignara identificadores públicos a identificadores de sistema. [ 1 ] : 180 En consecuencia, se creó un formato de catálogo SGML para contener asignaciones de identificadores públicos a identificadores de sistema; el archivo de catálogo también puede especificar reglas para anular el identificador de sistema dado. [ 7 ] : 65–66 [ 45 ] [ 46 ] [ 47 ]
Aunque XML exige el uso de identificadores de sistema en más lugares que el propio SGML, aún pueden ser necesarios catálogos para reasignar y sobrescribir el identificador de sistema dado: un identificador de sistema que sea una ruta local puede no ser útil en otras máquinas, mientras que uno que sea una URL de red no será útil cuando no haya una conexión de red disponible, por ejemplo. [ 35 ] En consecuencia, existe un formato de catálogo alternativo basado en XML para su uso por software XML, que admite reglas para reemplazar o reescribir URI, así como para asignar FPI a URI. [ 35 ]
Por ejemplo, una entrada en un catálogo SGML puede dar la ruta local (relativa al archivo del catálogo) a una copia del DTD de Scalable Vector Graphics 1.1 y especificar la declaración SGML (en este caso, la declaración para la sintaxis XML) que un procesador SGML debe usar para ello: [ 48 ]
PUBLIC "-//W3C//DTD SVG 1.1//ES" svg11.dtd DTDDECL "-//W3C//DTD SVG 1.1//ES" /usr/share/xml/declaration/xml.dclEl esquema para el formato de catálogo XML alternativo se define en una DTD, identificada a su vez por una FPI ( -//OASIS//DTD Entity Resolution XML Catalog V1.0//EN). [ 49 ] De manera similar, permite expresar las asignaciones de FPI a rutas, aunque, dado que está destinado a usarse solo con XML, no admite la especificación de una declaración SGML alternativa, [ 35 ] aunque existen extensiones para expresar el resto de la información expresable en un catálogo SGML. [ 50 ] La asignación DTD FPI anterior se representa de la siguiente manera: [ 49 ]
<public publicId= "-//W3C//DTD SVG 1.1//EN" uri= "svg11.dtd" />Uso en HTML
HTML 2 a 4
Las versiones HTML 2 a 4 (incluida XHTML 1.x basada en XML ) se definieron como perfiles de SGML y se especificaron con una declaración SGML y una definición de tipo de documento (DTD). La versión particular de DTD en uso se especificó en una declaración de tipo de documento usando un FPI, a veces (especialmente en las versiones posteriores, y requerido en XML como se mencionó anteriormente) en combinación con una URL para el archivo DTD como identificador del sistema. [ 6 ] : 8–9 A diferencia de la declaración SGML para XML, [ 33 ] la declaración SGML para HTML habilitó la FORMALcaracterística, [ 14 ] lo que significa que los identificadores públicos utilizados para y dentro de las DTD de HTML debían ser FPI.
Una declaración de tipo de documento (para HTML 4.01 Strict) [ 51 ] que contiene un FPI:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">El FPI en la declaración de tipo de documento anterior se lee -//W3C//DTD HTML 4.01//EN, [ 30 ] mientras que la URL se da como un identificador de sistema. El FPI era, estrictamente hablando, opcional: también era posible (pero poco común) definir un DTD HTML personalizado y omitir el FPI; en este caso, la inclusión de un identificador de sistema sin un FPI se indica mediante la SYSTEMpalabra clave. [ 6 ] : 6–7 Un ejemplo de dicho identificador de sistema personalizado sin un FPI asociado es: [ 52 ]
<!DOCTYPE html SYSTEM "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd">Análisis de DOCTYPE
Dado que estaban destinadas principalmente al uso de los validadores SGML, las declaraciones de tipo de documento fueron inicialmente ignoradas por los navegadores. Sin embargo, las páginas web antiguas se diseñaron para visualizarse correctamente en los navegadores en uso en el momento de su creación, los cuales no necesariamente cumplían con las especificaciones de, por ejemplo, CSS en cuanto a la forma en que renderizaban las páginas web. Dado que esto significaba que mejorar su conformidad con los estándares provocaría que los navegadores mostraran incorrectamente las páginas web existentes, estos utilizaron la declaración de tipo de documento para activar los diferentes "modos" bajo los cuales se renderizaría la página. [ 37 ] : 17–18
El " modo peculiar " conservaba el comportamiento heredado de versiones anteriores del navegador para evitar dañar las páginas existentes; por ejemplo, las versiones 6 y 7 de Internet Explorer renderizaban la página utilizando el modelo de caja de Internet Explorer 5.5. El "modo estándar" se ajustaba más a las especificaciones pertinentes. Lo que en aquel entonces se denominaba "modo casi estándar" e implementado inicialmente por Firefox y Safari utilizaba el comportamiento tradicional al determinar la altura de las celdas de tabla que contenían imágenes, pero por lo demás se comportaba como el modo estándar; esto correspondía al comportamiento del "modo estándar" de Internet Explorer en el momento de su introducción. [ 6 ] : 9–11 [ 37 ] : 18–19
Por ejemplo, una declaración DOCTYPE que utilice la FPI estricta de HTML 4.01 ( -//W3C//DTD HTML 4.01//EN) activaría el modo estándar en Internet Explorer 6, lo que significa que utilizaría un modelo de caja content-box, mientras que una declaración DOCTYPE que utilice la FPI de transición de HTML 4.01 ( -//W3C//DTD HTML 4.01 Transitional//EN) activaría el modo peculiar, incluyendo el uso de un modelo de caja (border-box) de Internet Explorer 5.5. [ 6 ] : 9–11 Además de la FPI, los navegadores considerarían la presencia o ausencia de un identificador del sistema al decidir entre el modo peculiar y el modo estándar. La ausencia total de una declaración DOCTYPE (o, para Internet Explorer 6, que la declaración DOCTYPE no sea la primera línea del archivo) activaría el modo peculiar. [ 37 ] : 19–20
HTML 5
HTML 5 no se define como un perfil de SGML, excepto en su representación XHTML. Por lo tanto, no se define mediante una DTD.
Los primeros borradores de HTML 5 usaban el NONSGMLFPI de tipo -//WHATWG//NONSGML HTML5//ENen el DOCTYPE en lugar de un FPI DTD, ya que no activaba el modo de peculiaridades de Internet Explorer 6. [ 53 ] Esto finalmente se eliminó por completo, y el DOCTYPE final de HTML 5 no usa un FPI. La forma preferida es simplemente <!DOCTYPE html>(sin un identificador público ni de sistema), aunque se tolera un identificador de sistema de about:legacy-compat(usando el esquema URI about: ). [ 54 ]
La representación XML (XHTML), por el contrario, está permitida pero no es obligatorio que lleve ningún DOCTYPE, pero no se proporciona ningún DTD de validación para el esquema HTML 5. [ 55 ] Sin embargo, varios FPI para XHTML 1.0, XHTML 1.1 y DTD MathML se definen para que apunten a un URI data: (para evitar requerir acceso a la red) que contiene las definiciones de las entidades de caracteres . [ 56 ]
La única función de un FPI en la representación HTML de HTML 5 (a diferencia de XHTML) es activar los modos heredados. El estándar HTML de WHATWG especifica una lista de qué FPI deben activar el modo de peculiaridades. Estos incluyen los FPI para varios DTD de HTML personalizados por el proveedor. También incluyen los FPI para los DTD de los distintos "niveles" de HTML 2.0, así como los de HTML 3.0, 3.2 y las versiones Transitional y Frameset de HTML 4.0 y 4.01, excepto que cuando los FPI Transitional y Frameset de HTML 4.01 (pero no los de HTML 4.0) van acompañados de un identificador de sistema, en su lugar activan el modo casi estándar (renombrado como "modo de peculiaridades limitadas"). Los FPI Transitional y Frameset de XHTML 1.0 activan el modo de peculiaridades limitadas incondicionalmente. En su mayoría, estos se especifican como prefijos que incluyen el propietario, la clase y la descripción (pero que coinciden con cualquier parte del lenguaje). [ 52 ]
Relación con las URI
Cada vez más, las especificaciones utilizan URI en lugar de FPI para gestionar la identificación única. Por ejemplo, los nombres de los espacios de nombres XML son URI.
Se ha definido un espacio de nombres de recursos uniformes (URN) para permitir que cualquier FPI se reescriba como una URI, [ 11 ] reemplazando las barras dobles con dos puntos . El ejemplo anterior se puede escribir como la siguiente URI:
urn:publicid:-:W3C:DTD+HTML+4.01:EN
Referencias
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 Goldfarb, Charles F. (1990). The SGML Handbook . Oxford : Clarendon Press . ISBN 0-19-853737-9.
- 1 2 3 4 5 6 7 8 9 10 11 Tauber, James K. (1996-04-10). "Identificadores públicos formales (FPI)" . CoverPages.org.
- ↑ "El uso de guiones o dos puntos en el identificador ISO del propietario" . Gestión de entidades . Organización para el Avance de los Estándares de Información Estructurada (OASIS). 10 de septiembre de 1997. Resolución Técnica OASIS 9401:1997.
- ↑ "sgml-iso-entities-8879.1986/catalog" . Un paquete Debian para datos SGML básicos . Debian . 19 de mayo de 2013.
- ↑ "Módulo de anotaciones de DocBook V4.5" . Organización para el Avance de los Estándares de Información Estructurada (OASIS). 3 de octubre de 2006."
<!NOTATION CGM-BINARY PUBLIC "ISO 8632/3//NOTATION Binary encoding//EN"> - 1 2 3 4 5 6 7 8 9 Lloyd, Ian (2008). La referencia definitiva de HTML . Collingwood, Victoria : SitePoint . ISBN 978-0-9802858-8-8.
- 1 2 3 Berners-Lee, Tim ; Connolly, Daniel W. (noviembre de 1995). Hypertext Markup Language - 2.0 . Network Working Group. doi : 10.17487/RFC1866 . RFC 1866 .Histórico. Obsoleto según RFC 2854 .
- ↑ "Apéndice A: Ejemplo de definición de tipo de documento" (PDF) . Aplicación del Departamento de Defensa de MIL-PRF-28001 utilizando el lenguaje de marcado generalizado estándar (SGML) . Departamento de Defensa de los Estados Unidos . 30 de junio de 1995. pág. 138. MIL-HDBK-28001.
- 1 2 "Derecha autoritaria: metodología de investigación y datos de votación" . Observatorio Corporativo Europeo. 15 de mayo de 2019.
- 1 2 3 4 5 6 DeRose, Steven J .; Durand, David G. (1994). Making Hypermedia Work: A User's Guide to HyTime . Norwell, Massachusetts / Dordrecht, Países Bajos : Kluwer Academic Publishers. ISBN 0-7923-9432-1.
- 1 2 Walsh, Norman; Cowan, John; Grosso, Paul (agosto de 2001). Un espacio de nombres URN para identificadores públicos . Grupo de trabajo de redes. doi : 10.17487/RFC3151 . RFC 3151 .Informativo.
- 1 2 3 Walsh, Norman (1998). "Una DTD para programación DSSSL con DocBook" . Hojas de estilo DSSSL para DocBook . Proyecto DocBook .
- 1 2 "Propuesta de TC para adaptaciones de WebSGML para SGML" . 1997-06-01. ISO/IEC JTC 1 /SC18/WG8 N1929.
- 1 2 3 "20: Declaración SGML de HTML 4" . Especificación HTML 4.01 . W3C .
- ↑ "dbl1nds.dsl" . Hojas de estilo DSSSL para DocBook . Proyecto DocBook .
- ↑ "dbl1srLatn.dsl" . Hojas de estilo DSSSL para DocBook . Proyecto DocBook .
- ↑ "common/catalog" . Hojas de estilo DSSSL para DocBook, versión 1.79 . Proyecto DocBook .
- ↑ "Conjunto de entidades ISOlat1" . Organización Internacional de Normalización . 1986.
- ↑ "ISO Added Latin 1 Entities V0.3" . Organización para el Avance de los Estándares de Información Estructurada (OASIS). 2002.
- 1 2 3 "htmlmathml-f entity set" . W3C . 2011.
- ↑ Udell, Jon (30 de septiembre de 2011). "La larga cola del ecosistema iCalendar" .
- ↑ "Problema n.° 26558: No se puede suscribir al calendario de cumpleaños desde Facebook" . Núcleo del servidor web ownCloud .
- 1 2 Beck, Jeff; Lapeyre, Deborah; Rosenblum, Bruce (2007). "Archivado e intercambio de declaraciones de notación de la suite DTD" . Biblioteca de etiquetas DTD de libros y colecciones DTD de NCBI versión 2.3 . Centro Nacional de Información Biotecnológica / Biblioteca Nacional de Medicina .
- ↑ "dbl1en.dsl" . Hojas de estilo DSSSL para DocBook . Proyecto DocBook .
- ↑ "dbl1fr.dsl" . Hojas de estilo DSSSL para DocBook . Proyecto DocBook .
- ↑ "dbl1el.dsl" . Hojas de estilo DSSSL para DocBook . Proyecto DocBook .
- ↑ "dbl1fr.ent" . Hojas de estilo DSSSL para DocBook, versión 1.79 . Proyecto DocBook .
- ↑ "dbl1en.ent" . Hojas de estilo DSSSL para DocBook, versión 1.79 . Proyecto DocBook .
- ↑ Definición: FPI (Identificador Público Formal) [Glosario Web y XML ]
- 1 2 "!DOCTYPE" . Consultado el 10 de septiembre de 2016 .
- 1 2 3 "Problema A: un formato simple de catálogo de entidades" . Gestión de entidades . Organización para el Avance de los Estándares de Información Estructurada (OASIS). 10 de septiembre de 1997. Resolución Técnica OASIS 9401:1997.
- ↑ "2.3 Construcciones sintácticas comunes (§ Literales)" . Lenguaje de marcado extensible (XML) 1.0 (Quinta edición). W3C . 26 de noviembre de 2008.
- 1 2 3 Clark, James (1997-12-15). "Comparación de SGML y XML" . W3C . NOTE-sgml-xml-971215.
- 1 2 3 4 "4.2.2 Entidades externas" . Lenguaje de marcado extensible (XML) 1.0 (quinta edición). W3C . 26 de noviembre de 2008.
- 1 2 3 4 5 Walsh, Norman (2001-08-06). "Catálogos XML" . La Organización para el Avance de los Estándares de Información Estructurada (OASIS).
- ↑ "4.7 Declaraciones de notación" . Lenguaje de marcado extensible (XML) 1.0 (quinta edición). W3C . 26 de noviembre de 2008.
- 1 2 3 4 Olsson, Tommy; O'Brien, Paul (2008). The Ultimate CSS Reference . Collingwood, Victoria : SitePoint . ISBN 978-0-9802858-5-7.
- ↑ "xml/declaration/xml.dcl: Declaración SGML para XML 1.0" . sgml-data . Debian . 19 de mayo de 2013.
- ↑ Bray, Tim; Hollander, Dave; Layman, Andrew; Tobin, Richard; Thompson, Henry S. (2009-12-08). "Espacios de nombres en XML 1.0" (Tercera ed.). W3C .
- 1 2 Payne, James (2010). Beginning Python: Using Python 2.6 and Python 3.1 . Wrox / Wiley . pp. 268– 271. ISBN 978-0-470-41463-7.
- ↑ Sall, Kenneth B. (2002). "XML y espacios de nombres (§ Manejo de espacios de nombres en un DTD o esquema XML)" . Familia de especificaciones XML: una guía práctica . InformIT / Addison-Wesley . ISBN 0-201-70359-9.
- 1 2 "1.3 Definición de un documento SVG Tiny 1.2" . Especificación de gráficos vectoriales escalables (SVG) Tiny 1.2 . W3C . 22 de diciembre de 2008.
Cabe destacar algunas diferencias clave con respecto a SVG Tiny 1.1: [...] No existe una DTD para SVG 1.2 y, por lo tanto, no es necesario especificar el DOCTYPE para un documento SVG 1.2 (a menos que se desee utilizar el subconjunto interno de la DTD ([XML10], sección 2.8, y [XML11], sección 2.8), por ejemplo, para fines de definiciones de entidades).
- ↑ Hammersley, Ben (2003). «Capítulo 4. RSS 0.91 y 0.92 (Really Simple Syndication)» . Sindicación de contenido con RSS . O'Reilly Media . ISBN 9780596003838.
- ↑ Kosek, Jirka; Walsh, Norman; Hamilton, Dick; Smith, Michael (16 de junio de 2009). "Relajándose con DocBook" . DocBook V5.0: La guía de transición . Proyecto DocBook .
- ↑ Clark, James . "SP - Catálogos" . SP: Un sistema SGML conforme a la norma internacional ISO 8879 .
- ↑ Grosso, Paul (1996). "Registro del tipo de medio MIME Application/SGML-Open-Catalog" . IANA .
- ↑ "Gestión de entidades" . Organización para el Avance de los Estándares de Información Estructurada (OASIS). 10 de septiembre de 1997. Resolución Técnica OASIS 9401:1997.
- ↑ "xml/svg/catalog: SVG DTDs" . sgml-data . Debian . 19 de mayo de 2013.
- 1 2 "xml/svg/catalog.xml" . sgml-data . Debian . 19 de mayo de 2013.
- ↑ GlobalTransCorp (28-02-2004). "tr9401.dtd: Extensión basada en catálogos XML V1.0 V1.0" . Debian .
- ↑ "Especificación HTML 4.01" . Consultado el 10 de septiembre de 2016 .
- 1 2 "13.2.6.4.1 El modo de inserción "inicial" . Estándar HTML . WHATWG .
- ↑ Sivonen, Henri (2005-04-08). " [ whatwg ] [ html5 ] tags, elements and generated DOM" . Archivo de la lista de correo de WHATWG .
- ↑ "13.1.1 El DOCTYPE" . Estándar HTML . WHATWG .
- ↑ "14.1 Escritura de documentos en sintaxis XML" . Estándar HTML . WHATWG .
- ↑ "14.2 Análisis de documentos XML" . Estándar HTML . WHATWG .