Spring naar bijdragen
  • 0
Meeuwis

XSL voor camt.053

Vraag

Goedemiddag,

Ik probeer een een xsl-sheet te schrijven voor het importen van bankafschrift. Dit afschrift is geschreven in een camt.053 (xml) extensie.
Maar wat ik ook probeer, het lukt me niet om uit dit simpele XML-bestandje zelfs maar de basis-gegevens in een fm-tabel te importeren.
Weet iemand waar de fout zit in mijn xsl-sheet?

Alvast bedankt,
Meeuwis

De XML-file ziet er al volgt uit:

<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02 camt.053.001.02.xsd">
  <BkToCstmrStmt>
    <GrpHdr>
      <MsgId>201804230000000_20180423103000259</MsgId>
      <CreDtTm>2018-04-23T10:30:00.259+02:00</CreDtTm>
    </GrpHdr>
    (...)
  </BkToCstmrStmt>
</Document>
 
Met de volgende XSL-sheet probeer ik de gegevens in te importen:
 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ing ="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02">
     <xsl:template match="/">
        <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
            <ERRORCODE>0</ERRORCODE>
            <PRODUCT BUILD="" NAME="" VERSION=""/>
            <DATABASE DATEFORMAT="DD-MM-YYYY" LAYOUT="" NAME="" RECORDS="" TIMEFORMAT=""/>
            <METADATA>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ingID" TYPE="TEXT"/>
                <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="dateAndTimestamp" TYPE="TEXT"/>
            </METADATA>
            <RESULTSET>
                <xsl:attribute name="FOUND"/>
                <xsl:for-each select="ing:BkToCstmrStmt/GrpHdr">
                    <ROW MODID="0">
                        <xsl:attribute name="RECORDID"><xsl:value-of select="position()"/></xsl:attribute>
                        <COL>
                            <DATA>
                                <xsl:value-of select="MsgId"/>
                            </DATA>
                        </COL>
                        <COL>
                            <DATA>
                                <xsl:value-of select="CreDtTm"/>
                            </DATA>
                        </COL>
                    </ROW>
                </xsl:for-each>
            </RESULTSET>
        </FMPXMLRESULT>
    </xsl:template>
</xsl:stylesheet>

Deel dit bericht


Link naar bericht

4 antwoorden op deze vraag

Aanbevolen berichten

  • 0
Geplaatst (bewerkt)

Volgend mij moet officieel elk XML document met een <xml tag beginnen. Dit document begint met <document tag. 

 

Ik denk dat dit op XML lijkt maar geen is. Mss Sovjet voldoende om “document” door “xml” te vervangen. Zowel aan het begin als aan het eind

bewerkt door andries

Deel dit bericht


Link naar bericht
  • 0

Ha Andries,

Bedankt voor je reactie! Het bestandje begint wel met de xml-regel:

<?xml version="1.0" encoding="UTF-8"?>

Door het kopiëren uit de browser is dit regeltje echter weggevallen.

Groeten, Meeuwis

Deel dit bericht


Link naar bericht
  • 0

Ik denk dat je de namespace ing (je hebt hem zelf gedeclareerd) overal in je pad moet opnemen. Dus:

ing:BkToCstmrStmt/GrpHdr

moet worden:

ing:BkToCstmrStmt/ing:GrpHdr

en dat geldt ook voor de elementen van die node die je uitvraagt.

Ik heb niks getest, maar daar zou ik het probleem zoeken

Deel dit bericht


Link naar bericht
  • 0

En je moet in de root beginnen, dus begin je met for-each:

ing:Document/ing:BkToCstmrStmt/ing:GrpHdr

 

Deel dit bericht


Link naar bericht

Maak een account aan of meld je aan om een opmerking te plaatsen

Je moet lid zijn om een opmerking achter te kunnen laten

Account aanmaken

Maak een account aan in onze gemeenschap. Het is makkelijk!

Registreer een nieuw account

Aanmelden

Ben je al lid? Meld je hier aan.

Nu aanmelden
×