XML in- en uitvoer

Gepubliceerd op 17 september 2020 om 10:52

Steeds meer software, waaronder reken- en tekensoftware, biedt de mogelijkheid tot digitale communicatie, dit wil zeggen dat de reken- en tekensoftware onderling met elkaar kunnen communiceren. Dit betekent dat programma (A) een andere programma (B) kan beïnvloeden. Dit kan in principe op twee verschillende manieren. De eerste methode is het gebruik van een zogenaamde API (Application Programming Interface) , waarbij (eigen geschreven) software (A) direct commando’s geeft aan software (B) en bewerkingen in (B) automatisch laat uitvoeren. De tweede methode is het gebruik van in- en uitvoerbestanden, zoals XML-bestanden. Door het uitwisselen van in- en uitvoerbestanden kan software (A) software (B) ook beïnvloeden. Wat is XML en hoe kan deze worden toegepast in eigen reken- en tekenwerk.

XML Technosoft
XML Matrix

Wat is XML?

XML is de afkorting voor “Extensible Markup Language” en voor velen onder ons zegt dit niet veel. Voor een duidelijk uitleg is het goed om een stap terug in de tijd te doen. Onderstaande figuur laat enkele voorbeelden zien van digitale data.

XML voor constructeur

Dit zijn drie verschillende fragmenten van data bestanden. Digitale bestanden met data van bijvoorbeeld een constructie, of een ledenbestand of de tekst van een boek. Het is niet duidelijk wat deze data voorstelt en wat een computer hiermee moet doen. Als niet duidelijk is welke software deze data heeft gegenereerd is het niet mogelijk deze data te lezen of te bewerken. Dit komt overeen met het invoeren van een dwg-bestand in Excel of Word. Of andersom.

Rond 1970 heeft men onderkent dat het opslaan van grote hoeveelheden data in “1” en “0” niet zo verstandig is gezien de snelle ontwikkelingen op het gebied van software én hardware. Er ontstond een behoeft aan digitale data opslag waarbij altijd duidelijk is wat de data voorstelt en hoe deze te lezen en te bewerken. In 1970 heeft Charles Goldfarb (IBM) een nieuwe data standaard ontwikkeld, SGML (Standardised Generalised Markup Language). Dit zou moeten garanderen dat databestanden in dit formaat altijd leesbaar zijn voor computers én mensen (zij maken immers de hardware en software).

 

De standaard SGML is sinds de ontwikkeling verantwoordelijk voor de totstandkoming van allerlei andere standaarden zoals HTML en XML. Een voorbeeld van de inhoud van een XML bestand is gegeven in de volgende figuur.

XML voorbeeld

De inhoud van dit XML bestand kan iedereen lezen en iedereen heeft een redelijk beeld van de inhoud van de data en wat ermee te doen. Het gaat om muziek, artiesten en liedjes. Het is duidelijk dat deze data in principe over honderd jaar nog leesbaar is, mits men deze data ook daadwerkelijk kan inzien met bijvoorbeeld een programma als Microsofts “Kladblok”. Niet alle stukjes van de XML zullen misschien even duidelijk zijn, maar de strekking van dergelijke bestanden zal heel duidelijk zijn. Veel beter dan de eerste voorbeelden van data.

 

Het XML format

XML stelt de gebruikers in staat om elke willekeurige data op een logische en leesbare wijze te formuleren en op te slaan op een computer. De gebruiker kan dit geheel naar eigen inzicht doen. Een klein voorbeeld. Het laatste voorbeeld van de onleesbare data (figuur 1) is een voorbeeld van een csv-bestand, opgesteld door Excel. Hoewel dit bestand leesbaar is (met bijvoorbeeld “Kladblok”) is niet duidelijk om welke data het gaat. De data is nog steeds niet begrijpelijk en verwerkbaar. Echter als deze data in XML format wordt weergegeven is het voor iedereen direct duidelijk dat het hier gaat om XY-coördinaten van knopen in een 2D raamwerk.

CSV versus XML

De basisregels voor het XML format zijn heel eenvoudig. Als men deze in acht neemt kan iedereen een XML

bestand opstellen. Dit kan in MS Kladblok (Notepad) of MS Word of MS Excel enz. Elke willekeurige editor voor het maken van teksten kan data in een XML format verwerken. Een andere mogelijkheid is het gebruik van specifieke XML editors. Onderstaand zijn enkele voorbeelden gegeven. Op internet zijn diverse gratis editors terug te vinden. Het voordeel van de XML editors is dat deze de basisregels, de haakjes enzovoorts automatisch toepassen (minder kans op fouten).

XML editor

"XML Copy Editor" of "Eclipse XML Editor"

XML editor

"Notepad ++"

De basisregels voor het opstellen van een XML bestand zijn:

  • De eerste regel, de zogenaamde XML declaratie

    De eerste regel moet altijd gelijk zijn aan: <?xml version=”1.0” encoding=”utf-8”?>
    In deze regel wordt duidelijk dat het om een XML-bestand gaat. De attribuut "version" laat zien om welke versie van XML het gaat, versie 1.0. Zoals elke “taal” is ook XML onderhevig aan ontwikkeling. Door het gebruik van een versienummer in de declaratie kan er nooit een misverstand ontstaan om welke versie van XML het gaat en kunnen er ook geen fouten optreden bij de verwerking van de XML code.

    Het laatste stukje tekst, attribuut encoding=”utf-8” zegt iets over de karakters die wordt gebruikt en verwerkt in het XML-bestand zelf. Een bekende karakterset is ASCII. ASCII bevat ons alfabet (hoofdletters en kleine letters), getallen van 0 tot en met 9 en verschillende leestekens. In totaal heeft ASCII een set van 256 karakters. “utf-8” is een Unicode type dat veel meer karakters omvat, waaronder bijvoorbeeld Griekse karakters (α of β) of bijzondere karakters als Ϫ ζ Ψ Д ж ђ ё ў ӑ ӕ ئ خ ṵ. , maar ook allerlei buitenlandse leestekens en talen zoals Chinees en Hebreeuws. Al deze zijn onderdeel van “utf-8”. “utf-8” is een set van 1.112.064 karakters. Even als de XML versie is het goed de toegepaste karaktersets duidelijk vast te leggen in de XML declaratie. Voor nu; “utf-8” is altijd goed, ook al wordt er enkel een sub set van gebruikt zoals de ASCII set.

    Er zijn nog meer attributen beschikbaar voor de XML declaratie, maar dit zijn de belangrijkste twee. Het is niet nodig om van de inhoud precies op de hoogte te zijn. Plaats deze specifieke regel standaard als eerste in het XML-bestand en dan gaat het zeker goed.

    Nog een kleine opmerking; XML is hoofdletter gevoelig.

    Een XML bestand heeft nog meer onderdelen die aan regels gebonden zijn, zoals:

  • <Tags>
    Alle data wordt tussen zogenaamde tags geplaatst. Een tag is een omschrijving van de betreffende data. Deze kan geheel naar eigen inzicht worden gekozen. De tags MOETEN altijd tussen haakjes worden geplaatst: “<” voor de tag en “>” aan het eind van een tag.
    Specifieke data heeft altijd een begin en eind tag. De omschrijving van de start-tag en de eind-tag MOET altijd met elkaar overeenkomen. In voorgaande voorbeeld is <Nodes> een start-tag en is </Nodes>  een eind-tag, zie de “/”.

  • Attributen
    Attributen zijn specifieke items binnen een tag. Hiermee is het mogelijk om een tag extra items te geven van en waarden te voorzien. In het voorbeeld is de tag Node benoemd onder de hoofd tag <Nodes> . Dit betekent dat er een “hoofdstuk” <Nodes> of de lijst <Nodes> is. In het hoofdstuk (lijst) worden vervolgens afzonderlijke Node elementen benoemd. Van een Node is de volgende informatie beschikbaar; uniek knoopnummer, x-coördinaat en de y-coördinaat. Deze informatie kan direct aan de tag worden gekoppeld door de volgende formulering:

    <Nodes>
           <Node ID=”1”   X=”2,35225”  Y=”56,23585”/>
           <Node ID=”2”   X=”8,79225”  Y=”24,8500”/>
    </Nodes>

    De waarden 1 of 2,35225 MOET tussen aanhalingstekens worden geplaatst. De tag MOET beginnen met een “<” en eindigen met een “/>”. De namen van de specifieke items staan voor een “=” teken.

    Een andere manier om dergelijke informatie te verwerken is:
    <Nodes>
          <Node>

           <ID> 1</ID>
           <X>2,35225</X>
           <Y>56,23585</Y>
     </Node>
     <Node>

                    <ID> 2</ID>
                    <X>8,79225</X>
                    <Y>24,8500</Y>
              </Node>

         </Nodes>

Let op: in deze notatie worden de waarden 1 en 2,35225 NIET tussen aanhalingstekens geplaatst.

Het is duidelijk dat de eerste schrijfwijze compacter en overzichtelijker is. Het laat zien dat er vrijheid is het structureren en omschrijven van data. De manier van omschrijven wat de data is en hoe deze is opgebouwd laat iedere lezer duidelijk zien wat de data voorstelt.

  • Opzet
    De opzet van een XML-bestand heeft overeenkomsten met de inhoud van een boek, de hoofdstukken, en paragrafen en sub paragrafen. Bij het opstellen van de inhoud krijgen de verschillende tags (hoofdstukken en paragrafen)  en attributen (de tekst) een naam die past bij het betreffende data, bij het betreffende hoofdstuk en paragraaf.
    De beste start van een nieuw XML-bestand is het opstellen van een “inhoudsopgave” (zie figuur). Als de structuur bekent is kan de verwerking van de daadwerkelijke data tot uitvoering komen. Dit betekent doorgaans dat de structuur in software wordt verwerkt en die gaat vervolgens de data automatisch genereren en ordenen conform die structuur (zie figuur). Het blijft altijd mogelijk om de invulling handmatig uit te voeren en/of te wijzigen.

    Het verkrijgen van inzicht in de basisopzet, de structuur en tagnamen van XML-bestanden van bestaande software (bijvoorbeeld rekensoftware) is heel eenvoudig. Neem de (reken)software en maak een eenvoudige constructie / tekening en sla deze op. Laat de (reken)software vervolgens een XML bestand genereren van diezelfde constructie / tekening en bekijk het resultaat in een editor (Kladblok of Word). De hele structuur, tags en attributen zijn nu zichtbaar. Wijzig enkele onderdelen en lees de nieuwe XML met de (reken)software en zie het resultaat. De gevonden structuur, tags en attributen kunnen vervolgens worden gebruikt voor het genereren van nieuwe, eigen XML bestanden als invoer voor de betreffende (reken)software.
XML rekenprogramma roosters

Er zijn nog veel meer manieren om data te verwerken en het is goed om te kijken naar aanvullende informatie over dit onderwerp als het genereren van XML bestanden aan de orde is.  Voor meer informatie over XML zie het internet (www.w3schools.com/xml/) of zoek een goed boek, zoals “XML voor dummies”.

 

Het is goed om te melden dat er nog meer “talen” zijn als XML. De ontwikkelingen staan immers niet stil. Geïnteresseerden kunnen kijken naar “JSON” en VHML en BPML enz.. Het basis principe van al deze talen is gelijk: maak data voor altijd leesbaar.

 

Gebruik XML als in- en uitvoer

De basisopzet van XML mag nu duidelijk zijn. De toepassingen van XML zijn erg groot en heel veel software heeft tegenwoordig de mogelijkheid om XML-bestanden te lezen en/of te schrijven, zo ook allerlei reken- en tekensoftware. Enkele voorbeelden hiervan zijn de bekende pakketten als Autocad, Revit, Tekla, Dynamo en Grasshopper. Voor rekensoftware zie pakketten van Matrix, Technosoft, Scia Engineer en Ansys. Allen hebben ze de mogelijkheid om XML te lezen en/of schrijven. Als laatste voorbeeld wordt hier Excel genoemd, omdat Excel bij iedereen bekend is en een grote hulp kan bieden bij het ontwerpen, genereren, lezen en schrijven van XLM-bestanden. Excel heeft hier verschillende interessante tools voor.

Een handig weetje is misschien dat webbrowsers XML-bestanden ook kunnen lezen.

 

Omdat al deze pakketten XML kunnen lezen en schrijven is enige interactie tussen de software mogelijk. Helaas niet direct, maar met een kleine omweg. Deze omweg kan worden beschouwd als het uitvoeren van een “vertaling”. Waarom een “vertaling”? Elk pakket zijn eigen opbouw, zijn eigen set van “tags” en attributen. Zo kan het zijn dat de knopen van een 2D frame in pakket (A) met de tag <Nodes>  zijn voorzien en in pakket (B) met de tag <Knopen>. Dit betekent dat als we een XML-bestand van pakket (A) in (B) willen gebruiken, eerst de XML (A) moeten vertalen door  <Nodes> te vervangen door <Knopen>. Na het vertalen kan pakket (B) de data uit (A) lezen en verwerken. Het vertalen is relatief eenvoudig te automatiseren, bijvoorbeeld met macro’s in Word of Excel, of het schrijven van een eigen programma in bijvoorbeeld VBA. Omdat beide XML-bestanden duidelijk leesbaar zijn, zal de vertaling na de automatisering elke keer weer opnieuw zeer eenvoudig verlopen. De basisopzet, tags en attributen pakket (A) is altijd gelijk en dat geldt ook voor (B).

Overigens is de meest eenvoudige vorm van “vertalen” het gebruik van “Find” en “Replace” in Word of andere teksteditor. Is een “vertaling” eenmaal gereed kan deze van pakket (A) naar (B) en terug.

 

Waarom is het uitwisselen van data tussen verschillende pakketten zo handig?
Het geeft verschillende krachtige mogelijkheden, een extra dimensies aan het gebruik van software en data, zoals:

 

  • Benutten van de verschillende mogelijkheden van verschillende software pakketten.
    Stel pakket (A) heeft de mogelijkheid om wapening te berekenen en pakket (B) heeft dit niet, maar pakket (B) heeft de mogelijkheid om 3D raamwerken te berekenen en pakket (A) heeft deze optie wederom niet. Met XML is het mogelijk om data van een 3D constructie uit te wisselen tussen beide pakketten. Voor de betonnen balken uit het 3D raamwerk (B) kan pakket (A) de wapening berekenen. Met het uitwisselen van XML data is dit eenvoudig. Zo kan optimaal gebruik worden gemaakt van de mogelijkheden van verschillende software.

  • Genereren van “standaard” structuren.
    Een leverancier van prefab betonnen funderingsbalken moet voor elke fundering die geleverd wordt een constructieve berekening opstellen. Daarvoor wordt gebruik gemaakt van rekenpakket (A). De basisvorm van de fundering wordt door de architect bepaald in Autocad of Revit. De leverancier kan met XML bestand uit Autocad of Revit automatisch een invoerbestand genereren en deze vervolgens gebruiken als invoer voor rekenpakket (A). Daarbij kunnen direct de eigenschappen van de fundering, zoals standaard afmetingen en standaard wapening worden verwerkt in de XML. Met deze werkwijze is een flinke stap in de automatisering van het engineeringsproces van deze prefab fundering mogelijk.

  • Combinatie van verschillende soorten pakketten.
    Met behulp van XML -bestanden is het ook mogelijk om data van twee totaal verschillende soorten software met elkaar te combineren. Zo kan de data uit rekensoftware worden gebruikt in tekensoftware en visa versa. Voor het uitwisselen van de geometrie van de constructie zijn er inmiddels wel standaard vormen van uitwisselingen mogelijk, zoals DXF, DWG en IFC bestanden. Maar het uitwisselen van berekende krachten, spanningen, vervormingen of wapening is vaak niet mogelijk. XML maakt het wel mogelijk bijvoorbeeld de berekende wapening uit een betonconstructie direct naar een tekening te brengen, waarbij alle eigen (bureau) standaarden worden toegepast. De berekende balkwapening wordt automatisch verwerkt tot een productietekening, waarbij eenvoudig aanvullingen worden gedaan in bijzondere situaties zoals de wapening rondom sparingen of wapening in nokken en tanden in diezelfde balken. Dergelijke detailwapening wordt nooit in een 3D raamwerk gegenereerd. Via XML kan deze eenvoudig worden aangevuld. Uiteraard zijn andere combinaties ook mogelijk.

Dit zijn nog maar een paar voorbeelden waarbij XML-bestanden voordelen kan bieden bij het automatiseren van werkzaamheden en werkprocessen. De eigen creativiteit is hier de enige beperking, de mogelijkheden zijn eindeloos.

Automatisering constructieberekening met XML
Automatisering met XML

XML, maar dan anders

Er zijn veel meer leesbare bestandsvormen voor het vastleggen van digitale data. XML is een erg universele vorm en wordt door veel verschillende software pakketten toegepast. Er zijn echter ook “eigen” ontwikkelingen op het gebied van leesbare data bestanden, zoals DXF en IFC bestanden. Dergelijke bestanden zijn heel specifiek geschreven voor hele specifieke toepassingen. De gedachte hierbij is echter hetzelfde: leesbare data, geschikt voor alle tijden.

 

Ondanks het feit dat deze data niet voldoet aan het XML-format zijn echter wel dezelfde voordelen en mogelijk-heden van toepassing. Voorgaande voorbeelden van het gebruik van XML-bestanden voor het automatiseren van werkzaamheden is ook prima mogelijk met o.a. OBJ, STL, DAE, RTF, DXF en IFC-bestanden.

Dit geldt voor alle data-bestanden die leesbaar zijn in bijvoorbeeld “Kladblok” of Word, de zogenaamde ASCII-bestanden of TXT-bestanden. Tegenwoordig zijn deze bestanden zo vormgegeven dat deze leesbaar zijn. Sommigen, zoals DXF bestanden zijn relatief eenvoudig van opzet en anderen, zoals IFC-bestanden zijn wederom erg complex. Echter omdat het hier om leesbare bestanden gaat, is het mogelijk aanpassingen door te voeren die door software kan worden gelezen. Bijvoorbeeld het wijzigen van coördinaten van onderdelen van een constructie of materiaaleigenschappen. Dan is het ook mogelijk dergelijke bestanden zelf te genereren en elke vorm te geven die nodig is om een specifieke handeling te automatiseren.

 

Zie ook artikel "Woning Bouwblok Generator"