Tecnologías de la información, Internet, programación web, TI, Hi-Tech,…. Reglas de nomenclatura XML

Durante mucho tiempo, la norma ha prescrito la inserción de comillas regulares en texto HTML utilice la construcción "Para etiquetas interiores, se utilizan comillas" para indicar atributos.

Sin embargo, todavía no me he encontrado con un navegador que no muestre el símbolo simple "FUERA de cualquier etiqueta" entre comillas. Así que díganme, queridos colegas, ¿tal vez usar "etiquetas externas es simplemente un tedio que nadie necesita?". ¿Puedes escribir tranquilamente y sin más preámbulos "? Especialmente en textos donde hay muchas comillas y el cumplimiento de estrictas reglas de diseño (con respecto al uso correcto de las comillas nacionales) es irrelevante.

En mi humilde opinión, mucha gente hace esto... pero la pregunta no está del todo clara: si entiendes que según los estándares necesitas escribir comillas como ", pero es vago, a pesar de que muchos sitios funcionan así, entonces, ¿qué ¿Esperas escuchar? Creo que se trata de eso, nadie sabe si la visualización de comillas será compatible con las nuevas versiones de los navegadores, por lo que lo más probable es que podamos darte una recomendación obvia: si no quieres tener problemas en el futuro, Cumple con los estándares al 100% :) Pero esto ya lo sabes o estás esperando la confirmación: sí, es aburrido, eso es todo, olvídalo, y en 10 años todo será igual, yo (Microsoft, Mozilla, etc.) ¿garantizar?

Lynn "El hombre del café"[expediente]
sí, por cierto... ahora es útil leer, en ninguna parte se dice que las comillas deben representarse en la forma "
http://www2.stack.ru/~julia/HTML401/charset.html:

Algunos autores utilizan una referencia de entidad de carácter """ para codificar casos de comillas dobles (") porque este carácter se puede utilizar para separar valores de atributos.

sobre el hecho de que necesita usar la entidad, solo dice acerca de y &:

Si el autor desea colocar el carácter "" (código decimal ASCII 62) en el texto.

Para evitar confusión con las referencias de caracteres (la marca de inicio de una referencia de caracteres), se debe utilizar la referencia "&" (código decimal ASCII 38) en lugar del carácter "&". Además, la referencia "&" también debe usarse en los valores de los atributos, ya que se permiten referencias de caracteres dentro de los valores de los atributos CDATA.

Pero sólo espero algo parecido a la respuesta de Lynn: que en realidad no existe tal estándar. Ni siquiera se me ocurrió: mi información proviene de libros de texto populares y por razones de "todo el mundo lo hace".

U otra opción: pero si sigue nuevos estándares que no he encontrado en mi práctica, como xhtml (exactamente, verifiqué xhtml), entonces este truco no funcionará. Por tanto, no hay necesidad de crear problemas con la portabilidad del código HTML escrito.

O finalmente: ¿cómo lo haces tú mismo?

&, por cierto, plantea una pregunta similar. El documento anterior dice "para evitar confusiones". Pero la confusión sólo es posible si & va seguido de uno de los códigos proporcionados. ¿Qué pasa si es, digamos, una URL como "..../script?A=1&B=2" ? ¿Estoy arriesgando algo si especifiqué por error esta URL como href (que, por supuesto, funciona correctamente durante la prueba)? Cualquier cosa que no sea la situación extremadamente improbable de que dentro de 10 años (cuando el sitio esté desactualizado o ya haya sido reescrito diez veces) aparezca una entidad con el extravagante nombre &B sin uno definitivo; ? En otras palabras, ¿con qué cuidado deberían comprobarse todos estos casos?

Daniel, si estás seguro de que no tienes problemas con los códigos existentes, entonces puedes escribir simplemente &. Si aparece en el futuro nuevo código- Entonces, creo, no se declarará explícitamente en la especificación HTML 4.01, por lo que no debería afectar a un documento normalmente declarado. ¿O espera respaldar estándares futuros mediante cambio sencillo esquemas del documento?

Daniel Alievsky[expediente]
En XML, las comillas normales como texto tampoco suponen ningún problema (en XHTML, por supuesto). En mi humilde opinión, las citas en mi humilde opinión generalmente se traducen a "por una sola razón: no desea escribir dos funciones para convertir el texto a una forma segura al sustituirlo en XML/HTML/XHTML.

  • Traducción
  • Tutorial

Inyecciones de SQL, falsificación de solicitudes entre sitios, XML corrupto... Cosas aterradoras de las que a todos nos gustaría estar protegidos, pero solo queremos saber por qué está sucediendo. Este artículo explica el concepto fundamental detrás de todo: cadenas y manejo de cadenas dentro de cadenas.

El principal problema es solo texto. Sí, sólo el texto: ese es el principal problema. Casi todo en sistema informático representado por texto (que, a su vez, está representado por bytes). ¿Es posible que algunos textos estén destinados a ordenadores, mientras que otros estén destinados a personas? Pero ambos siguen siendo texto. Para entender de qué estoy hablando, aquí tienes un pequeño ejemplo:
Homo Sapiens Supongamos que existe el texto en inglés, que no quiero traducir al ruso.
No lo creerás: esto es texto. Algunas personas lo llaman XML, pero es sólo texto. Puede que no sea adecuado mostrárselo al profesor. en Inglés, pero sigue siendo solo texto. Puedes imprimirlo en un cartel e ir a mítines con él, puedes escribirlo en una carta a tu madre... esto es texto.

Sin embargo, queremos que ciertas partes de este texto tengan algún significado para nuestra computadora. Queremos que la computadora pueda extraer el autor del texto y el texto en sí por separado para que podamos hacer algo con él. Por ejemplo, convierta lo anterior a esto:
Supongamos que está el texto en inglés, que no quiero traducir al ruso, del Homo Sapiens.
¿Cómo sabe la computadora cómo hacer esto? Bueno, porque muy convenientemente envolvimos ciertas partes del texto con palabras especiales entre paréntesis divertidos, como y. Una vez que hemos hecho esto, podemos escribir un programa que busque estas partes específicas, extraiga el texto y lo use para algún invento nuestro.

En otras palabras, utilizamos ciertas reglas en nuestro texto para indicar algún significado especial que otra persona, siguiendo las mismas reglas, podría usar.
Bien, esto no es tan difícil de entender. ¿Qué pasa si queremos usar estos paréntesis divertidos que tienen algún significado especial en nuestro texto, pero sin usar este mismo significado? Algo como esto:
Homo sapiens< n and y >
Los caracteres "" no son nada especial. Se pueden utilizar legalmente en cualquier lugar y en cualquier texto, como en el ejemplo anterior. Pero ¿qué pasa con nuestra idea de palabras especiales, como? ¿Significa esto que también es algún tipo de palabra clave? En XML, quizás sí. O tal vez no. Esto es ambiguo. Dado que las computadoras no son muy buenas para lidiar con ambigüedades, algo puede terminar dando un resultado inesperado si no ponemos los puntos sobre las íes y resolvemos las ambigüedades.
Este dilema se puede resolver reemplazando los símbolos ambiguos por algo que no sea ambiguo.
Homo Sapiens Las matemáticas básicas nos dicen que si x< n and y >n, x no puede ser mayor que y.
Ahora el texto debería ser completamente inequívoco. "".
La definición técnica de esto es blindaje, evitamos Símbolos especiales, cuando no queremos que tengan un significado especial.
escapar |iˈskāp| [sin obj. ] liberarse [ con obj. ] no darse cuenta / no recordar [...] [ con obj. ] IT: una razón para ser interpretado de manera diferente [...]
Si ciertos caracteres o secuencias de caracteres en un texto tienen significados especiales, entonces debe haber reglas que especifiquen cómo manejar situaciones en las que esos caracteres deben usarse sin invocar su significado especial. O, en otras palabras, escapar responde a la pregunta: “Si estos símbolos son tan especiales, ¿cómo puedo utilizarlos en mi texto?”.
Como puede ver en el ejemplo anterior, el signo comercial (&) también es un carácter especial. Pero ¿y si queremos escribir?


Si sus usuarios son buenos y amables, publicarán citas de antiguos filósofos y los mensajes se verán así:

Publicado por Platón el 2 de enero, 15:31

Se dice que dije: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat".


Si los usuarios son personas inteligentes, probablemente hablarán de matemáticas y los mensajes serán así:

Publicado por Pascal el 23 de noviembre a las 04:12

Las matemáticas básicas nos dicen que si x< n and y >n, x no puede ser mayor que y.


Hmm... Estos profanadores de nuestros brackets otra vez. Bien con punto tecnico Puede que sean ambiguos desde el punto de vista visual, pero el navegador nos lo perdonará, ¿verdad?


Vale, PARA, ¿qué diablos? ¿Algún bromista introdujo etiquetas javascript en tu foro? Cualquiera que vea este mensaje en su sitio ahora está descargando y ejecutando scripts en el contexto de su sitio que pueden hacer quién sabe qué. Y esto no es bueno.

No debe tomarse literalmente. En los casos anteriores, queremos decirle de alguna manera a nuestra base de datos o navegador que esto es solo texto, ¡no hagas nada con él! En otras palabras, queremos "eliminar" los significados especiales de todos los caracteres especiales y palabras clave de cualquier información proporcionada por el usuario, porque no confiamos en él. ¿Qué hacer?

¿Qué? ¿Qué estás diciendo, muchacho? Oh, ¿dices "protección"? Y tienes toda la razón, ¡toma una galleta!
Si aplicamos el escape a los datos del usuario antes de fusionarlos con la consulta, entonces el problema se resuelve. Para nuestras consultas de base de datos sería algo como:
$nombre = $_POST["nombre"]; $nombre = mysql_real_escape_string($nombre); $consulta = "SELECCIONE número_teléfono DE los usuarios DONDE nombre = "$nombre""; $resultado = mysql_query($consulta);
Sólo una línea de código, pero ahora ya nadie puede "hackear" nuestra base de datos. Veamos nuevamente cómo se verán las consultas SQL, dependiendo de la entrada del usuario:
Alex
SELECCIONE el número de teléfono DE los usuarios DONDE nombre = "Alex"
Mc Donalds
SELECCIONE el número de teléfono DE los usuarios DONDE nombre = "Mc\"Donalds"
Joe"; usuarios de DROP TABLE; --
SELECCIONE el número de teléfono DE los usuarios DONDE nombre = "Joe\"; usuarios de DROP TABLE; --"
mysql_real_escape_string coloca indiscriminadamente una barra diagonal delante de cualquier cosa que pueda tener algún significado especial.


Aplicamos la función htmlspecialchars a todos los datos del usuario antes de generarlos. Ahora el mensaje de la plaga se ve así:

Publicado por JackTR el 18 de julio a las 12:56


Tenga en cuenta que los valores recibidos de los usuarios en realidad no están "dañados". Cualquier navegador analizará esto como HTML y mostrará todo en forma correcta.

Lo que nos lleva de nuevo a... Todo lo anterior demuestra un problema común a muchos sistemas: el texto dentro del texto debe tener caracteres de escape si se supone que no debe tener caracteres especiales. Al colocar valores de texto en SQL, se deben escapar de acuerdo con las reglas de SQL. Al colocar valores de texto en HTML, se deben escapar mediante reglas HTML. Al colocar valores de texto en (nombre de la tecnología), se deben utilizar caracteres de escape de acuerdo con las reglas de (nombre de la tecnología). Eso es todo, por supuesto, existen otras formas de manejar la entrada del usuario que pueden contener o no caracteres especiales:
  • Validación
    Puede comprobar si la entrada del usuario coincide con alguna especificación determinada. Si requiere que se ingrese un número y el usuario ingresa algo más, el programa debe informar al usuario y cancelar la entrada. Si todo esto está organizado correctamente, entonces no hay riesgo de encontrar "usuarios de DROP TABLE" donde se suponía que el usuario debía ingresar "42". Esto no es muy práctico para evitar inyecciones de HTML/SQL, porque... A menudo es necesario aceptar texto en formato libre que puede contener trucos. Normalmente, la validación se utiliza además de otras medidas.
  • Sanitización
    También puedes eliminar “silenciosamente” cualquier símbolo que consideres peligroso. Por ejemplo, simplemente elimine cualquier cosa que parezca una etiqueta HTML para evitar que se agregue a su foro. El problema es que puedes eliminar partes del texto perfectamente legales.
    Declaraciones SQL preparadas
    Hay funciones especiales que hacen lo que queríamos: hacer que la base de datos comprenda las diferencias entre la consulta SQL en sí y la información proporcionada por los usuarios. En PHP se ven así:
    $stmt = $pdo->prepare("SELECCIONE el número de teléfono DE los usuarios DONDE nombre =?"); $stmt->execute($_POST["nombre"]);
    En este caso el envío se produce en dos etapas, distinguiendo claramente entre solicitud y variables. La base de datos tiene la capacidad de comprender primero la estructura de la solicitud y luego completarla con valores.

  • En el mundo real, todos estos se utilizan juntos para diferentes niveles de protección. Siempre debe utilizar la validación para asegurarse de que el usuario esté ingresando los datos correctos. Luego podrá (pero no es obligatorio) escanear los datos ingresados. Si un usuario claramente está intentando venderle algún script, simplemente puede eliminarlo. Entonces, siempre debes escapar de los datos del usuario antes de colocarlos en una consulta SQL (lo mismo ocurre con HTML).

¿Existe un personaje de escape para doble comillas en xml? Quiero escribir una etiqueta como:

pero si pongo " entonces significa que la línea ha terminado. Necesito algo como esto (c++):

Printf("Cita = \" ");

¿Hay algún carácter que deba escribirse antes de la comilla doble para escapar?

Una respuesta nueva y mejorada a una vieja pregunta frecuente...

Cuándo escapar de las comillas dobles en XML

Puede aparecer una comilla doble (") no hay salida :

    En contenido de texto XML:

    Él dijo: "No me cites".

    En atributos XML separados por comillas simples ("):

    Nota: escapar entre comillas simples (") tampoco requiere escape:

Comilla doble ("") debe estar protegido :

    En atributos XML separados por comillas dobles:

Línea de fondo

La comilla doble (") debe expresarse como "en XML" sólo en contextos muy limitados.

Si solo necesita probar algo rápidamente, aquí tiene una solución rápida y sucia. Utilice comillas simples para el valor del atributo:

En C++ puedes utilizar la API ATL EscapeXML. Esta es la forma correcta de manejar caracteres especiales...

Estos son los caracteres comunes que deben tener caracteres de escape en XML, comenzando con comillas dobles:

  • las comillas dobles (") se escapan a "
  • El signo comercial (&) se escapa antes de &
  • las comillas simples (") se escapan a "
  • menos (
  • Otros han respondido sobre cómo manejar el escape específico en este caso.

    La respuesta más amplia es no intentar hacerlo usted mismo. Utilice API XML: hay muchas disponibles para casi todas las plataformas de programación modernas.

    Las API XML manejarán cosas como esta automáticamente, haciéndolo mucho es más difícil equivocarse. A menos que usted mismo escriba una API XML, rara vez tendrá que preocuparse por esos detalles.

    Continuamos nuestro estudio de XML nuevamente y en este artículo nos familiarizaremos con construcciones XML como instrucciones de procesamiento, comentarios, atributos y otros elementos XML. Estos elementos son básicos y le permiten marcar de manera flexible, estrictamente de acuerdo con la norma, documentos de absolutamente cualquier complejidad.

    Ya hemos comentado parcialmente algunos puntos, como las etiquetas XML, en el artículo anterior “”. Ahora tocaremos este tema nuevamente y lo examinaremos con más detalle. Esto se hace específicamente para que le resulte más fácil obtener una imagen completa de las construcciones XML.

    Elementos XML. Elementos XML vacíos y no vacíos

    Como se mencionó en el artículo anterior, las etiquetas en XML no solo marcan texto, como es el caso en HTML, sino que resaltan elementos individuales (objetos). A su vez, los elementos organizan jerárquicamente la información de un documento, lo que a su vez los convirtió en las principales unidades estructurales del lenguaje XML.

    En XML, los elementos pueden ser de dos tipos: vacíos y no vacíos. Los elementos vacíos no contienen ningún dato, como texto u otras construcciones. A diferencia de los elementos vacíos, los elementos no vacíos pueden contener cualquier dato, como texto u otros elementos y construcciones XML. Para comprender el objetivo de lo anterior, veamos ejemplos de elementos XML vacíos y no vacíos.

    Elemento XML vacío

    Elemento XML no vacío

    Contenido del elemento...

    Como podemos ver en el ejemplo anterior, la principal diferencia entre elementos vacíos y no vacíos es que constan de una sola etiqueta. Además, también vale la pena señalar que en XML todos los nombres distinguen entre mayúsculas y minúsculas. Esto significa que los nombres myElement, MyElement, MYELEMENT, etc. difieren entre sí, por lo tanto este momento Vale la pena recordarlo de inmediato para evitar errores en el futuro.
    Entonces, descubrimos los elementos. Ahora pasemos al siguiente punto, que es la organización lógica de los documentos XML.

    Organización lógica de documentos XML. Estructura de árbol de datos XML

    Como recordará, la construcción principal del lenguaje XML son los elementos, que pueden contener otras construcciones anidadas y así formar una estructura jerárquica en forma de árbol. En este caso, el elemento padre será la raíz y todos los demás elementos secundarios serán las ramas y hojas del árbol XML.

    Para que sea más fácil comprender la esencia de lo anterior, veamos siguiente imagen con un ejemplo.

    Como podemos ver, organizar un documento XML como un árbol es una estructura bastante sencilla de procesar. Al mismo tiempo, la complejidad expresiva del árbol en sí es bastante grande. La representación de árbol es la forma más óptima de describir objetos en XML.

    Atributos XML. Reglas para escribir atributos en XML

    En XML, los elementos también pueden contener atributos con valores asignados, que se colocan entre comillas simples o dobles. El atributo de un elemento se establece de la siguiente manera:

    En este caso se utilizó un atributo con el nombre “atributo” y el valor “valor”. Vale la pena señalar de inmediato que el atributo XML debe contener algún valor y no puede estar vacío. De lo contrario, el código será incorrecto desde el punto de vista XML.

    También conviene prestar atención al uso de comillas. Los valores de los atributos pueden estar entre comillas simples o dobles. Además, también es posible utilizar algunas comillas dentro de otras. Para demostrarlo, considere los siguientes ejemplos.

    Antes de ver otras construcciones XML, también vale la pena señalar que los caracteres especiales como el signo "&" o los corchetes angulares "" no se pueden utilizar como valores al crear atributos. Estos caracteres están reservados como caracteres de control (“&” es una entidad y “” abre y cierra una etiqueta de elemento) y no se pueden utilizar en su “forma pura”. Para utilizarlos, es necesario recurrir a la sustitución de caracteres especiales.

    Instrucciones de procesamiento XML (instrucciones de procesamiento). declaración XML

    XML tiene la capacidad de incluir instrucciones en un documento que contienen información específica para aplicaciones que procesarán un documento en particular. Las instrucciones de procesamiento en XML se crean de la siguiente manera.

    Como puede ver en el ejemplo anterior, en XML, las instrucciones de procesamiento están entre comillas y un signo de interrogación. Esto se parece un poco al habitual que vimos en las primeras lecciones de PHP. La primera parte de la instrucción de procesamiento especifica la aplicación o sistema al que está destinada la segunda parte de esta instrucción o su contenido. Sin embargo, las instrucciones de tramitación sólo son válidas para aquellas solicitudes a las que van dirigidas. Un ejemplo de instrucción de procesamiento podría ser la siguiente instrucción.

    Vale la pena señalar que XML tiene una construcción especial que es muy similar a una instrucción de procesamiento, pero en sí no lo es. Se trata de sobre una declaración XML que transmite al procesador software alguna información sobre las propiedades del documento XML, como la codificación, la versión del idioma en el que está escrito este documento etc.

    Como puede ver en el ejemplo anterior, la declaración XML contiene los llamados pseudoatributos, que son muy similares a los atributos normales de los que hablamos anteriormente. El hecho es que, por definición, una declaración XML y las instrucciones de procesamiento no pueden contener atributos, por lo que estas declaraciones se denominan pseudoatributos. Vale la pena recordar esto en el futuro para evitar varios errores.

    Ya que nos hemos ocupado de los pseudoatributos, veamos lo que significan.

    • Codificación: es responsable de codificar el documento XML. Normalmente se utiliza la codificación UTF8.
    • Versión: la versión del lenguaje XML en el que está escrito este documento. Normalmente se trata de XML versión 1.0.

    Bien, pasemos ahora a la parte final del artículo y consideremos construcciones XML como comentarios y secciones CDATA.

    ¡Hola, queridos visitantes del sitio! Continuaremos con el tema del lenguaje de marcado XML y veamos el uso de atributos. Los atributos pueden estar presentes en elementos XML, al igual que en HTML. Los atributos proporcionan Información adicional sobre el elemento.

    Atributos XML

    EN atributos HTML proporcionar información adicional sobre los elementos:

    Los atributos XML deben estar entre comillas

    Valores atributos en xml siempre debe ir entre comillas. Se pueden utilizar comillas simples y dobles. Para indicar el género del elemento persona, puedes escribirlo así:

    Si el valor del atributo contiene comillas dobles, puede utilizar comillas simples, como en este ejemplo:

    Elementos XML frente a atributos

    Eche un vistazo a los siguientes ejemplos:

    Victoria
    Petrová

    femenino
    Victoria
    Petrová

    En el primer ejemplo, el sexo es un atributo. En este último, el sexo es un elemento. Ambos ejemplos proporcionan la misma información.

    No existen reglas sobre cuándo usar atributos y cuándo usar elementos. Los atributos son útiles en HTML. En XML, recomiendo evitarlos. Utilice elementos en su lugar.

    Mi forma favorita

    Los siguientes tres documentos XML contienen exactamente la misma información:

    El atributo de fecha XML se utiliza en el primer ejemplo:

    El elemento de fecha extendida se usa en el tercero: (ESTA ES MI MANERA FAVORITA):



    10
    01
    2008

    Pedro
    sveta
    Recordatorio

    ¿Evitar los atributos XML?

    Algunos de los problemas con el uso de atributos xml:

    • los atributos no pueden contener múltiples valores (los elementos pueden)
    • los atributos no pueden contener estructuras de árbol (los elementos sí pueden)
    • los atributos son más difíciles de extender (para cambios futuros)

    No lo hagas así:


    Atributos XML para metadatos


    Vasya
    sveta
    Recordatorio
    ¡No olvides llamarme mañana!


    sveta
    Vasya
    Re: Recordatorio
    DE ACUERDO

    Los atributos de identificación anteriores se utilizan para la identificación. notas diferentes. No forman parte de la nota en sí.

    Lo que intento decir aquí es que los metadatos (datos sobre datos) deben almacenarse como atributos xml y los datos en sí deben almacenarse como elementos.

    ¡Gracias por su atención!.