2017-10-09 9 views
1

Mon patron m'a dit d'être sûr de cela, car il y a une petite possibilité que le personnage puisse avoir une sortie étrange, quelque chose comme 'solución' sortie 'soluci & 3n'.Quels sont les moyens les plus sûrs pour accentuer les caractères dans les transformations xsl?

Il y a quelques mots qui doivent être accentués, c'est le code original dans xsl, il est si simple:

<table:table-cell table:style-name="TablaIkus.FXI" office:value-type="string"> 
        <text:p text:style-name="PIntBodyLeft">Fecha inicio cómputo intereses</text:p> 
       </table:table-cell> 

La chose est que la sortie affiche le mot correctement sur le fichier .odt final:

enter image description here

Mais, au cas où ... Il y a une fonction pour échapper à des accents pour éviter une sortie étrange?

+0

Je vous écris ce commentaire pour essayer d'obtenir une mise à jour et à apparaître sur les nouvelles questions « Je ne sais pas si cela va marcher ' – jvillegas

+0

On ne sait pas exactement ce que vous demandez: le XML offre plusieurs représentations sémantiquement équivalentes de chaque caractère.Vous posez des questions sur les représentations à utiliser dans les documents sources? quelle influence cette représentation apparaît dans les documents de résultat? –

+0

Salut, merci pour la réponse Eh bien, je ne suis pas originaire de l'anglais, j'ai essayé de poser la question de la meilleure façon dont je peux le faire.Je parle de tous les accents áàéèíìóòúù, et de même ces caractères accentués en majuscules, et le meilleur moyen de montrer la sortie sur un document .odt, pour montrer exactement le même 'áàéèíìóòúù' en évitant d'éventuels problèmes. – jvillegas

Répondre

2

Mais, au cas où ... Il y a une fonction pour échapper à des accents pour éviter une sortie étrange?

XML prend pratiquement tout Unicode comme jeu de caractères. Les caractères accentués ne nécessitent pas de traitement spécial, ni en XML en général ni en XSLT en particulier. Par conséquent, non, il n'y a pas de fonction pour échapper aux accents ou aux caractères accentués, et aucun n'est nécessaire.

Cependant, votre question dénote un malentendu. Comme je l'ai écrit dans les commentaires, le XML offre plusieurs manières sémantiquement équivalentes de représenter le même caractère. Cela s'applique à vos documents d'entrée XML, vos documents de feuille de style et vos documents de résultat pour la méthode de sortie "xml". Par exemple, si le codage du document le supporte, alors le caractère ó ("LETTRE MINUSCULE LA A DROITE", comme Unicode le nomme) peut être directement transmis via sa représentation dans le codage de caractères du document, mais il peut aussi être représenté en tant qu'entité de caractères XML sous l'une des deux formes suivantes: &#xf3; ou &#243;.

Un processeur XSLT ne commet aucune erreur s'il sort du XML contenant des représentations différentes de certains caractères que ceux utilisés dans l'entrée. Dans certaines circonstances, il peut en fait avoir besoin de le faire. S'il effectue effectivement une telle conversion, cela n'altère en rien la signification du document. Il semble que vous souhaitiez éviter de telles conversions, mais ce n'est pas un problème dont vous devriez vous inquiéter. Cependant, assurez-vous que vos documents d'entrée et de feuille de style déclarent avec précision leur codage de caractères dans leurs déclarations XML. Par exemple,

<?xml version="1.1" encoding="UTF-8"?> 

Si vos documents ne portent pas une déclaration XML ou si elle ne déclare pas un codage alors être certain qu'ils sont codés en utilisant l'encodage par défaut de XML, UTF-8. La fausse représentation de l'encodage dans vos outils XML est en effet une manière de brouiller les caractères de vos documents.

0

Vous avez raison de dire que les choses peuvent toujours mal tourner avec les caractères accentués. Nous avons toujours des problèmes avec les caractères accentués dans les formulaires Web et avec les caractères accentués dans le courrier électronique. Tout fonctionne si tout est configuré correctement, mais vous n'avez pas toujours le contrôle sur tout et il y a beaucoup de possibilités pour que les choses aillent mal.

Les références de caractères numériques comme &#243; constituent une défense contre le transcodage incorrect, mais elles ont le problème qu'elles ne survivent pas par le biais de transformations XSLT (ou de nombreuses autres opérations de traitement XML).Dans le code XSLT (et pour cette matière en Javascript) Je l'ai pris à l'aide de constructions comme

<xsl:variable name="nbsp" select="codepoints-to-string(160)"/>