Jump to content
  • 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

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

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

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

test4.fmp12

Test2.xslt

camt.054-ESR.xml

camt.054-ESRok.xml

test4.fmp12

Test2.xslt

camt.054-ESR.xml

camt.054-ESRok.xml

Share this post


Link to post
Share on other sites

25 answers to this question

Recommended Posts

  • 0

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

Share this post


Link to post
Share on other 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

Test_corrigé.xslt

Test_corrigé.xslt

Test_corrigé.xslt

Test_corrigé.xslt

Test_corrigé.xslt

Test_corrigé.xslt

Test_corrigé.xslt

Test_corrigé.xslt

Share this post


Link to post
Share on other 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…

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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

 

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Camt.xslt

Camt.xslt

Camt.xslt

Camt.xslt

Camt.xslt

Camt.xslt

Camt.xslt

Camt.xslt

Share this post


Link to post
Share on other 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

camt.054-ESR.xml

Camt.xslt

Import Camt_xml.fmp12

camt.054-ESR.xml

Camt.xslt

Import Camt_xml.fmp12

camt.054-ESR.xml

Camt.xslt

Import Camt_xml.fmp12

camt.054-ESR.xml

Camt.xslt

Import Camt_xml.fmp12

camt.054-ESR.xml

Camt.xslt

Import Camt_xml.fmp12

camt.054-ESR.xml

Camt.xslt

Import Camt_xml.fmp12

camt.054-ESR.xml

Camt.xslt

Import Camt_xml.fmp12

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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

camt.054-ESR.xml

Import Camt_xml.fmp12

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

camt.054-ESR.xml

Import Camt_xml.fmp12

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

camt.054-ESR.xml

Import Camt_xml.fmp12

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

camt.054-ESR.xml

Import Camt_xml.fmp12

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

camt.054-ESR.xml

Import Camt_xml.fmp12

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

camt.054-ESR.xml

Import Camt_xml.fmp12

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites
  • 0

oh pardon doublon

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

Share this post


Link to post
Share on other sites
  • 0

Bonjour Cmalera,

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

Share this post


Link to post
Share on other 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 ?

Share this post


Link to post
Share on other 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

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Camt2.xslt

camt.054-ESR.xml

Share this post


Link to post
Share on other 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

Camt2.xslt

Camt2 variable.xslt

Camt2.xslt

Camt2 variable.xslt

Camt2.xslt

Camt2 variable.xslt

Camt2.xslt

Camt2 variable.xslt

Camt2.xslt

Camt2 variable.xslt

Camt2.xslt

Camt2 variable.xslt

Camt2.xslt

Camt2 variable.xslt

Camt2.xslt

Camt2 variable.xslt

Camt2.xslt

Camt2 variable.xslt

Camt2.xslt

Camt2 variable.xslt

Camt2.xslt

Camt2 variable.xslt

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...