Versies vergeleken

Uitleg

  • Deze regel is toegevoegd.
  • Deze regel is verwijderd.
  • Opmaak is veranderd.


Informatie

Deze pagina werd gearchiveerd in 2023. Voor de meest recente versie, bekijk de bijgewerkte versie onder de tab 'Data aanleveren'.


Inhoudsopgave

Inleiding

XML-schema's

Handleiding in Word-formaat

Transcriptie

Een data aanlevering vertrekt het best met een bestaand en correct XML-bestand bijvoorbeeld: “Voorbeeld_XML_aardkundige_gegevens. xml” Een dergelijk XML-bestand kan je openen en editeren met zo goed als elke tekst editor. Notepad++ wordt echter sterk aangeraden daar deze de modelleertaal XML ondersteunt en over validatietools beschikt Notepad++ is een voorbeeld van zo'n text editor die XML ondersteunt.

Er zijn twee manieren enkele methoden om een XML-bestand te valideren tegen fouten met betrekking tot de Code van de Goede Praktijk.

Online

...

XML validatie (voor beginners & experten)

De eerste methode maakt gebruik van de XML-validatietool van DOV en kan gevonden worden op volgende paginaDOV. De XML-validatietool is beschikbaar via het DOV-Portaal of rechtstreeks met volgende url:

...

Image Added

Het kiezen van een XML-bestand start de validatie direct. De details geven weer of er fouten gevonden zijn of niet. De header in het XML-bestand bepaalt tegen welk schema het wordt gevalideerd.

Voorbeeld van validatie zonder fouten

 


Image Modified

 


Voorbeeld van validatie met fout

 


Image Modified

[referentieprofiel:(p2)]-->[beginpunt]-->[xy]-->[betrouwbaarheid] Invalid content was found starting with element 'betrouwbaarheid'. One of '{x}' is expected.

Aan de hand van de foutendetails is het mogelijk de foutieve XML’s aan te passen en te verbeteren.

...

Offline XML validatie (voor experten)

De tweede methode maakt gebruik van een XSDXML-schema bestand (ook XSD genoemd) dewelke kan gebruikt worden voor de validatie van XML’s. Op dezelfde pagina als voordien kunnen alle bestaande schema’s gedownload worden. Hier kan een specifiek schema gekozen worden:

Image Removed

In deze handleiding zal het aardkundig schema voor archeologische boringen gebruik worden. Deze kan ook gevonden worden op onderstaande pagina bij “xsd-schema aardkundige gegevens:

Image Removed

Image Added

Eens op een link geklikt, downloadt er een ZIP-bestand. Best voorziet u hiervoor een specifieke map, bv. In je documenten “C:\Users\‹PC_GEBRUIKER›\Documents\xsd”. Als u deze ZIP uitpakt kan u het XSDXML-schema vinden in de folder “…\xsd\kern”.

Image RemovedImage Added

Eens het XSD-schema op zijn plaats staat, is er software nodig dat deze kan appliqueren. Zoals eerder vermeld wordt Notepad++ aangeraden. Dit programma kan gedownload worden via onderstaande link:

Het is mogelijk dat de XML Tools plugin standaard mee wordt geïnstalleerd. Als deze niet in de lijst staat kan deze opgehaald worden onder “Plugins > Plugins Admin…” Als je hier op klikt komt er een scherm tevoorschijn waar je deze kan zoeken en installeren.

Image Removed

In vorige versies van XML Tools moest het te valideren XML-bestand eerst aangepast worden door een verwijzing naar het XSD-schema toe te voegen. Dit is voor recentere versies niet meer nodig.

Om de validatie te starten open je het XML-bestand met Notepad++ en navigeer je in de balk bovenaan naar “Plugins > XML-tools > Validate now”. Het menu kan ook geopend worden door Ctrl + Alt + Shift + M in te drukken.

Image Removed

Dit opent een menu waar het XSD-schema moet geselecteerd worden. Hierna op OK klikken start de validatie.

Image Removed

Bij een feilloze validatie zal deze onderstaand scherm weergeven dat alles gelukt is.

Image Removed

Bij het vinden van fouten zal het pop-up scherm alle gevonden errors oplijsten. In dit geval dien je de gemelde fouten te corrigeren en nogmaals te valideren.

...

kan deze gebruikt worden door een validator naar keuze. Deze validator kan een webapp, script of software zijn en de keuze hiervan ligt volledig bij de gebruiker.

Aangeraden opties zijn unit tests via script.

Voorbeeld in Java

In onderstaand voorbeeld is het mogelijk zowel met URL verwijzing als met de bronbestanden te werken. Deze kunnen gevonden worden op:


Codeblok
languagejava
themeRDark
titleXML-validatie in Java
linenumberstrue
import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.*;
import java.net.URL;
import java.net.MalformedURLException;
import org.xml.sax.SAXException;
//import java.io.File; // Als er gebruik wordt gemaakt van een XSD-file ipv een URL
import java.io.IOException;
...
URL schemaFile = new URL("https://www.dov.vlaanderen.be/xdov/schema/latest/xsd/kern/dov.xsd");
// Andere schema's kunnen gevonden worden op https://www.dov.vlaanderen.be/portaal/?module=ocdov-xdov-validate
// Voorbeeld met een lokaal bestand:
// File schemaFile = new File("/location/to/localfile.xsd");
Source xmlFile = new StreamSource(new File("C:\\<PAD_NAAR_XML>\\mijn_xml.xml"));
SchemaFactory schemaFactory = SchemaFactory
    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
try {
  Schema schema = schemaFactory.newSchema(schemaFile);
  Validator validator = schema.newValidator();
  validator.validate(xmlFile);
  System.out.println(xmlFile.getSystemId() + " is geldig");
} catch (SAXException e) {
  System.out.println(xmlFile.getSystemId() + " is NIET geldig. Reden:" + e);
} catch (IOException e) {}

XML validatie via DOV-webservices

Aan te spreken url: https://services.dov.vlaanderen.be/dov-xdov-server/import/validate (Type request: POST, Header: Content-Type: application/json)

Codeblok
languagebash
titlecURL
curl -X POST -d "@validate-post-body.json" -k https://services.dov.vlaanderen.be/dov-xdov-server/import/validate   -H 'Content-Type: application/json' --key my_key.key --cert my_cert.pem  -v

Een json-body moet hier mee gestuurd worden:

Codeblok
languagejs
titleJSON POST body
collapsetrue
{
  "id": null,
  "omschrijving": "opladen XML",
  "gebruikersnaam": "<username>",
  "datumOpladen": "2019-10-10",
  "datumProcessed": null,
  "aantalVerwerkt": 0,
  "aantalFouten": 0,
  "partner": "<kbonummer van uw organisatie>",
  "invoerwijze": {
    "code": "2",
    "beschrijving": "edov"
  },
  "status": {
    "code": "1",
    "beschrijving": "niet verwerkt"
  },
  "options": [
    {
      "id": null,
      "propertyValue": "true",
      "property": {
        "code": "20",
        "beschrijving": "Boring"
      }
    },
    {
      "id": null,
      "propertyValue": "true",
      "property": {
        "code": "21",
        "beschrijving": "Opmerkingen bij een boring"
      }
    },
    {
      "id": null,
      "propertyValue": "true",
      "property": {
        "code": "22",
        "beschrijving": "Alternatieve namen"
      }
    },
    {
      "id": null,
      "propertyValue": "true",
      "property": {
        "code": "101",
        "beschrijving": "Informele stratigrafie"
      }
    },
    {
      "id": null,
      "propertyValue": "true",
      "property": {
        "code": "103",
        "beschrijving": "Lithologische beschrijving"
      }
    },
    {
      "id": null,
      "propertyValue": "true",
      "property": {
        "code": "104",
        "beschrijving": "Gecodeerde lithologie"
      }
    },
    {
      "id": null,
      "propertyValue": "true",
      "property": {
        "code": "105",
        "beschrijving": "Hydrogeologische stratigrafie"
      }
    },
    {
      "id": null,
      "propertyValue": "true",
      "property": {
        "code": "108",
        "beschrijving": "Geotechnische codering"
      }
    },
    {
      "id": null,
      "propertyValue": "true",
      "property": {
        "code": "120",
        "beschrijving": "Opmerkingen bij een interpretatie"
      }
    }
  ],
  "bestand": {
    "id": "<BESTAND-ID>",
    "naam": "<BESTANDSNAAM>"
  }
}

In bovenstaand voorbeeld van post-data moet aandacht besteed worden aan de volgende velden:

  • Lijn 3: vul hier een beschrijving in van het bestand (bvb 'opladen data van december'). Dit is vrije tekst.
  • Lijn 4: hier moet de gebruikersnaam ingevuld worden; de bedrijfsnaam is ook goed.
  • Lijn 5: vul hier de datum van vandaag in - formaat is YYYY-MM-DD
  • Lijn 9: hier moet het KBO-nummer van uw organisatie ingevuld worden (zonder puntjes!)
  • Lijn 18: options, geven aan welke objecten in de XML voorkomen die je wilt laten valideren. Dit komt overeen met de aanvinkbare keuzes bij een manuele import via de webapplicatie. De codes voor andere mogelijke objecten staat hieronder.
  • Lijn 93-94: hier moet de data ingevuld worden die als response uit stap 1 gekomen is.


Mogelijke codes voor objecten in het veld 'options':

  • Opdracht: 10 (opdracht), 11 (opmerkingen opdracht),
  • Proefgegevens: 20 (boring), 21 (opmerkingen boring), 22 (alternatievenaam), 40 (sondering), 41 (opmerkingen sondering)
  • Interpretaties: 101 (informeel), 102 (formeel), 103 (lithologie), 104 (gecodeerd), 105 (hydrogeologisch), 106 (quartair), 108 (geotechnisch), 109 (informelehydro), 120 (opmerkingen interpretatie),
  • Watergegevens: 50 (put), 51 (opmerkingen put), 60 (filter), 61 (opmerkingen filter), 62 (peilmetingen), 63 (watermonster), 64 (kwaliteitsmetingen), 65 (onttrekkingen), 66 (gxgs), 67 (debietmeters), 68 (referentiepunten),
  • Grondmonstergegevens: 23 (grondmonster), 29 (opmerkingen grondmonster), 30 (laboproeven grondmonster),
  • Archeologie: 131 (referentieprofiel),
  • Bodem: 140 (bodemsite), 141 (bodemlocatie), 142 (bodemclassificatie), 143 (bodemopbouw), 144 (bodemmonster), 145 (bodemobservatie), 146 (bodem opmerkingen), 1412 (bijlagen bodemlocatie), 1414 (full bodemlocatie)

(waarschuwing) Opgelet: voor gebruikers met de rol 'boorbedrijf' wordt een apart XML-schema gebruikt, waarin nog niet alle objecten opgenomen zitten, bv. putten en filters zitten er nog niet in. Dit leidt dan tot een foutmelding 'Het schema wordt niet ondersteund.be.vlaanderen.dov.schemas.kern.DovSchemaType'. Voor gebruikers met een andere rol kan je kiezen voor het uitgebreide XML-schema, door in het json-bestand als 'invoerwijze' te kiezen voor 'intern' ipv 'edov' (code 1 ipv code 2).


Het antwoord van de server is een json-bestand met daarin een overzicht van succes of fouten van elke element in de XML tegenover het edov-xml-schema.

Het belangrijkste is lijn 8. Daar moet staan 'validatie zonder fouten'; indien niet, is het een ongeldig bestand.

Codeblok
languagejs
titleResponse
collapsetrue
{
  "details": [
    {
      "id": "2",
      "context": null,
      "status": {
        "code": "7",
        "beschrijving": "validatie zonder fouten"
      },
      "messages": [],
      "identificatie": "1419-B-P6-Belle-Vue2",
      "boring": {
        "id": null,
        "partner": null,
        "uniekDOVId": "1419-B-P6-Belle-Vue2",
        "locatie": null,
        "displayName": "1419-B-P6-Belle-Vue2",
        "boringKey": null,
        "statusCode": null,
        "permKey": null
      }
    },
    {
      "id": null,
      "context": null,
      "status": {
        "code": "7",
        "beschrijving": "validatie zonder fouten"
      },
      "messages": [],
      "identificatie": "type 'informele stratigrafie' gekoppeld aan boring '1419-B-P6-Belle-Vue2' (datum '2010-11-13')",
      "interpretatie": {
        "id": null,
        "interpretatieKey": null,
        "partner": null,
        "type": {
          "code": "1",
          "beschrijving": "informele stratigrafie",
          "naam": "informele stratigrafie"
        },
        "datum": null,
        "auteurs": null,
        "moederBoring": {
          "id": null,
          "partner": null,
          "uniekDOVId": "1419-B-P6-Belle-Vue2",
          "locatie": null,
          "displayName": "1419-B-P6-Belle-Vue2",
          "boringKey": null,
          "statusCode": null,
          "permKey": null
        },
        "sondering": null,
        "statusCode": null,
        "permKey": null,
        "fase": null,
        "securityStatus": null
      }
    },
    {
      "id": null,
      "context": null,
      "status": {
        "code": "7",
        "beschrijving": "validatie zonder fouten"
      },
      "messages": [],
      "identificatie": "type 'lithologische beschrijving' gekoppeld aan boring '1419-B-P6-Belle-Vue2' (datum '2016-05-12')",
      "interpretatie": {
        "id": null,
        "interpretatieKey": null,
        "partner": null,
        "type": {
          "code": "3",
          "beschrijving": "lithologische beschrijving",
          "naam": "lithologische beschrijving"
        },
        "datum": null,
        "auteurs": null,
        "moederBoring": {
          "id": null,
          "partner": null,
          "uniekDOVId": "1419-B-P6-Belle-Vue2",
          "locatie": null,
          "displayName": "1419-B-P6-Belle-Vue2",
          "boringKey": null,
          "statusCode": null,
          "permKey": null
        },
        "sondering": null,
        "statusCode": null,
        "permKey": null,
        "fase": null,
        "securityStatus": null
      }
    }
  ],
  "summary": {
    "items": [
      {
        "option": {
          "code": "20",
          "beschrijving": "Boring"
        },
        "numberOfObjects": 1,
        "id": "20"
      },
      {
        "option": {
          "code": "101",
          "beschrijving": "Informele stratigrafie"
        },
        "numberOfObjects": 1,
        "id": "101"
      },
      {
        "option": {
          "code": "103",
          "beschrijving": "Lithologische beschrijving"
        },
        "numberOfObjects": 1,
        "id": "103"
      },
      {
        "option": {
          "code": "105",
          "beschrijving": "Hydrogeologische stratigrafie"
        },
        "numberOfObjects": 0,
        "id": "105"
      },
      {
        "option": {
          "code": "108",
          "beschrijving": "Geotechnische codering"
        },
        "numberOfObjects": 0,
        "id": "108"
      },
      {
        "option": {
          "code": "104",
          "beschrijving": "Gecodeerde lithologie"
        },
        "numberOfObjects": 0,
        "id": "104"
      }
    ],
    "id": null
  }
}