6
votes

XSLT: convertir des caractères à leur représentation hexadécimale unicode

Ceci est mon entrée HTML (xhtml) xxx

Je souhaite créer un noeud XML comme le suivant xxx

Comment obtenir Le personnage Unicode Hexadecimal Valude (F0D8) à partir du HTML: Suggérez un modèle pour cela.


7 commentaires

Ai-je compris cela correctement: vous souhaitez transformer un document HTML vers un document XML via XSLT? Cela fonctionne dans l'inverse.


Oui. Comment lire le caractère dans HTML XIA XSLT .. cela existe une fonction


@Musikk: Pourquoi pas? Si c'est xhtml, vous pouvez toujours le transformer


@Lukas: Vous devriez alors demander explicitement xhtml. Il existe des efforts entre HTML et XHTML lorsqu'il s'agit de traitement. En supposant qu'ils soient à distance la même chose est imho stupide.


@Musikk: Je sais. Vous êtes ce gars: xkcd.com/386 :-)


@Lukas: bâillement ... Vous devez être nouveau ici.


@Musikk: Tu as probablement raison


3 Réponses :


3
votes

dans XSLT 2.0 Vous pouvez obtenir la valeur numérique du caractère à l'aide de la fonction string-to-codePoints () . Vous devrez écrire une fonction pour la convertir en heex vous-même, mais ce n'est pas difficile.


0 commentaires

6
votes

Je faisais exactement la même chose que Michael Kay suggéré dans His Réponse :) Quoi qu'il en soit, voici mon code

<?xml version="1.0" encoding="UTF-8"?>
<sym char="F0D8"/>


2 commentaires

J'ai essayé ce code, son affichage d'erreur: "Le premier argument à la fonction Java non statique" StringtOCodePoints 'n'est pas une référence d'objet valide. "


@Vignesh: ça marche pour moi. Quel processeur XSLT utilisez-vous?



0
votes

Il y a une erreur dans la fonction @ Marcos: au lieu de si ($ in gt 16) devrait être si ($ in ge 16) (plus grand puis ou égal) . Les mauvaises valeurs hexadécimales ont été générées par exemple pour le numéro 259.

La fonction complète doit ressembler à ceci: xxx


1 commentaires

En fait, la chose intelligente à faire est de commencer par calculer le quotient; Ensuite, procédez avec si $ q, f ($ q) . L'autre test, $ dans EQ 0 est également redondant.