FSharp XSD Type Provider

FSharp XSD Type Provider

Together with Excel, XML files are among the most used formats in all kind of applications. Mainly, because it is the de facto standard for application interoperability, specially when enterprise software.

This format is quite useful given its well defined structure which allows the sender, as well as the receiver of the message, to parse the file and extract its information. An XSD file is used for this purpose.

An example of XSD could be:

Codigo1

This XSD file, defines an XML with a root “books” element which contains a list of “book” elements. Besides, it is defined which attributes should a “book” have, as well as, which are mandatory. In this example, “author”, “title”, “genre”, “price”, “review” and “id” are mandatory, but “pub_date” is optional. Also, it defines what type the attribute is.

An XML file which follows the previous XSD could be:

Codigo2

Let us suppose there is an existing C# model:

cap1

The following code generates a Type from an XSD file which will represent and can be used to parse all instances of XML files which conform to that XSD. It is so powerful that it gives the developer the ability to know at development type the types of every attribute of evert element in the file, as long as it is previously defined in the XSD file.

After the Type definition, a function is created which parses from the XML book element to our Book class:

cap2

This kind of tool dramatically reduces development times of applications which relies on XML files to exchange and obtain information, since it can be known at development time which attributes an element has (and its types) and it also provides information on its children.



Junto con Excel, los archivos XML son de los más utilizados en todo tipo de aplicaciones. Principalmente porque es el estándar de facto para la interoperabilidad entre aplicaciones, principalmente empresariales.

Normalmente, este tipo de archivos son útiles porque tienen una estructura bien definida que permite que, tanto quien lo envía como quien lo recibe, sepan cómo analizar y entender su información. Para esto, se utiliza un archivo de tipo XSD. Este archivo, es un XML que define la estructura de los archivos que describe.

Un ejemplo de esto es:

Codigo1

Este XSD define un XML que tiene un elemento raíz “books” que a su vez contiene una lista de elementos “book”. Estos últimos tienen los atributos: “author”, “title”, “genre”, “price”, “review” y “id” obligatorios y “pub_date” como opcional. Además se define el tipo que debe tener cada atributo.

Un XML que cumple con este XSD es:

Codigo2

Supongamos que existe un modelo previamente desarrollado en C#:

cap1

El siguiente código genera un tipo a partir de un archivo XSD dentro de la solución. Este tipo, permite realizar un análisis de archivos XML suponiendo que cumple con el XSD. Incluso se pueden saber los tipos de los atributos de los elementos.

Luego se define la función encargada de realizar la transformación entre cada elemento del XML con nuestra clase de la lógica de negocio:

cap2

De esta forma, utilizando estas herramientas, se reducen drásticamente los tiempos de desarrollo de aplicaciones que necesiten obtener información contenida en este tipo de archivos, ya que se puede saber exactamente que atributos tiene un elemento y cuáles son sus hijos.

Share This