Graphviz: How can I create edges between HTML table cells?
graphviz
Solution
You can simply use `PORT` instead of `ID` and then use the edge definition as in your example.
<TD PORT="first" BGCOLOR="gray">first</TD>
`ID`'s purpose is downstream use, so unless you're using SVG output and reuse the id's elsewhere, they are probably not really useful.
As to the warnings, I do not get them with graphviz 2.28. If you use an older version of graphviz, I suggest to update.
Problem
Please consider the following code: ``` digraph G { node [shape=plaintext] a [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD ID="first" BGCOLOR="gray">first</TD></TR> <TR><TD ID="second" PORT="f1">second</TD></TR> <TR><TD ID="third" PORT="f2">third</TD></TR> </TABLE>>]; b [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD ID="first" BGCOLOR="gray">first</TD></TR> <TR><TD ID="second" PORT="f1">second</TD></TR> <TR><TD ID="third" PORT="f2">third</TD></TR> </TABLE>>]; a:first -> b:first; } ``` I get a fair amount of warnings: ``` laci@nitehawk ~ $ dot records.gv -T pdf > records.pdf Warning: Illegal attribute ID in <TD> - ignored Warning: Illegal attribute ID in <TD> - ignored Warning: Illegal attribute ID in <TD> - ignored in label of node a Warning: Illegal attribute ID in <TD> - ignored Warning: Illegal attribute ID in <TD> - ignored Warning: Illegal attribute ID in <TD> - ignored in label of node b Warning: node a, port first unrecognized Warning: node b, port first unrecognized ``` - According to the documentation the ID attribute of TD should be legal. What am I missing? - How can I reference individual cells and create edges between them?