Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Définition de la fonction newdocument dans mon programme :
newdocument ( string strrootelementnamespaceuri, string strrootelementname, string strdoctypepublicid, string strdoctypesystemid ) returns boolean
Ceci se trouve dans pbdom90.pbd
Dernière modification par Sylvie de hannut (14-12-2012 11:13:33)
Hors ligne
Sylvie de hannut a écrit:
Définition de la fonction newdocument dans mon programme :
newdocument ( string strrootelementnamespaceuri, string strrootelementname, string strdoctypepublicid, string strdoctypesystemid ) returns boolean
Ceci se trouve dans pbdom90.pbd
dans mon pbdom90.pbd, NewDocument est défini par
newdocument ( string strrootelementnamespaceprefix, string strrootelementnamespaceuri, string strrootelementname, string strdoctypepublicid, string strdoctypesystemid ) returns boolean
Il y a un paramètre de plus...
Tu peux toujours essayer en enlevant le premier paramètre (namespace prefix) ?
Hors ligne
oui je sais, j'ai vu et comparer
Eh ben, apparement les ancêtres utilisant PB9 ont télécharger, ou autre, un nouveau pbdom.
ld pbdom.pbd utilisé fait 80k alors que le pbd d'origine en fait 88 ????
Et quand je corrige l'appel de la fonction en mettant les paramêtres comme désirés dans la définition de la fonction, je n'ai plus de problème de compil
mais j'ai une erreur PBNI à l'exécution
Que faire ?????
Je me prépare à vérifier les différences entre les 2 pbd et à vérifier, quand j'utilise la pbd d'origine, si l'application tourne toujours ....
Sainte mère prier pour moi
Dernière modification par Sylvie de hannut (14-12-2012 13:08:14)
Hors ligne
Sylvie de hannut a écrit:
Que faire ?????
Je me prépare à vérifier les différences entre les 2 pbd et à vérifier, quand j'utilise la pbd d'origine, si l'application tourne toujours ....
Sainte mère prier pour moi
C'est ce qui paraît le plus sage : utiliser la version de pbdom90.dll correspondant au reste de PB. Mixer les pbd / dll pb c'est toujours une mauvaise idée.
J'espère que le code fonctionnera toujours avec le "bon" pbdom .
Bonne chance !
Hors ligne
Merci
Hors ligne
Hello, j'ai encore un problème avec le XML créé.
Ceci est le code pour créer le début de mon XML
xml_doc = create PBDOM_Document xml_comment = create PBDOM_Comment xml_comment.setText("Schema for DataStore produced by formulaire_Rapport_Trimestriel") xml_process = create PBDOM_ProcessingInstruction xml_process.setname("xml") xml_process.setvalue("version", "1.0") xml_process.setvalue("encoding","utf-8") xml_doc.newdocument("xs","http://www.w3.org/2001/XMLSchema","dataStore","","") xml_doc.addcontent(xml_process) xml_root = xml_doc.getrootelement() xml_root.addContent(xml_comment)
Lorsque je visualise mon xml voici ce que j'ai
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dataStore> -<xs:dataStore xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!--Schema for DataStore produced by formulaire_Rapport_Trimestriel-->
Lorsque je veux valider mon xml avec xmlSpy, j'ai une erreur avec la balise
<!DOCTYPE dataStore> Qui apparement est créée avec la commande xml_doc.newdocument("xs","http://www.w3.org/2001/XMLSchema","dataStore","","")
J'ai essayé de supprimé la balise en fin de traitement avec la commande xml_root.RemoveAttribute("!DOCTYPE dataStore")
Mais j'ai une erreur à l'exécution.
Savez-vous comment supprimé cette balise ou mieux, comment ne pas la créer ???
Merci
Hors ligne
Bonjour, tu peux nous citer le message d'erreur que retourne xmlSpy ?
pour info "!DOCTYPE" n'est pas un attribut ni un simple tag xml mais une processing instruction.
Hors ligne
à l'ouverture du fichier xml :
element <xs:datastore> has not been declared
|- error location xs:datastore
lors de l'assignement du schema, xmlspy me dit qu'il y a déjà un dtd external d'assigné, et me demande si je veux supprimer cet assignement.
Que je fasses oui ou non j'ai le même résultat
<?xml version="1.0" encoding="utf-8"?> <xs:dataStore xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///D:/SAFA_trimestriel.xsd">
Si je supprime la balise <!DOCTYPE dataStore>, j'ai aucune erreur
Hors ligne
dans les propriétés de ton dataobject (en mode design), il y a des spécifications à ce sujet dans "Data Export tab" format XML.
Tu peux jouer dessus pour ne pas inclure de DTD / Schema.
sinon en runtime :
dw1.modify("datawindow.export.xml.metadatatype=XMLNone!") dw1.modify("datawindow.export.xml.savemetadata=MetaDataInternal!")
Par contre, je ne sais pas si c'était déjà valable pour PB9
Hors ligne
xlat, merci pour ta réponse, mais tu pars d'une DW, or moi jeconstruit mon xml avec les commandes pbdom.
Je ne pars pas d'une DW, je parcours une dizaine de DW pour faire mon xml.
Hors ligne
Solution trouvée
// xml_doc.newdocument("xs","http://www.w3.org/2001/XMLSchema","dataStore","","") xml_doc.newdocument("dataStore") xml_doc.addcontent(xml_process) xml_root = xml_doc.getrootelement() xml_root.AddNamespaceDeclaration("xs","http://www.w3.org/2001/XMLSchema")
Comme ça je n'ai plus la balise indésirable.
Hors ligne
Sylvie de hannut a écrit:
xlat, merci pour ta réponse, mais tu pars d'une DW, or moi jeconstruit mon xml avec les commandes pbdom.
Je ne pars pas d'une DW, je parcours une dizaine de DW pour faire mon xml.
arff, mais où avais-je la tête ...
Hors ligne