Caracteres especiales

El carácter apostrofe

Como todos saben existen ciertos caracteres que no se pueden representar directamente en XML , deben ser codificados; el SAT en el anexo 20 ha establecido como deben se codificados:

En particular se deberá tener cuidado de que aquellos casos especiales que se presenten en los valores especificados dentro de los atributos del archivo XML como aquellos que usan el carácter &, el carácter “, el carácter ‘, el carácter < y el carácter > que requieren del uso de secuencias de escape.

■       En el caso del & se deberá usar la secuencia &amp;

■       En el caso del “ se deberá usar la secuencia &quot;

■       En el caso del < se deberá usar la secuencia &lt;

■       En el caso del > se deberá usar la secuencia &gt;

■       En el caso del ‘ se deberá usar la secuencia &apos;

Ejemplos:

Para representar nombre=“Juan & José & “Niño”” se usará nombre=”Juan &amp; José &amp; &quot;Niño&quot;”

Actualmente la librería ya contempla la codificación de casi todos los caracteres, menos el carácter apostrofe, el cual es totalmente válido en XML, este carácter podría usarse directamente en el XML a diferencia de los otros (< > “ &).

Algunos de nuestros lectores se preguntan cómo trata la librería dicho carácter cuando está contenido en alguna parte del XML, y la respuesta es, depende de la versión:

  • En la versión de C# es representado como apostrofe ( ‘ )
  • En la versión de Delphi es representado como &amp;apos;

Lo curioso de todo esto es que un XML generado de cualquiera de las dos formas es reportado como válido por el validador del SAT.

Ya modificamos la librería para que el XML salga como lo solicita el SAT y dicho carácter ( ‘ ) sea codificado cumpliendo el anexo 20; esto saldrá en la siguiente versión, que esperamos que sea la versión 2011.03.19.

Personalmente no estamos de acuerdo con la codificación de dicho carácter por dos motivos:

  • Es totalmente válido usarlo directamente en el XML, el validador del SAT ni otros validadores que he usado reporta problemas con este aspecto.
  • Afecta los tiempos de generación del CFD, ya que incrementa algunas milésimas de segundo el proceso, no es algo importante, pero soy fanático del  performance.

Es por eso que hemos dejado activada la codificación por default, pero se puede desactivar, esto a través de un parámetro.

 

El carácter asterisco (*)

Hace algunos días un usuario nos reporto que un CFD generado usando la librería y que contenida el carácter en cuestión marca como inválido en el validador del SAT; nosotros  que siempre estamos pendientes de cada problema, decidimos hacer nuestras pruebas y efectivamente, el problema reportado existía.

Decidimos  resolver el problema, hicimos una revisión profunda al código de la librería, pero no encontramos nada, entonces decidímos validar el CFD con otros validadores www.admincfd.com.mx y lo curioso fue que dichos validadores nos reportaron que el CFD estaba bien; en ese momento empezamos a sospechar que el problema no estaba en la librería, ni en el XML generado, el problema estaba en el validador del SAT.

Al día siguiente hablamos con mi contacto en el SAT para saber si el tenia algún reporte sobre el problema, nos indicio que no, que el XML debería ser validado correctamente, nos pidió que le enviáramos un ejemplo y él lo iba a ver con la gente de tecnología, entonces decidimos resolver este enigma, preparamos unos ejemplos y decidímos probarlo en el SAT y capturar las imágenes para demostrar que nos estaba reportando el validador, que sorpresa nos llevamos que ahora el validador nos decía que el CFD que contenía ( * ) y que nos había reportado mal, hace un tiempo atrás, ahora estaba bien; pensando que nosotros estaba haciendo algo mal, le pedímos a otras 3 personas que validaran el XML y que sorpresa nos llevamos cuando ellos nos reportaron que a ellos también se los estaba dando como valido.

Para nosotros este caso muere ahí, pero nos quedan ciertas dudas acerca de la efectividad del validador del SAT ya que no es la primera vez que escuchamos este tipo de historias, que para ser honestos es la primera vez que nos pasa.

 

10 comentarios en «Caracteres especiales»

  1. Intente contactarte en otro post, pero no se si el comentario aparecera, me dio error con el codigo de seguridad que requieres y despues me aparece que el comentario esta duplicado, si te es posible contactarme por correo te lo agradecere.

    Saludos

  2. Hola
    Mi pac no reconoce el archivo .key
    Al generar el CSD En la contraseña quedó con un espacio en blanco al final, he timbrado con el cer y el key y la contraseña con el espacio al final y timbra sin problemas, pero ni mi pack ni el erp SAP reconocen mis certificados

  3. Hola, cuando pongo & en el xml , cuando envió como archivo adjunto el xml, me pone &amp;

    no se como solucionarlo

    Saludos y muchas Gracias

    • perdón pero yo había escrito otra cosa al enviar el post, ( ahora lo escribo el carácter ampersand con su nombre ) Ampersand amp; y llego solamente ampersand como se ve arriba, el tema es que cuando yo pongo ampersand amp; en el xml cuando envio el Archivo en un correo como adjunto, llega Ampersand amp;amp;

      Muchas gracias por la ayuda

    • Salvador,

      Realmente no existe ninguna diferencia, el estándar del SAT permite usar cualquier tipo de carácter, no existe diferencia con respecto a otras letras.

      Quedamos a tus órdenes

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*