After introducing the XML format of Entity Framework’s edmx files, let’s use that knowledge to create a small XSLT style sheet which displays the mappings of tables and entities in a Wiki-style table (which can be used in MediaWiki and SharePoint wikis).![]()
In the XSLT root, we need to declare all namespaces used by the edmx to access nodes and attributes:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx"
xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/
EntityStoreSchemaGenerator"
xmlns:ssdl="http://schemas.microsoft.com/ado/2006/04/edm/ssdl"
xmlns:cs="urn:schemas-microsoft-com:windows:storage:mapping:CS"
xmlns:edm="http://schemas.microsoft.com/ado/2006/04/edm"
xmlns:a="http://schemas.microsoft.com/ado/2006/04/codegeneration"
xml:space="default" >
<xsl:output method="html" omit-xml-declaration="yes" />
<!-- input file is C:\path\to\Model.edmx -->
This XSLT does not start with the mappings section, but with the tables and views inside the Schema definition, and then looks up their Mappings definition:
<xsl:template match="/">
<xsl:apply-templates
select="edmx:Edmx/edmx:Runtime/edmx:StorageModels/ssdl:Schema" />
</xsl:template>
<xsl:template match="ssdl:Schema">
<html>
<body>
<table width="100%">
<xsl:apply-templates select="ssdl:EntityType" >
<xsl:with-param name="namespace" select="@Namespace" />
</xsl:apply-templates>
</table>
</body>
</html>
</xsl:template>
This code creates a table row for each database table and its class:
<xsl:template match="ssdl:EntityType" >
<xsl:param name="namespace"></xsl:param>
<xsl:variable name="table" select="@Name" ></xsl:variable>
<xsl:variable name="map"
select="/edmx:Edmx/edmx:Runtime/edmx:Mappings/cs:Mapping/
cs:EntityContainerMapping/
cs:EntitySetMapping[cs:EntityTypeMapping/
cs:MappingFragment/@StoreEntitySet=$table]" />
<xsl:variable name="s" select="$map/*/@TypeName" />
<xsl:variable name="p"
select="concat('IsTypeOf(',
substring($namespace, 1, string-length($namespace) - 5))" />
<xsl:variable name="class"
select="substring($s, string-length($p) + 1,
string-length($s) - string-length($p) - 1)">
</xsl:variable>
<tr valign="top">
<td >
[[<xsl:value-of select="@Name"/>]]
</td>
<td>
<xsl:value-of select="$class" />
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
The [[ ]] notation creates a wiki hyperlink that allows developers to document tables and entities, and link to other documentation.

[...] I have described earlier how to write XSLT files to convert the contents of edmx files into MediaWiki markup. [...]
Thanks, this was extremely useful to me!