To jest stara wersja strony!
Opis
Szymon Deja szydej@gmail.com
Translacja XTTML do innych formatów z użyciem XSLT. : ontologie (OWL), graphviz
Spotkania
080311
080318
próba translacji
XTTML20 do graphviza
080401
Projekt
Reprezentajca tabel w graphizie :
digraph structs {
node [shape=record];
struct1 [shape=record,label="<f0> left|<f1> mid\ dle|<f2> right"];
struct2 [shape=record,label="<f0> one|<f1> two"];
struct3 [shape=record,label="hello\nworld |{ b |{c|<here> d|e}| f}| g | h"];
struct1 -> struct2;
struct1 -> struct3;
}
Translacja XTTML20 do graphviza
<xsl:stylesheet version="1.0" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="doc chapter section"/>
<xsl:output indent="yes" method="xml"/>
<xsl:template match="/">
<graph xmlns="http://www.martin-loetzsch.de/DOTML">
<xsl:for-each select="/xttml/xtt_list_table/xtt_table">
<xsl:variable name="tabela" select="@name"/>
<record>
<xsl:for-each select="./column_attributes/ca">
<xsl:variable name="col" select="position()"/>
<record>
<xsl:variable name="kolumna" select="."/>
<xsl:element name="node">
<xsl:attribute name="id">555</xsl:attribute>
<xsl:attribute name="label">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:element>
<xsl:for-each select="../../row">
<xsl:variable name="i" select="position()"/>
<xsl:for-each select="cell[$col]">
<xsl:variable name="id">
<xsl:value-of select="$tabela"/>
<xsl:text>_</xsl:text>
<xsl:value-of select="$i"/>
<xsl:text>_</xsl:text>
<xsl:value-of select="$kolumna"/>
</xsl:variable>
<xsl:variable name="label" select="translate(translate(@content,'{','('),'}',')')"/>
<xsl:choose>
<xsl:when test="./@operator='e'">
<node id="{$id}" label="= {$label}"/>
</xsl:when>
<xsl:when test="./@operator='ne'">
<node id="{$id}" label="=! {$label}"/>
</xsl:when>
<xsl:when test="./@operator='g'">
<node id="{$id}" label="gt; {$label}"/>
</xsl:when>
<xsl:when test="./@operator='ge'">
<node id="{$id}" label="gt;= {$label}"/>
</xsl:when>
<xsl:when test="./@operator='l'">
<node id="{$id}" label="lt; {$label}"/>
</xsl:when>
<xsl:when test="./@operator='le'">
<node id="{$id}" label="lt;= {$label}"/>
</xsl:when>
<xsl:when test="./@operator='min'">
<node id="{$id}" label="min {$label}"/>
</xsl:when>
<xsl:when test="./@operator='in'">
<node id="{$id}" label="in {$label}"/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:for-each>
</record>
</xsl:for-each>
</record>
</xsl:for-each>
<xsl:for-each select="//xtt_list_connections/xtt_connection">
<xsl:variable name="tabfrom" select="@source_table_name"/>
<xsl:variable name="tabto" select="@destination_table_name"/>
<xsl:variable name="sr" select="@source_row"/>
<xsl:variable name="dr" select="@destination_row"/>
<xsl:variable name="srow" select="//xtt_table[@name = $tabfrom]/column_attributes/ca[last()]"/>
<xsl:variable name="drow" select="//xtt_table[@name = $tabto]/column_attributes/ca[1]"/>
<xsl:variable name="from">
<xsl:value-of select="$tabfrom"/>
<xsl:text>_</xsl:text>
<xsl:value-of select="$sr + 1"/>
<xsl:text>_</xsl:text>
<xsl:value-of select="$srow"/>
</xsl:variable>
<xsl:variable name="to">
<xsl:value-of select="$tabto"/>
<xsl:text>_</xsl:text>
<xsl:value-of select="$dr + 1"/>
<xsl:text>_</xsl:text>
<xsl:value-of select="$drow"/>
</xsl:variable>
<xsl:element name="edge">
<xsl:attribute name="from">
<xsl:value-of select="$from"/>
</xsl:attribute>
<xsl:attribute name="to">
<xsl:value-of select="$to"/>
</xsl:attribute>
<xsl:attribute name="constraint">
<xsl:text>false</xsl:text>
</xsl:attribute>
<xsl:attribute name="tailport">
<xsl:text>:e</xsl:text>
</xsl:attribute>
<xsl:attribute name="headport">
<xsl:text>:w</xsl:text>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</graph>
</xsl:template>
</xsl:stylesheet>
Sprawozdanie
Opis ograniczeń podejścia xttml→gv
Tekst w komurakch tabeli nie moze zawierać znaków : <, >, }, {
graviz nie radzi sobie z odpowiednim ustawieniem przy złożonych diagramach (źle rysuje polączenia miedzy tabelami)
Materiały