I have a GraphML file, I have to display it on a webpage as well as change the display properties using JavaScript (like changing the color of the node, edge etc).
Is it possible?
Please let me know, if there is any JavaScript library to load, parse and draw GraphML on a web page.
An XSLT stylesheet which takes GraphML as input and outputs SVG can be called using the JavaScript XSLT API. For example:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/2000/svg">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="graph">
<!-- when finding a 'graph' element, create the 'svg' root and its 'defs' section -->
<svg>
<defs>
<marker id="arrow" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="10" markerHeight="10" orient="auto">
<path fill="black" d="M0 0 10 5 0 10z"/>
</marker>
</defs>
<!-- for each 'node' create a 'g' element with its contents -->
<xsl:for-each select="node">
<g>
<rect width="100" height="100" fill="silver"/>
<text style="font-size:24;font-weight:bold">
<xsl:value-of select="@id"/>
</text>
</g>
</xsl:for-each>
<!-- for each 'edge' create a 'line' with the arrow if it is a 'directed' edge -->
<xsl:for-each select="edge">
<line>
<xsl:if test="not(@directed='false')">
<xsl:attribute name="style">marker-end:url(#arrow)</xsl:attribute>
</xsl:if>
</line>
</xsl:for-each>
</svg>
</xsl:template>
</xsl:stylesheet>
References
A serious contender for this task (at least in a commercial context) would be the yFiles for HTML Javascript Graph Drawing Library:
Full disclosure: I work for the company that creates that library, but I do not represent my employer on SO
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With