summaryrefslogtreecommitdiffhomepage
path: root/nl-nl
diff options
context:
space:
mode:
authorBohdan Shtepan <winsatana@ya.ru>2016-04-05 20:27:09 +0300
committerBohdan Shtepan <winsatana@ya.ru>2016-04-05 20:27:09 +0300
commit8abfffd183d34c6b76dd117351a879e8b093f8c1 (patch)
tree2ded23445aff1b22c53078e13efc7054ce8fddde /nl-nl
parentaad2d2b6f2e44f7647d0512dea263029c1d4d1fa (diff)
parent8ddf7b5178524ab84f9e59b3e9d48343805d8ca0 (diff)
Merge remote-tracking branch 'adambard/master'
Diffstat (limited to 'nl-nl')
-rw-r--r--nl-nl/amd-nl.html.markdown235
-rw-r--r--nl-nl/bf.html.markdown (renamed from nl-nl/brainfuck-nl.html.markdown)2
-rw-r--r--nl-nl/coffeescript-nl.html.markdown11
-rw-r--r--nl-nl/json-nl.html.markdown71
-rw-r--r--nl-nl/json.html.markdown61
-rw-r--r--nl-nl/typescript-nl.html.markdown174
-rw-r--r--nl-nl/xml-nl.html.markdown134
7 files changed, 447 insertions, 241 deletions
diff --git a/nl-nl/amd-nl.html.markdown b/nl-nl/amd-nl.html.markdown
deleted file mode 100644
index d5e0022a..00000000
--- a/nl-nl/amd-nl.html.markdown
+++ /dev/null
@@ -1,235 +0,0 @@
----
-category: tool
-tool: amd
-contributors:
- - ["Frederik Ring", "https://github.com/m90"]
-translators:
- - ["Reinoud Kruithof", "https://github.com/reinoudk"]
-filename: learnamd-nl.js
-lang: nl-nl
----
-
-## Aan de slag met AMD
-
-De **Asynchronous Module Definition** API specificeert een mechanisme om JavaScript
- modules the definiëren zodat de module en dependencies (afhankelijkheden) asynchroon
- geladen kunnen worden. Dit is vooral erg geschikt voor de browseromgeving, waar het
- synchroon laden van modules zorgt voor problemen qua prestatie, gebruiksvriendelijkheid,
- debugging en cross-domain toegangsproblemen.
-
-### Basis concept
-```javascript
-// De basis AMD API bestaat uit niks meer dan twee methodes: `define` en `require`
-// and gaat vooral over de definitie en gebruik van modules:
-// `define(id?, dependencies?, factory)` definieert een module
-// `require(dependencies, callback)` importeert een set van dependencies en
-// gebruikt ze in de gegeven callback
-
-// Laten we starten met het gebruiken van define om een nieuwe module (met naam)
-// te creëeren, welke geen dependencies heeft. Dit doen we door een naam
-// en een zogeheten factory functie door te geven aan define:
-define('awesomeAMD', function(){
- var isAMDAwesome = function(){
- return true;
- };
- // De return waarde van een module's factory functie is
- // wat andere modules of require calls ontvangen wanneer
- // ze onze `awesomeAMD` module requiren.
- // De geëxporteerde waarde kan van alles zijn: (constructor) functies,
- // objecten, primitives, zelfs undefined (hoewel dat niet veel nut heeft).
- return isAMDAwesome;
-});
-
-
-// We gaan nu een andere module defineren die afhankelijk is van onze
-// `awesomeAMD` module. Merk hierbij op dat er nu een extra functieargument
-// is die de dependencies van onze module defineert:
-define('schreewlelijk', ['awesomeAMD'], function(awesomeAMD){
- // dependencies worden naar de factory's functieargumenten
- // gestuurd in de volgorde waarin ze gespecificeert zijn
- var vertelIedereen = function(){
- if (awesomeAMD()){
- alert('Dit is zOoOo cool!');
- } else {
- alert('Vrij saai, niet?');
- }
- };
- return vertelIedereen;
-});
-
-// Nu we weten hoe we define moeten gebruiken, kunnen we require gebruiken
-// om ons programma mee te starten. De vorm van `require` is
-// `(arrayVanDependencies, callback)`.
-require(['schreeuwlelijk'], function(schreewlelijk){
- schreeuwlelijk();
-});
-
-// Om deze tutorial code uit te laten voeren, gaan we hier een vrij basic
-// (niet-asynchrone) versie van AMD implementeren:
-function define(naam, deps, factory){
- // merk op hoe modules zonder dependencies worden afgehandeld
- define[naam] = require(factory ? deps : [], factory || deps);
-}
-
-function require(deps, callback){
- var args = [];
- // we halen eerst alle dependecies op die nodig zijn
- // om require aan te roepen
- for (var i = 0; i < deps.length; i++){
- args[i] = define[deps[i]];
- }
- // voldoe aan alle dependencies van de callback
- return callback.apply(null, args);
-}
-// je kan deze code hier in actie zien (Engels): http://jsfiddle.net/qap949pd/
-```
-
-### require.js in de echte wereld
-
-In contrast met het voorbeeld uit de introductie, implementeert `require.js`
- (de meest populaire AMD library) de **A** in **AMD**. Dit maakt het mogelijk
- om je modules en hun dependencies asynchroon in the laden via XHR:
-
-```javascript
-/* file: app/main.js */
-require(['modules/someClass'], function(SomeClass){
- // de callback word uitgesteld tot de dependency geladen is
- var things = new SomeClass();
-});
-console.log('Dus, hier wachten we!'); // dit wordt als eerste uitgevoerd
-```
-
-De afspraak is dat je over het algemeen één module in één bestand opslaat.
-`require.js` kan module-namen achterhalen gebaseerd op de bestandslocatie,
-dus je hoeft je module geen naam te geven. Je kan simpelweg aan ze referen
- door hun locatie te gebruiken.
-In het voorbeeld nemen we aan dat `someClass` aanwezig is in de `modules` map,
- relatief ten opzichte van de `baseUrl` uit je configuratie.
-
-* app/
- * main.js
- * modules/
- * someClass.js
- * someHelpers.js
- * ...
- * daos/
- * things.js
- * ...
-
-Dit betekent dat we `someClass` kunnen defineren zonder een module-id te specificeren:
-
-```javascript
-/* file: app/modules/someClass.js */
-define(['daos/things', 'modules/someHelpers'], function(thingsDao, helpers){
- // definitie van de module gebeurt, natuurlijk, ook asynchroon
- function SomeClass(){
- this.method = function(){/**/};
- // ...
- }
- return SomeClass;
-});
-```
-Gebruik `requirejs.config(configObj)` om het gedrag van de standaard mapping
- aan te passen in je `main.js`:
-
-```javascript
-/* file: main.js */
-requirejs.config({
- baseUrl : 'app',
- paths : {
- // je kan ook modules uit andere locatie inladen
- jquery : '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min',
- coolLibUitBower : '../bower_components/cool-lib/coollib'
- }
-});
-require(['jquery', 'coolLibUitBower', 'modules/someHelpers'], function($, coolLib, helpers){
- // een `main` bestand moet require minstens eenmaal aanroepen,
- // anders zal er geen code uitgevoerd worden
- coolLib.doFancyDingenMet(helpers.transform($('#foo')));
-});
-```
-Op `require.js` gebaseerde apps hebben vaak een enkel beginpunt (`main.js`)
- welke toegevoegd wordt aan de `require.js` script tag als een data-attribuut.
-Deze zal automisch geladen en uitgevoerd worden als de pagina laadt:
-
-```html
-<!DOCTYPE html>
-<html>
-<head>
- <title>Honder script tags? Nooi meer!</title>
-</head>
-<body>
- <script src="require.js" data-main="app/main"></script>
-</body>
-</html>
-```
-
-### Een heel project optimaliseren met r.js
-
-Veel mensen geven er de voorkeur aan om AMD te gebruiken tijdens de
- ontwikkelfase om code op een gezonde manier te organiseren maar
- willen nog steeds een enkel scriptbestand gebruiken in productie in
- plaats van honderderen XHR verzoeken uit te voeren als de pagina laadt.
-
-`require.js` wordt geleverd met een script genaamd `r.js` (die je waarschijnlijk
-uitvoert in node.js, hoewel Rhino ook ondersteund wordt) welke de
-dependency book van je project analyseert en een enkel bestand bouwt met daarin
-al je module (juist genaamd), geminificeerd en klaar voor productie.
-
-Instaleren met `npm`:
-```shell
-$ npm install requirejs -g
-```
-
-Nu kun je het een configuratiebestand voeden:
-```shell
-$ r.js -o app.build.js
-```
-
-Voor ons bovenstaande voorbeeld zou de configuratie er zo uit kunnen zien:
-```javascript
-/* file : app.build.js */
-({
- name : 'main', // naam van het beginpunt
- out : 'main-built.js', // naam van het bestand waar de output naar geschreven wordt
- baseUrl : 'app',
- paths : {
- // `empty:` verteld r.js dat dee nog steeds geladen moet worden van de CDN,
- // gebruik makend van de locatie gespecificeert in `main.js`
- jquery : 'empty:',
- coolLibUitBower : '../bower_components/cool-lib/coollib'
- }
-})
-```
-Verwissel simpelweg `data-main` om het gebouwde bestand te gebruiken in productie:
-```html
-<script src="require.js" data-main="app/main-built"></script>
-```
-
-Een erg gedetaileerd [overzicht van bouwopties](https://github.com/jrburke/r.js/blob/master/build/example.build.js) is
-beschikbar in de GitHub repo (Engels).
-
-Hieronder vind je nog meer informatie over AMD (Engels).
-
-### Onderwerpen die niet aan bod zijn gekomen
-* [Loader plugins / transforms](http://requirejs.org/docs/plugins.html)
-* [CommonJS style loading and exporting](http://requirejs.org/docs/commonjs.html)
-* [Advanced configuration](http://requirejs.org/docs/api.html#config)
-* [Shim configuration (loading non-AMD modules)](http://requirejs.org/docs/api.html#config-shim)
-* [CSS loading and optimizing with require.js](http://requirejs.org/docs/optimization.html#onecss)
-* [Using almond.js for builds](https://github.com/jrburke/almond)
-
-### Verder lezen:
-
-* [Official Spec](https://github.com/amdjs/amdjs-api/wiki/AMD)
-* [Why AMD?](http://requirejs.org/docs/whyamd.html)
-* [Universal Module Definition](https://github.com/umdjs/umd)
-
-### Implementaties:
-
-* [require.js](http://requirejs.org)
-* [dojo toolkit](http://dojotoolkit.org/documentation/tutorials/1.9/modules/)
-* [cujo.js](http://cujojs.com/)
-* [curl.js](https://github.com/cujojs/curl)
-* [lsjs](https://github.com/zazl/lsjs)
-* [mmd](https://github.com/alexlawrence/mmd)
diff --git a/nl-nl/brainfuck-nl.html.markdown b/nl-nl/bf.html.markdown
index 6062b24c..016e2ba2 100644
--- a/nl-nl/brainfuck-nl.html.markdown
+++ b/nl-nl/bf.html.markdown
@@ -1,5 +1,5 @@
---
-language: brainfuck
+language: bf
contributors:
- ["Prajit Ramachandran", "http://prajitr.github.io/"]
- ["Mathias Bynens", "http://mathiasbynens.be/"]
diff --git a/nl-nl/coffeescript-nl.html.markdown b/nl-nl/coffeescript-nl.html.markdown
index dc0b1e19..390e6572 100644
--- a/nl-nl/coffeescript-nl.html.markdown
+++ b/nl-nl/coffeescript-nl.html.markdown
@@ -6,6 +6,7 @@ contributors:
translators:
- ["Jelle Besseling", "https://github.com/Jell-E"]
- ["D.A.W. de Waal", "http://github.com/diodewaal"]
+ - ["Sam van Kampen", "http://tehsvk.net"]
filename: coffeescript-nl.coffee
lang: nl-nl
---
@@ -13,10 +14,10 @@ lang: nl-nl
CoffeeScript is een kleine programmeertaal die direct compileert naar
JavaScript en er is geen interpretatie tijdens het uitvoeren.
CoffeeScript probeert om leesbare, goed geformatteerde en goed draaiende
-JavaScript code te genereren, die in elke JavaScript runtime werkt, als een
+JavaScript code te genereren, die in elke JavaScript-runtime werkt, als een
opvolger van JavaScript.
-Op [de CoffeeScript website](http://coffeescript.org/), staat een
+Op [de CoffeeScript-website](http://coffeescript.org/), staat een
volledigere tutorial voor CoffeeScript.
``` coffeescript
@@ -26,7 +27,7 @@ volledigere tutorial voor CoffeeScript.
###
Blokken commentaar maak je zo, ze vertalen naar JavaScripts */ en /*
-in de uitvoer van de CoffeeScript compiler.
+in de uitvoer van de CoffeeScript-compiler.
Het is belangrijk dat je ongeveer snapt hoe JavaScript
werkt voordat je verder gaat.
@@ -43,7 +44,7 @@ getal = -42 if tegengestelde #=> if(tegengestelde) { getal = -42; }
kwadraat = (x) -> x * x #=> var kwadraat = function(x) { return x * x; }
vul = (houder, vloeistof = "koffie") ->
- "Nu de #{houder} met #{koffie} aan het vullen..."
+ "Nu de #{houder} met #{vloeistof} aan het vullen..."
#=>var vul;
#
#vul = function(houder, vloeistof) {
@@ -80,7 +81,7 @@ wedstrijd = (winnaar, lopers...) ->
alert "Ik wist het!" if elvis?
#=> if(typeof elvis !== "undefined" && elvis !== null) { alert("I knew it!"); }
-# Lijst abstractie:
+# Lijstabstracties:
derdemachten = (wiskunde.derdemacht num for num in lijst)
#=>derdemachten = (function() {
# var _i, _len, _results;
diff --git a/nl-nl/json-nl.html.markdown b/nl-nl/json-nl.html.markdown
new file mode 100644
index 00000000..906112ff
--- /dev/null
+++ b/nl-nl/json-nl.html.markdown
@@ -0,0 +1,71 @@
+---
+language: json
+filename: learnjson-nl.json
+contributors:
+ - ["Anna Harren", "https://github.com/iirelu"]
+ - ["Marco Scannadinari", "https://github.com/marcoms"]
+ - ["himanshu", "https://github.com/himanshu81494"]
+translators:
+ - ["Niels van Velzen", "https://nielsvanvelzen.me"]
+lang: nl-nl
+---
+
+Gezien JSON een zeer eenvouding formaat heeft zal dit een van de simpelste
+Learn X in Y Minutes ooit zijn.
+
+JSON heeft volgens de specificaties geen commentaar, ondanks dat hebben de
+meeste parsers support voor C-stijl (`//`, `/* */`) commentaar.
+Sommige parsers staan zelfs trailing komma's toe.
+(Een komma na het laatste element in een array of ahter de laatste eigenshap van een object).
+Het is wel beter om dit soort dingen te vermijden omdat het niet overal zal werken.
+
+In het voorbeeld zal alleen 100% geldige JSON gebruikt worden.
+
+Data types gesupport door JSON zijn: nummers, strings, booleans, arrays, objecten en null.
+Gesupporte browsers zijn: Firefox(Mozilla) 3.5, Internet Explorer 8, Chrome, Opera 10, Safari 4.
+De extensie voor JSON bestanden is ".json". De MIME type is "application/json"
+Enkele nadelen van JSON zijn het gebrek een type definities en een manier van DTD.
+
+```json
+{
+ "sleutel": "waarde",
+
+ "sleutels": "zijn altijd in quotes geplaatst",
+ "nummers": 0,
+ "strings": "Hallø, wereld. Alle unicode karakters zijn toegestaan, samen met \"escaping\".",
+ "boolean": true,
+ "niks": null,
+
+ "groot nummer": 1.2e+100,
+
+ "objecten": {
+ "commentaar": "In JSON gebruik je vooral objecten voor je strutuur",
+
+ "array": [0, 1, 2, 3, "Arrays kunnen alles in zich hebben.", 5],
+
+ "nog een object": {
+ "commentaar": "Objecten kunnen genest worden, erg handig."
+ }
+ },
+
+ "dwaasheid": [
+ {
+ "bronnen van kalium": ["bananen"]
+ },
+ [
+ [1, 0, 0, 0],
+ [0, 1, 0, 0],
+ [0, 0, 1, "neo"],
+ [0, 0, 0, 1]
+ ]
+ ],
+
+ "alternatieve stijl": {
+ "commentaar": "Kijk dit!"
+ , "De komma positie": "maakt niet uit zolang het er maar is"
+ , "nog meer commentaar": "wat leuk"
+ },
+
+ "dat was kort": "En nu ben je klaar, dit was alles wat je moet weten over JSON."
+}
+```
diff --git a/nl-nl/json.html.markdown b/nl-nl/json.html.markdown
new file mode 100644
index 00000000..bedfb70a
--- /dev/null
+++ b/nl-nl/json.html.markdown
@@ -0,0 +1,61 @@
+---
+language: json
+filename: learnjson-nl.json
+contributors:
+ - ["Anna Harren", "https://github.com/iirelu"]
+ - ["Marco Scannadinari", "https://github.com/marcoms"]
+translators:
+ - ["Mathieu De Coster", "https://github.com/m-decoster"]
+lang: nl-nl
+---
+
+Aangezien JSON een extreem eenvoudig datauitwisselingsformaat is, zal dit waarschijnlijk
+de meest eenvoudige Learn X in Y Minutes ooit zijn.
+
+Puur JSON heeft geen commentaar, maar de meeste parsers zullen commentaar in de stijl
+van C (`//`, `/* */`) aanvaarden. In dit voorbeeld zal alles 100% correcte JSON zijn.
+Gelukkig spreekt het meeste voor zichzelf.
+
+```json
+{
+ "key": "value",
+
+ "keys": "moeten altijd tussen dubbele aanhalingstekens staan",
+ "getallen": 0,
+ "strings": "Hellø, world. Alle Unicode-karakters zijn toegelaten, zo ook \"escaping\".",
+ "heeft json booleans?": true,
+ "niets": null,
+
+ "groot getal": 1.2e+100,
+
+ "objecten": {
+ "commentaar": "De meeste structuur wordt gemaakt met objecten.",
+
+ "array": [0, 1, 2, 3, "Arrays kunnen eender wat bevatten.", 5],
+
+ "nog een object": {
+ "commentaar": "Hoe handig, we kunnen objecten nesten."
+ }
+ },
+
+ "dwaasheid": [
+ {
+ "bronnen van kalium": ["bananen"]
+ },
+ [
+ [1, 0, 0, 0],
+ [0, 1, 0, 0],
+ [0, 0, 1, "neo"],
+ [0, 0, 0, 1]
+ ]
+ ],
+
+ "alternatieve stijl": {
+ "commentaar": "kijk hier eens naar!"
+ , "komma locatie": "maakt niet uit - zo lang het voor de value komt, is alles in orde"
+ , "nog commentaar": "hoe leuk"
+ },
+
+ "dat was kort": "Je bent klaar. Je kent nu alles dat JSON kan aanbieden."
+}
+```
diff --git a/nl-nl/typescript-nl.html.markdown b/nl-nl/typescript-nl.html.markdown
new file mode 100644
index 00000000..dcea2a4d
--- /dev/null
+++ b/nl-nl/typescript-nl.html.markdown
@@ -0,0 +1,174 @@
+---
+language: TypeScript
+contributors:
+ - ["Philippe Vlérick", "https://github.com/pvlerick"]
+filename: learntypescript-nl.ts
+translators:
+ - ["Niels van Velzen", "https://nielsvanvelzen.me"]
+lang: nl-nl
+---
+
+TypeScript is een taal gericht op het versoepelen van de ontwikkeling van
+grote applicaties gemaakt in JavaScript.
+TypeScript voegt veelgebruikte technieken zoals klassen, modules, interfaces,
+generieken en statische typen toe aan JavaScript.
+TypeScript is een superset van JavaScript: alle JavaScript code is geldige
+TypeScript code waardoor de overgang van JavaScript naar TypeScript wordt versoepeld.
+
+Dit artikel focust zich alleen op de extra's van TypeScript tegenover [JavaScript] (../javascript-nl/).
+
+Om de compiler van TypeScript te kunnen proberen kun je naar de [Playground] (http://www.typescriptlang.org/Playground) gaan.
+Hier kun je automatisch aangevulde code typen in TypeScript en de JavaScript variant bekijken.
+
+```js
+// Er zijn 3 basis typen in TypeScript
+var isKlaar: boolean = false;
+var lijnen: number = 42;
+var naam: string = "Peter";
+
+// Wanneer het type onbekend is gebruik je "Any"
+var nietZeker: any = 4;
+nietZeker = "misschien een string";
+nietZeker = false; // Toch een boolean
+
+// Voor collecties zijn er "typed arrays"
+var lijst: number[] = [1, 2, 3];
+// of generieke arrays
+var lijst: Array<number> = [1, 2, 3];
+
+// Voor enumeraties:
+enum Kleur {Rood, Groen, Blauw};
+var c: Kleur = Kleur.Groen;
+
+// Als laatst, "void" wordt gebruikt voor als een functie geen resultaat geeft
+function groteVerschrikkelijkeMelding(): void {
+ alert("Ik ben een vervelende melding!");
+}
+
+// Functies zijn eersteklas ?, supporten de lambda "fat arrow" syntax en
+// gebruiken gebruiken "type inference"
+
+// Het volgende is allemaal hetzelfde
+var f1 = function(i: number): number { return i * i; }
+var f2 = function(i: number) { return i * i; }
+var f3 = (i: number): number => { return i * i; }
+var f4 = (i: number) => { return i * i; }
+// Omdat we maar 1 lijn gebruiken hoeft het return keyword niet gebruikt te worden
+var f5 = (i: number) => i * i;
+
+// Interfaces zijn structureel, elk object wat de eigenschappen heeft
+// is een gebruiker van de interface
+interface Persoon {
+ naam: string;
+ // Optionele eigenschappen worden gemarkeerd met "?"
+ leeftijd?: number;
+ // En natuurlijk functies
+ verplaats(): void;
+}
+
+// Object die gebruikt maakt van de "Persoon" interface
+// Kan gezien worden als persoon sinds het de naam en verplaats eigenschappen bevat
+var p: Persoon = { naam: "Bobby", verplaats: () => {} };
+// Object met de optionele leeftijd eigenschap
+var geldigPersoon: Persoon = { naam: "Bobby", leeftijd: 42, verplaats: () => {} };
+// Ongeldig persoon vanwege de leeftijds type
+var ongeldigPersoon: Persoon = { naam: "Bobby", leeftijd: true };
+
+// Interfaces kunnen ook een functie ype beschrijven
+interface ZoekFunc {
+ (bron: string, subString: string): boolean;
+}
+// Alleen de parameters types zijn belangrijk, namen maken niet uit.
+var mySearch: ZoekFunc;
+mySearch = function(src: string, sub: string) {
+ return src.search(sub) != -1;
+}
+
+// Classes - leden zijn standaard publiek
+class Punt {
+ // Eigenschappen
+ x: number;
+
+ // Constructor - de publieke / prive trefwoorden in deze context zullen
+ // eigenschappen in de klasse kunnen aanmaken zonder ze te defineren.
+ // In dit voorbeeld zal "y" net als "x" gedefineerd worden met minder code.
+ // Standaard waardes zijn ook gesupport
+
+ constructor(x: number, public y: number = 0) {
+ this.x = x;
+ }
+
+ // Functies
+ dist(): number { return Math.sqrt(this.x * this.x + this.y * this.y); }
+
+ // Statische leden
+ static origin = new Punt(0, 0);
+}
+
+var p1 = new Punt(10 ,20);
+var p2 = new Punt(25); // y zal de waarde 0 krijgen
+
+// Overnemen
+class Punt3D extends Punt {
+ constructor(x: number, y: number, public z: number = 0) {
+ super(x, y); // Constructor van ouder aanroepen (Punt)
+ }
+
+ // Overschrijven
+ dist(): number {
+ var d = super.dist();
+ return Math.sqrt(d * d + this.z * this.z);
+ }
+}
+
+// Modules werken ongeveer hetzelfde als namespaces
+// met "." kan je submodules defineren
+module Geometrie {
+ export class Vierkant {
+ constructor(public zijLengte: number = 0) {
+ }
+
+ oppervlakte() {
+ return Math.pow(this.zijLengte, 2);
+ }
+ }
+}
+
+var s1 = new Geometrie.Vierkant(5);
+
+// Local alias for referencing a module
+import G = Geometrie;
+
+var s2 = new G.Vierkant(10);
+
+// Generieken
+// Classes
+class Tupel<T1, T2> {
+ constructor(public item1: T1, public item2: T2) {
+ }
+}
+
+// Interfaces
+interface Paar<T> {
+ item1: T;
+ item2: T;
+}
+
+// En functies
+var paarNaarTupel = function<T>(p: Paar<T>) {
+ return new Tupel(p.item1, p.item2);
+};
+
+var tupel = paarNaarTupel({ item1: "hallo", item2: "wereld" });
+
+// Refferentie naar een definitie bestand:
+/// <reference path="jquery.d.ts" />
+
+```
+
+## Verder lezen (engels)
+ * [TypeScript Official website] (http://www.typescriptlang.org/)
+ * [TypeScript language specifications (pdf)] (http://go.microsoft.com/fwlink/?LinkId=267238)
+ * [Anders Hejlsberg - Introducing TypeScript on Channel 9] (http://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript)
+ * [Source Code on GitHub] (https://github.com/Microsoft/TypeScript)
+ * [Definitely Typed - repository for type definitions] (http://definitelytyped.org/)
diff --git a/nl-nl/xml-nl.html.markdown b/nl-nl/xml-nl.html.markdown
new file mode 100644
index 00000000..930f7cf4
--- /dev/null
+++ b/nl-nl/xml-nl.html.markdown
@@ -0,0 +1,134 @@
+---
+language: xml
+filename: learnxml-nl.xml
+contributors:
+ - ["João Farias", "https://github.com/JoaoGFarias"]
+translators:
+ - ["Frank van Gemeren", "https://github.com/frvge"]
+lang: nl-nl
+---
+
+XML is een markuptaal die ontwikkeld is om data in te bewaren en data mee te
+verzenden.
+
+Anders dan HTML specificeert XML niet hoe data getoond of geformatteerd moet worden.
+Het bevat de data slechts.
+
+* XML Syntax
+
+```xml
+<!-- Dit is commentaar in XML -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<boekenwinkel>
+ <boek categorie="KOKEN">
+ <title taal="nl">Alledaags Italiaans</titel>
+ <auteur>Giada De Laurentiis</auteur>
+ <jaar>2005</jaar>
+ <prijs>30.00</prijs>
+ </boek>
+ <boek categorie="KINDEREN">
+ <titel taal="nl">Harry Potter</titel>
+ <auteur>J K. Rowling</auteur>
+ <jaar>2005</jaar>
+ <prijs>29.99</prijs>
+ </boek>
+ <boek categorie="WEB">
+ <titel taal="en">Learning XML</titel>
+ <auteur>Erik T. Ray</auteur>
+ <jaar>2003</jaar>
+ <prijs>39.95</prijs>
+ </boek>
+</boekenwinkel>
+
+<!-- Hierboven staat een standaard XML bestand.
+ Het begint met een declaratie die optionele metadata bevat.
+
+ XML werkt met een boomstructuur. De stamknoop hierboven is 'boekenwinkel'.
+ Deze heeft drie kinderen die allemaal 'boek' zijn. Deze knopen hebben op
+ hun beurt weer kinderen, enzovoort...
+
+ Knopen hebben open- en sluittags. Kinderen zijn knopen die zich tussen de
+ open- en sluittags van hun ouders bevinden. -->
+
+<!-- XML bevat two soorten data:
+ 1 - Attributen -> Dit is metadata van een knoop.
+ Deze informatie wordt meestal door de XML parser gebruikt om de data op
+ de juiste manier op te slaan. Je herkent het door de syntax in de vorm
+ van naam="waarde" in de open tag.
+ 2 - Elementen -> Dit is de pure data
+ Deze gegevens worden door de parser uit het XML bestand gehaald.
+ Elementen staan tussen de open- en sluittags. -->
+
+
+<!-- Hieronder staat een element met twee attributen -->
+<bestand type="gif" id="4293">computer.gif</bestand>
+
+
+```
+
+* Grammaticaal correcte documenten x Validatie
+
+Een XML document is "grammaticaal correct" of "well-formatted" als de
+syntax correct is. Het is ook mogelijk om meer structuur in het document
+aan te brengen met document definities zoals DTD en XML Schema.
+
+Een XML document dat aan een document definitie voldoet wordt "valide" volgens
+die document definitie genoemd.
+
+Met deze gereedschappen kan je de XML data buiten je applicatie logica
+controleren.
+
+```xml
+
+<!-- Hieronder staat een versimpelde versie voor een boekenwinkel document,
+ met een toevoeging van een DTD definitie. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE note SYSTEM "boekenwinkel.dtd">
+<boekenwinkel>
+ <boek categorie="KOKEN">
+ <titel>Alledaags Italiaans</titel>
+ <prijs>30.00</prijs>
+ </boek>
+</boekenwinkel>
+
+<!-- De DTD kan er als volgt uitzien:-->
+
+<!DOCTYPE note
+[
+<!ELEMENT boekenwinkel (boek+)>
+<!ELEMENT boek (titel,prijs)>
+<!ATTLIST boek categorie CDATA "Literatuur">
+<!ELEMENT titel (#PCDATA)>
+<!ELEMENT prijs (#PCDATA)>
+]>
+
+
+<!-- De DTD begint met een declaratie.
+ Hierna volgt de declaratie van de stamknoop, die 1 of meer 'boek' kinderen
+ moet bevatten.
+ Elk 'boek' moet precies 1 'titel' en 'prijs' element bevatten en een attribuut
+ 'categorie' hebben waarvan 'Literatuur' de standaard waarde is.
+ De 'titel' en 'prijs' knopen bevatten parsed character data.-->
+
+<!-- De DTD kan ook in het XML bestand zelf gedeclareerd worden.-->
+
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE note
+[
+<!ELEMENT boekenwinkel (boek+)>
+<!ELEMENT boek (titel,prijs)>
+<!ATTLIST boek categorie CDATA "Literatuur">
+<!ELEMENT titel (#PCDATA)>
+<!ELEMENT prijs (#PCDATA)>
+]>
+
+<boekenwinkel>
+ <boek categorie="KOKEN">
+ <titel>Alledaags Italiaans</titel>
+ <prijs>30.00</prijs>
+ </boek>
+</boekenwinkel>
+``` \ No newline at end of file