Aller au contenu
  • 0
stairway

Import Xml Erreur Dans Xlst Nouveau

Question

Bonjour,

j'ai une erreur lorsque je veux importer des données depuis un fichier xml dans un base FMP

à l'aide d'un fichier xslt .

L'erreur est causée par le tag <Document.... > au tout début du fichier xml

Je n'arrive pas à résoudre ce problème merci de m'aider

Ci dessous les fichiers

test4.fmp12

Test2.xslt

camt.054-ESR.xml

camt.054-ESRok.xml

test4.fmp12

Test2.xslt

camt.054-ESR.xml

camt.054-ESRok.xml

test4.fmp12

Test2.xslt

camt.054-ESR.xml

camt.054-ESRok.xml

test4.fmp12

Test2.xslt

camt.054-ESR.xml

camt.054-ESRok.xml

test4.fmp12

Test2.xslt

camt.054-ESR.xml

camt.054-ESRok.xml

test4.fmp12

Test2.xslt

camt.054-ESR.xml

camt.054-ESRok.xml

Partager ce message


Lien à poster
Partager sur d’autres sites

25 réponses à cette question

Messages recommandés

  • 0

Il y a les excellents billets de David Julot sur le xml.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour,

Je vois qu'il n'y a pas eu de réponse à ce problème qui concerne ce que l'on appelle un espace de nom (xmlns).

Dans le fichier camt.054-ESR.xml la balise Document est associée à un espace de nom, il faut donc spécifier au parser (celui qui interprète le fichier xml avec la feuille de transformation xsl-t) que lorsque nous souhaitons traiter la balise Document, et ses enfants, c'est celui de tel espace de nom et pas de tel autre. Pour cela on déclare l'espace de nom avec l'attribut xmlns:doc = "" (c'est comme une clef primaire) et on l'y associe le même uri (urn:iso:std:iso:20022:tech:xsd:camt.054.001.04). Doc est arbitraire.

Et ensuite pour indiquer au parser que je veux telle ou telle balise qui correspond au fichier xml, je la précède d'un doc:.

Test_corrigé.xslt

Test_corrigé.xslt

Test_corrigé.xslt

Test_corrigé.xslt

Test_corrigé.xslt

Test_corrigé.xslt

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Le 13/02/2017 à 11:18, David Julot a dit :

Bonjour,

Je vois qu'il n'y a pas eu de réponse à ce problème qui concerne ce que l'on appelle un espace de nom (xmlns).

Dans le fichier camt.054-ESR.xml la balise Document est associée à un espace de nom, il faut donc spécifier au parser (celui qui interprète le fichier xml avec la feuille de transformation xsl-t) que lorsque nous souhaitons traiter la balise Document, et ses enfants, c'est celui de tel espace de nom et pas de tel autre. Pour cela on déclare l'espace de nom avec l'attribut xmlns:doc = "" (c'est comme une clef primaire) et on l'y associe le même uri (urn:iso:std:iso:20022:tech:xsd:camt.054.001.04). Doc est arbitraire.

Et ensuite pour indiquer au parser que je veux telle ou telle balise qui correspond au fichier xml, je la précède d'un doc:.

Test_corrigé.xslt

Bonjour et merci pour le test corrigé xlst. Mais j'ai un problème non résolu: le test fonctionne pour une rubrique, en l'occurrence <Ref>. Mais je n'arrive pas à importer d'autres rubriques, comme par exemple les montants ou la date. J'ai de la peine avec la grammaire des documents type camt.54 et suis donc totalement incapable de reporter ces rubriques dans FileMaker via .xlst. Je ne suis hélas qu'un amateur fidèle à FileMaker, mais dès que j'en sors je suis passablement perdu. Merci…

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Le 26/04/2017 à 17:16, Macdan a dit :

Bonjour et merci pour le test corrigé xlst. Mais j'ai un problème non résolu: le test fonctionne pour une rubrique, en l'occurrence <Ref>. Mais je n'arrive pas à importer d'autres rubriques, comme par exemple les montants ou la date. J'ai de la peine avec la grammaire des documents type camt.54 et suis donc totalement incapable de reporter ces rubriques dans FileMaker via .xlst. Je ne suis hélas qu'un amateur fidèle à FileMaker, mais dès que j'en sors je suis passablement perdu. Merci…

Bonjour,

Dans le XSLT fourni, tu descends au niveau de la balise <CdtrRefInf>

Donc si tu veux une info qui est au dessus, il faut remonter, tu veux intégrer quel champ ?

Tom

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Il y a 13 heures, Tomassia_fm a dit :

Bonjour,

Dans le XSLT fourni, tu descends au niveau de la balise <CdtrRefInf>

Donc si tu veux une info qui est au dessus, il faut remonter, tu veux intégrer quel champ ?

Tom

Merci Tom,

J'ai besoin d'importer la date du paiement et son montant en plus du BVR. J'ai rajouté les 2 lignes dans les <METADATA> mais il faut visiblement compléter <RESULTSET> et je n'y arrive pas. Pour info actuellement, je reçois des fichiers .esr desquels j'extrais les données pour les importer dans des rubriques FileMaker. Avec l'arrivée d'ISO 20022, ces fichiers sont remplacés par des XML. 

Macdan

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Le 27/04/2017 à 18:32, Tomassia_fm a dit :

Bonjour,

Dans le XSLT fourni, tu descends au niveau de la balise <CdtrRefInf>

Donc si tu veux une info qui est au dessus, il faut remonter, tu veux intégrer quel champ ?

Tom

J'y suis finalement parvenu. Merci!

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Le 13/02/2017 à 11:30, stairway a dit :

Meeeerciiii !!

J'ai testé et tout est Ok

Cordialement

Stairway

Philippe Sautel

Salut Stairway, 

J'ai le mémé problème que toi je doit importer des fichier camt de posfinance, je n'ai pas encore commencé le dev, je doit juste upgader ma solution d'import des fichier v11 vers les fichier camt (xml), et comme il me semble que tu as solutionné le problème, j'aimerai te demander si tu peux m'aider avec ce que tu as déjà fait.

Christian

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour,

Est-ce qu'un a fait le fichier final XLT avec toutes rubriques pour importer le fichier CAMT ?? 

Je vous serais vraiment reconnaissant

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour,

Nous en avons réalisé un avec un collègue qui fonctionne. Vous le trouverez en pièce jointe. Ce fichier est placé dans le dossier document et FileMaker s'y réfère par le script, mais il faut évidemment éviter de le supprimer!

Cordialement

Camt.xslt

Camt.xslt

Camt.xslt

Camt.xslt

Camt.xslt

Camt.xslt

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Merci Beaucoup Macadm, c'est parfait, cela m'as bien aidé, et surtout gagner du temps.

J'ai amélioré ton fichier Filemaker avec les valeurs manquante, Expéditeur et Banque. voir les annexes, et un script d'importation

Mais j'ai encore un petit problème dans le fichier d'import la balise "Amt"  contenant le montant <Amt Ccy="CHF">100.00</Amt> contient la monnaie "CHF"

J'aimerai pouvoir récupérer la valeur CHF dans une rubrique, car il est possible que je reçoivent aussi des Euros, je sais pas si un montant payé en euro sera converti en CHF ??

Est-ce que qu'un à une idée

Import Camt_xml.fmp12

camt.054-ESR.xml

Camt.xslt

Import Camt_xml.fmp12

camt.054-ESR.xml

Camt.xslt

Import Camt_xml.fmp12

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour,

Pour récupérer la valeur de l'attribut "Ccy", ajoute à ton RESULTSET:

<COL><DATA><xsl:value-of select="doc:Amt/@Ccy"/></DATA></COL>

Il va de soit que tu auras aussi ajouté dans le METADATA le FIELD:

<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Ccy" TYPE="TEXT"/>

Pour la conversion €->CH, je crains que tu ne sois obligé de télécharger les cours en vigueur au jour n (à le date de transaction?, date de valeur? …etc…) et de faire la conversion de par toi-même.

Tu devrais trouver sur le forum deux XSLT qui se chargent de ce boulot.

Recherche dans mes documents "EuropeanCentralBank.fp7" ou encore "SwissQuote.fp7"

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Merci beaucoup Clem, 

C'est tout bon, génial

J'ai encore un petit souci, j'ai copié le code de ma feulle de style XSL dans une rubrique texte globale "Camt XSL", et j'indique indique ma rubrique comme requête HTTP.

Mais Filemaker me dit: Vos autorisation d'accès ne vous permettent pas d^effectuer cette opération, j'ai les accès intégral et mis tous les privilèges étendus 

Est-ce qqu'un à une idée d'ou vient le problème ??

5a0dba8a74685_16-11-201717-11-41.png.1837d2276ace734e1174b58b9ac3d693.png

camt.054-ESR.xml

Import Camt_xml.fmp12

 

camt.054-ESR.xml

Import Camt_xml.fmp12

5a0dba8a74685_16-11-201717-11-41.png.1837d2276ace734e1174b58b9ac3d693.png

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonsoir,

On ne peut pas mettre le contenu d'une feuille XLS-T dans le champ Requête HTTP ou dans la formule de calcul pour la requête HTTP, même contenue dans une rubrique.

La feuille XSL-T doit être soit présente sur le disque de votre ordinateur (option Fichier), soit présent sur un serveur HTTP (champ Requête HTTP ou calcul Requête HTTP). Dans tous les cas on doit spécifier un chemin d'accès (local ou HTTP) pour indiquer au parser où se trouve cette feuille de transformation.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

oh pardon doublon

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Merci David pour cette précision,

Ben je trouve bien dommage que Filemaker n'ai pas prévu ce cas de figure, alors que l'on peux mettre du code HTML dans des rubriques et l'utiliser avec le Webviewer.

Faudrait remonter ça au développement.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Je veux remercier David JulotClem, et Macdan pour leur contribution au développement de cette solution.

Il faut savoir que cette solution peux rendre service à beaucoup de monde en suisse.

De ce fait j'aimerai partager le fichier de la solution finale complète  qui permet d'importer les fichier xml Camt ISO 20022, qui peut être adapté facilement dans une solution existante de gestion de facturation, pour l'importation des paiement via Ebanking.

Le passage à la norme ISO 20022, En Suisse, le trafic national des paiements fait l'objet d'une harmonisation d'ici 2018. Cela concerne toutes les entreprises qui envoient et reçoivent des factures. ISO 20022 (client-banque et banque-client) doivent être construits en conformité avec les Swiss Payment Standards pour les cas d'utilisation les plus courantes (types de paiement), proposant des règles de champ et des exemples afin d'illustrer l'ensemble du processus de bout en bout. voir https://www.six-interbank-clearing.com/fr/home/standardization/iso-payments/customer-bank/implementation-guidelines.html

Je vous met à disposition un fichier Filemaker qui utilise la feuille de style en ligne, sur l'adresse http://malera.com/filemaker/Camt.xslt, avec les script  qui permettent aussi d’importer 1 fichier ou plusieurs fichier à la volée en une fois, (cette importation à la volé n'as pas été testée sur Filemaker Mac), ainsi que toutes les explications sur le fonctionnement.

 

 

Import_Camt_ISO 20022_xml.fmp12

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour,

J'ai encore un petit soucis, avec ma feuille de style, j'aimerai récupérer, une valeur qui est dans l'entête du fichier camt, "BookgDt" la date  à la date d'écriture et "ValDt" à la date de valeur à la ligne 28 du fichier joint camt.054-ESR.xml

et ces valeurs se trouve dans une section différente (en rouge), comment doit-je faire ma syntaxe ??

 

<RESULTSET>
                    <xsl:for-each select= "doc:BkToCstmrDbtCdtNtfctn/doc:Ntfctn/doc:Ntry" >
                    <ROW MODID= "" RECORDID= "" >
                        <COL><DATA><xsl:value-of select="doc:BookgDt/doc:Dt/"></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:ValDt/doc:Dt/"></DATA></COL>
                    </ROW>
                    </xsl:for-each>
                </RESULTSET>
                <RESULTSET> 
                    <xsl:for-each select= "doc:BkToCstmrDbtCdtNtfctn/doc:Ntfctn/doc:Ntry/doc:NtryDtls/doc:TxDtls" >
                    <ROW MODID= "" RECORDID= "" >
                        <COL><DATA><xsl:value-of select="doc:RltdPties/doc:Dbtr/doc:Nm"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:RltdPties/doc:Dbtr/doc:PstlAdr/doc:StrtNm"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:RltdPties/doc:Dbtr/doc:PstlAdr/doc:BldgNb"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:RltdPties/doc:Dbtr/doc:PstlAdr/doc:PstCd"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:RltdPties/doc:Dbtr/doc:PstlAdr/doc:TwnNm"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:RltdPties/doc:Dbtr/doc:PstlAdr/doc:Ctry"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:RltdPties/doc:DbtrAcct/doc:Id/doc:IBAN"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:RmtInf/doc:Strd/doc:CdtrRefInf/doc:Ref"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:RltdDts/doc:AccptncDtTm"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:Refs/doc:AcctSvcrRef"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:RltdAgts/doc:DbtrAgt/doc:FinInstnId/doc:BICFI"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:RltdAgts/doc:DbtrAgt/doc:FinInstnId/doc:ClrSysMmbId/doc:MmbId"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:RltdAgts/doc:DbtrAgt/doc:FinInstnId/doc:Nm"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:RltdAgts/doc:DbtrAgt/doc:FinInstnId/doc:PstlAdr"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:Amt"/></DATA></COL>
                        <COL><DATA><xsl:value-of select="doc:Amt/@Ccy"/></DATA></COL>
                        
                    </ROW>
                    </xsl:for-each>
                </RESULTSET>

Camt2.xslt

camt.054-ESR.xml

camt.054-ESR.xml

Camt2.xslt

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour Cmalera,

Je dois vous avouer mon incompétence pour répondre votre question, désolé… 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour Cmalera,

Je ne comprends pas ce que vous souhaitez, car vous produisez deux blocs RESULTSET. Que souhaitez-vous exactement ? Mettre ces valeurs en première colonne du RESULTSET ?

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour David,

Oui c'est ça évidement, j'aimerai tout mettre dans le même RESULTSET , mais le problème c'est que dans le fichier XML, il y a une sorte d'entête pour les donnée du compte du destinataire et la date de valeur qui la même pour toutes les écritures de versement sur le compte, car le fichier est envoyé par la banque à chaque fois qu'il y de l'argent qui arrive sur le compte, et quand il a plusieurs versement le même jour, il y plusieurs écritures.

La donnée BookgDt et ValDt donne les dates de valeur pour toutes les écriture bancaire, mais figure au début du XML 

Donc j'aimerai que cette date unique soit inscrite pour toutes les écritures. voir les exemples joint

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonsoir,

Deux possibilités :

  • soit on remonte dans la hiérarchie, en utilisant un chemin relatif (tout comme une url) : 
    <xsl:value-of select="../../doc:BookgDt/doc:Dt"/>
    > voir le fichier Camt2.xslt
    Camt2.xslt
     
  • soit en utilisant une variable préalablement définie :
    <xsl:variable name="bookgDt" select="/doc:Document/doc:BkToCstmrDbtCdtNtfctn/doc:Ntfctn/doc:Ntry/doc:BookgDt/doc:Dt"/>
    <xsl:value-of select="$bookgDt"/>
    > voir le fichier Camt2 variable.xslt

    Camt2 variable.xslt
     

Camt2.xslt

Camt2 variable.xslt

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Merci beaucoup David, c'est parfait, la première version fonctionne bien

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×