Respuestas:
La standalone
declaración es una forma de decirle al analizador que ignore cualquier declaración de marcado en el DTD . El DTD se usa posteriormente solo para validación.
Como ejemplo, considere la <img>
etiqueta humilde . Si observa el DTD XHTML 1.0 , verá una declaración de marcado que le indica al analizador que las <img>
etiquetas deben estar VACÍAS y poseer src
y alt
atributos. Cuando un navegador va a través de un documento XHTML 1.0 y encuentra una <img>
etiqueta, se debe notar que el DTD requiere src
y alt
los atributos y añadirlos si no están presentes. También cerrará automáticamente la <img>
etiqueta, ya que se supone que está VACÍA. Esto es lo que significa la especificación XML por "declaraciones de marcado que pueden afectar el contenido del documento". Luego puede usar elstandalone
declaración para indicarle al analizador que ignore estas reglas.
Si su analizador realmente lo hace o no, esta es otra pregunta, pero un analizador de validación compatible con los estándares (como un navegador) debería hacerlo.
Tenga en cuenta que si no especifica una DTD, entonces la declaración independiente "no tiene sentido", por lo que no hay razón para usarla a menos que también especifique una DTD.
standalone=yes
, las declaraciones de marcado no se ignoran, sino que hacen que el documento sea XML no válido. ¿Te importaría si edito eso en la respuesta?
yes
y no
, donde no
es el valor predeterminado.standalone="yes"
significa que el procesador XML debe usar la DTD solo para validación. En ese caso, lo hará sin se utilizará para:
standalone="yes"
puede agregar restricciones de validez si el documento utiliza una DTD externa. Cuando el documento contiene elementos que requerirían la modificación del XML, como los valores predeterminados para los atributos, y standalone="yes"
se utiliza , el documento no es válido .standalone="yes"
puede ayudar a optimizar el rendimiento del procesamiento de documentos.Fuente: el pseudoatributo independiente solo es relevante si se utiliza un DTD
standalone
describe si el documento XML actual depende de una declaración de marcado externo.
W3C describe su propósito en "Lenguaje de marcado extensible (XML) 1.0 (quinta edición)":
Las declaraciones de marcado pueden afectar el contenido del documento, tal como se pasa de un procesador XML a una aplicación; ejemplos son valores predeterminados de atributos y declaraciones de entidad. La declaración de documento independiente, que puede aparecer como un componente de la declaración XML, indica si existen o no tales declaraciones que parecen externas a la entidad del documento o en las entidades de parámetros. [Definición: una declaración de marcado externo se define como una declaración de marcado que se produce en el subconjunto externo o en una entidad de parámetro (externa o interna, esta última se incluye porque los procesadores no validadores no están obligados a leerlos).
La intención de la standalone=yes
declaración es garantizar que la información dentro del documento pueda recuperarse fielmente basándose únicamente en la DTD interna, es decir, el documento puede "estar solo" sin referencias externas. La validación de un documento independiente garantiza que los procesadores que no validan tendrán toda la información disponible para analizar correctamente el documento.
La declaración independiente no sirve para nada si un documento no tiene DTD externa, y la DTD interna no tiene referencias de entidad de parámetro, ya que estos documentos ya están implícitamente independientes.
Los siguientes son los efectos reales del uso standalone=yes
.
Obliga a los procesadores a arrojar un error al analizar documentos con una DTD externa o referencias de entidades de parámetros, si el documento contiene referencias a entidades no declaradas en la DTD interna (con la excepción del texto de reemplazo de entidades de parámetros, ya que no se requiere que los procesadores no validen analizar esto); amp
, lt
, gt
, apos
, Y quot
son las únicas excepciones
Al analizar un documento no declarado como independiente, un procesador no validado puede dejar de analizar el DTD interno tan pronto como encuentre una referencia de entidad de parámetro. Declarar un documento como independiente obliga a los procesadores que no validan a analizar las declaraciones de marcado en la DTD interna incluso después de ignorar una o más referencias de entidades de parámetros.
Obliga a los procesadores de validación a arrojar un error si se encuentra alguno de los siguientes en el documento, y sus declaraciones respectivas están en el DTD externo o en el texto de reemplazo de entidad de parámetro:
amp
, lt
, gt
, apos
, y quot
)Un procesador sin validación podría considerar recuperar el DTD externo y expandir todas las referencias de entidades de parámetros para documentos que no son independientes, aunque no tenga la obligación de hacerlo, es decir, la configuración standalone=yes
podría mejorar teóricamente el rendimiento de los procesadores sin validación (alerta de spoiler: probablemente no hará la diferencia).
Las otras respuestas aquí son incompletas o incorrectas, la idea errónea principal es que
La declaración independiente es una forma de decirle al analizador que ignore cualquier declaración de marcado en el DTD. El DTD se usa posteriormente solo para validación.
standalone = "yes" significa que el procesador XML debe usar la DTD solo para validación.
Todo lo contrario, declarar un documento como independiente realmente obligará a un procesador no validado a analizar las declaraciones internas que normalmente debe ignorar (es decir, aquellas después de una referencia de entidad de parámetro ignorada). Los procesadores sin validación aún deben usar la información en la DTD interna para proporcionar valores de atributo predeterminados y normalizar los atributos tokenizados, ya que esto es independiente de la validación.