Boo
@_ö
(18:41)  Bienvenue ! - Inscrivez vous pour poster ! -
@Boo, Folco + 12 inconnu(s)

Login :  Mot de passe :      Se souvenir de moi.  Mot de passe perdu ?
/!\:: Cliquez ici pour vous inscrire et poster, créer des sujets ou des forums ! ::/!\
 « - 1/1 - » :: Pages
 Index » Forum grAphisme :: Forum informatique & développement » XML, (X)HTML, CSS, JavaScript (18r) » Caractèress non imprimables et XML
./Post de départ - Caractèress non imprimables et XML
14.09.2006 - 923
18:06  Jonas - Posté : 01-04-2011  M
Bonsoir,

J'ai besoin d'envoyer des caractères non imprimables à un port série via un programme dédié, je n'ai pas la main sur le programme.
Le programme parse un fichier xml avec la syntaxe suivante:

<facturette>
<libre>texte libre</libre>
</facturette>


Quand j'ai besoin d'envoyer des séquences de caractères non imprimables au port série (en fait au périphérique qui est derrière, à savoir une imprimante à reçu) je passe par les entités xml, par exemple: &#x1B;t, jusuqu'à là ça marche très bien.

Maintenant comme ces commandes sont fastidieuses à taper (souvent synonyme de fautes de frappe) donc j'ai eu l'idée de les déclarer en tant qu'entité XML et c'est là que ça coince, les valeurs ASCII non imprimables n'ont pas l'air de passer.

Voici ce que j'ai mis dans l'entête de mon fichier xml:

<!DOCTYPE facturette SYSTEM "billentities.dtd">


et voici ce qu'il y a dans mon fichier DTD

<!ENTITY accents "&#x1B; t ">


quand je fais un appel à &accent; dans mon fichier xml rien ne ce passe. Quand je remplace les valeurs hexa dans ma DTD par des valeurs imprimables alors ça passe.

Avez-vous une idée de comment je pourrais m'en sortir?

Merci.
./Publicité AdSense
./1
16.06.2001 - 60720
18:17  squalyl - Posté : 01-04-2011  M
avec cdata?

<facturette>
<libre><![CDATA[texte libre]]></libre>
</facturette>
./2
15.06.2003 - 7723
19:39  GoldenCrystal - Posté : 01-04-2011  @_ö
Même problème que l'autre fois je parie (je sais plus de qui, mais le topic devrait pas être trop dur à trouver...)
Ton dtd est externe... embarrassed
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./3
16.06.2003 - 25898
20:18  Sally - Posté : 01-04-2011  F
C'est bizarre, normalement ce que tu as écrit dans ton fichier DTD devrait marcher... mais peut-être que le parseur XML du programme que tu utilises est buggué. Est-ce que ça marche si tu remplaces ce code hexa par un autre code hexa mais correspondant à un caractère imprimable ? juste histoire de tester d'où vient le problème.

Tu peux peut-être essayer d'insérer littéralement le caractère non-imprimable dans ton fichier DTD (avec un éditeur hexa) à la place de la référence hexadécimale mais je ne sais pas si ça résoudra le problème.
avatar« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Forum Cultures du mondeforum littéraire
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``[u]·[/u] powaaaaaaaaa ! #love#
./4
14.09.2006 - 923
21:04  Jonas - Posté : 01-04-2011  M
@squalyl: justement non je veux externaliser ces données pour pas avoir à les retaper à chaque fois. Elles passent sans problème "en brut" (&#valeur_hexawink entre mes balises libres sinon. C'est juste quand je les fait passer par la DTD que ça plante.

@Sally: le parseur me laisse passer les caractères hexa en brut quand je les mets directement dans le fichier xml donc sauf erreur je ne pense pas que ça puisse venir de là (si?).
./5
15.06.2003 - 7723
21:07  GoldenCrystal - Posté : 01-04-2011  @_ö
GoldenCrystal (./2) :
Ton dtd est externe... embarrassed
(Bis)
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./6
16.06.2003 - 25898
21:14  Sally - Posté : 01-04-2011  F
(GoldenCrystal > ça fait quoi que la DTD soit externe ? si son parseur ne prenait pas en compte les entités définies dans des DTD externes ça ne marcherait pas non plus quand il utilise des caractères imprimables, donc ça ne peut pas être ça le problème, du coup je ne vois pas ce que tu veux dire)

JoNas > ça dépend, il se peut que ton parseur n'aime pas le fait qu'une entité apparaisse dans une autre entité (bien que normalement ce soit correct en XML), c'est pour ça que je suggérais de tester en écrivant sous forme d'entité un caractère imprimable. Si ça ne marche pas c'est que le problème n'est pas lié aux caractères non-imprimables.

Je m'explique, essaie de mettre dans ta DTD :
<!ENTITY accents "&#x58;">

normalement &accents; devrait maintenant être remplacé par la lettre X. Si c'est pas le cas c'est que le problème n'a rien à voir avec les caractères non-imprimables mais est lié au fait d'utiliser une entité dans une entité. À ce moment-là tu peux peut-être le résoudre en insérant le caractère non-imprimable directement dans la DTD à coup d'éditeur hexa.

edit : mince j'avais pas vu que quand on tape une entité hexa dans un post ça la remplace par le caractère en question à l'affichage ^^
Edité par Sally le 01-04-2011 à 23:35:23.
avatar« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Forum Cultures du mondeforum littéraire
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``[u]·[/u] powaaaaaaaaa ! #love#
./7
15.06.2003 - 7723
21:45  GoldenCrystal - Posté : 01-04-2011  @_ö
Ah oui, en fait en lisant tout à l'heure, j'avais compris que ça marchait quand il mettait les valeurs imprimables à la place des entités en fait… Et quand il t'as répondu après ça disait ce que j'avais compris plus tôt du coup j'ai pas fait gaffe. sorry
Cela dit, je testerais quand même avec un DTD embarqué pour être sur tongue

Après, les entités définies par un code numérique, c'est sensé fonctionner, donc c'est peut-être juste un problème au niveau du parser utilisé… (Quel est-il si tu le connais ?)
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./8
14.09.2006 - 923
00:28  Jonas - Posté : 02-04-2011  M
ça fonctionne avec des caractères imprimables dans les entities, donc du coup ça doit être le parseur. je ne connais pas le parseur mais l'appli est développée en .NET C# donc je pense sans trop me tromper que ça doit être du M$ derrière tout ça. Dans ce cas là que faudrait-il changer à ce parseur pour qu'il accepte les caractères non imprimables? faire une table de correspondance "en dur"? changer l'encodage?
./9
18.06.2001 - 26417
15:04  Folco - Posté : 02-04-2011  M  Online
(JoNas, tu es KoKas embarrassed)
avatar<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./10
15.06.2003 - 7723
15:27  GoldenCrystal - Posté : 02-04-2011  @_ö
En fait si c'est du .NET, c'est System.Xml qui est utilisé (enfin probablement, sinon ça peut aussi être System.Xml.Linq…), du coup ça devrait être assez facile de faire des tests pour voir ce qui ne fonctionne pas tongue
(Il y a pas mal de réglages possibles sur XmlReader… Mais je ne sais pas si ça vient de là. Comme les DTD sont une fonctionnalité peu utilisée, il peut éventuellement y avoir des bugs que personne n'aura remarqué… (même si ça me semble étrange ^^))

Pour les tests réduits (sans toute l'application qui va derrière), un truc de ce genre devrait suffire :
 
namespace Test
{
    using System;
    using System.Xml;
 
    public static class Program
    {
        public static void Main()
        {
            var xmlDocument = new XmlDocument();
 
            xmlDocument.Load(Console.In);
            xmlDocument.Save(Console.Out);
        }
    }
}
(À compiler avec csc.exe qui devrait se trouver dans ton répertoire c:\Windows\Microsoft.NET\Framework\vXXX, avec XXX à remplacer par la version qui va bien… Ou bien à compiler avec gmcs/dmcs de mono sous Linux/OSX… J'ai pas testé mais j'espère ne pas avoir fait d'erreurs dans ce code tongue)
Ça devrait permettre de comparer directement l'entrée et la sortie (et avec quelques modifs pour utiliser XmlReader, tu peux ajuster les options de lecture, mais je ne crois pas que tu en aies besoin ici…), au moins tu sera vite fixé si c'est un bug de .NET ^^
(Par contre si c'est le cas, tu ne pourras pas le résoudre toi-même grin)
Edité par GoldenCrystal le 04-04-2011 à 09:48:29.
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./11
14.09.2006 - 923
09:25  Jonas - Posté : 04-04-2011  M
Merci GoldenCrystal.

J'ai essayé de compiler le code mais ça me renvoit des erreurs.


C:\Users\jonas>c:\windows\Microsoft.NET\Framework\v4.0.30319\csc.exe c:
test.cs
Compilateur Microsoft (R) Visual C# 2010 version 4.0.30319.1
Copyright (C) Microsoft Corporation. Tous droits réservés.

c:\test.cs(7,19): error CS1518: Class, delegate, enum, interface ou struct
attendu
c:\test.cs(9,31): error CS1518: Class, delegate, enum, interface ou struct
attendu
c:\test.cs(14,1): error CS1022: Définition de type ou d'espace de noms, ou fin
de fichier attendue
./12
15.06.2003 - 7723
09:45  GoldenCrystal - Posté : 04-04-2011  @_ö
Ouais en fait j'ai vu ça tard hier soir... J'ai oublié de mettre la méthode dans une classe #triso# (Bon à la base je prévoyais de mettre que la méthode dans le post, j'ai rajouté le namespace et les using après cheeky)
Je vais éditer le post tongue
Edité par GoldenCrystal le 04-04-2011 à 09:55:59.
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./13
14.09.2006 - 923
09:46  Jonas - Posté : 04-04-2011  M
Bon en fait ça viens vraiment du parseur, en mettant les entities en interne (dans le fichier xml) j'ai une levée d'exception au niveau de l'appli. Je vais essayer de prendre contact avec les dev de l'appli, mais avant tout j'aimerai savoir comment le problème peut-il être règlé (s'il peut l'être), dois-je leur indiquer d'utiliser un autre parseur? dois-je leur suggérer de changer l'encodage?

Pour info voici la pile d'appel.

à System.Xml.XmlTextReaderImpl.Throw(Exception e)
à System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
à System.Xml.XmlTextReaderImpl.Throw(Int32 pos, String res, String[] args)
à System.Xml.XmlTextReaderImpl.ThrowInvalidChar(Int32 pos, Char invChar)
à System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars)
à System.Xml.XmlTextReaderImpl.ParseText()
à System.Xml.XmlTextReaderImpl.ParseElementContent()
à System.Xml.XmlTextReaderImpl.Read()
à System.Xml.XmlLoader.LoadEntityReferenceNode(Boolean direct)
à System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)
à System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
à System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
à System.Xml.XmlDocument.Load(XmlReader reader)
à System.Xml.XmlDocument.LoadXml(String xml)

./14
15.06.2003 - 7723
09:59  GoldenCrystal - Posté : 04-04-2011  @_ö
Ça crash comme ça avec ton application directement ?
(Car si ça crash avec dtd interne et pas avec dtd externe, il y a un sérieux problème je pense... cheeky)
Au fait, tu as essayé avec deux zéros après le "x" dans tes entités ?
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./15
14.09.2006 - 923
10:18  Jonas - Posté : 04-04-2011  M
Le message ne s'affiche pas avec une DTD externe mais les données ne sont pas envoyés au port série. en DTD interne le comportement est identique sauf que le message est affiché.

Pas bête l'idée des deux zéros mais ça ne fonctionne pas non plus.

J'ai commencé à jeter un coup d'oeil sur le net mais pour le moement je ne trouve pas de référence à une résolution de ce problème avec le parseur .NET.
./16
15.06.2003 - 7723
10:28  GoldenCrystal - Posté : 04-04-2011  @_ö
Ah d'accord...
J'avais déjà regardé avec Google si y'avait quelque chose d'intéressant pour ton problème, mais comme je l'ai dit, les dtd ne sont pas utilisés des masses. (Loin d'être inutilisés certes, mais... wink)
Une solution qui pourrait peut-être résoudre ton problème initial, d'une manière différente, serait d'utiliser une transformation xsl... (Quitte à devoir coder un mini outil pour faire la transformation)
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./17
27.04.2006 - 39033
10:37  @Zerosquare - Posté : 04-04-2011  @_ö
(tout ce bordel pour envoyer des octets sur un bête port série... vous êtes sûr qu'utiliser .NET c'est un gain de temps finalement ? tongue)
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau

« Sur Atari tout le hardware tu trouvera, le driver toi même tu le codera » — GT Turbo
./18
15.06.2003 - 7723
10:48  GoldenCrystal - Posté : 04-04-2011  @_ö
(Je comprends pas vraiment pourquoi utiliser du XML pour ça à la base surtout. ^^
Le .NET c'est un environnement très bien quand tu ne tombes pas sur des problèmes/bugs comme celui-ci (Habituellement c'est plutôt dans SWF les "bugs" grin)
Mais je dois avouer que je suis un peu déçu pour le coup. Les parser XML de Microsoft sont sensés être pas mauvais et respecter assez bien les normes... Là si ça ne supporte pas un truc valide (Faudrait se plonger dans les spec des DTD Pour être sur, mais ça attendra) ça craint sorry)
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./Publicité AdSense
 « - 1/1 - » :: Pages
 Index » Forum grAphisme :: Forum informatique & développement » XML, (X)HTML, CSS, JavaScript (18r) » Caractèress non imprimables et XML

./Poster un nouveau message. - Ouvrir dans une nouvelle fenêtre
Login : Mot de passe :

url - image - media  
spoiler - pre - fixed
quote - box - hr
poll - code





Smileys
Smileys perso
Pièce jointe
     Flood control (?) :    
Les messages postés sont la propriété de leurs auteurs. Nous ne sommes pas responsables de leurs contenus.

» yN ©1624 - Aide / Charte / Crédits
80ms | Statistiques