etherlab/entries_list.xslt
changeset 2162 43ab74687f45
parent 2161 4bea1d98db46
child 2641 c9deff128c37
--- a/etherlab/entries_list.xslt	Mon Sep 30 13:43:02 2013 +0200
+++ b/etherlab/entries_list.xslt	Wed Oct 02 10:46:18 2013 +0200
@@ -1,123 +1,1 @@
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:ns="entries_list_ns"
-    extension-element-prefixes="ns"
-    exclude-result-prefixes="ns">
-  <xsl:param name="min_index"/>
-  <xsl:param name="max_index"/>
-  <xsl:template match="Device">
-    <xsl:apply-templates select="Profile/Dictionary/Objects/Object"/>
-    <xsl:for-each select="RxPdo">
-      <xsl:call-template name="pdo_entries">
-        <xsl:with-param name="direction" select="'Receive'"/>
-      </xsl:call-template>
-    </xsl:for-each>
-    <xsl:for-each select="TxPdo">
-      <xsl:call-template name="pdo_entries">
-        <xsl:with-param name="direction" select="'Transmit'"/>
-      </xsl:call-template>
-    </xsl:for-each>
-  </xsl:template>
-  <xsl:template match="Object">
-    <xsl:variable name="index">
-      <xsl:value-of select="ns:HexDecValue(Index/text())"/>
-    </xsl:variable>
-    <xsl:variable name="entry_name">
-      <xsl:value-of select="ns:EntryName(Name)"/>
-    </xsl:variable>
-    <xsl:choose>
-      <xsl:when test="$index &gt;= $min_index and $index &lt;= $max_index">
-        <xsl:variable name="datatype_name">
-          <xsl:value-of select="Type/text()"/>
-        </xsl:variable>
-        <xsl:choose>
-          <xsl:when test="ancestor::Dictionary/child::DataTypes/DataType[Name/text()=$datatype_name][SubItem]">
-            <xsl:apply-templates select="ancestor::Dictionary/child::DataTypes/DataType[Name/text()=$datatype_name][SubItem]">
-              <xsl:with-param name="index">
-                <xsl:value-of select="$index"/>
-              </xsl:with-param>
-              <xsl:with-param name="entry_name">
-                <xsl:value-of select="$entry_name"/>
-              </xsl:with-param>
-            </xsl:apply-templates>
-          </xsl:when>
-          <xsl:otherwise>
-            <ns:add_entry>
-              <Index><xsl:value-of select="$index"/></Index>
-              <SubIndex><xsl:text>0</xsl:text></SubIndex>
-              <Name><xsl:value-of select="$entry_name"/></Name>
-              <Type><xsl:value-of select="$datatype_name"/></Type>
-              <BitSize><xsl:value-of select="BitSize/text()"/></BitSize>
-              <Access><xsl:value-of select="Flags/Access/text()"/></Access>
-              <PDOMapping><xsl:value-of select="Flags/PdoMapping/text()"/></PDOMapping>
-            </ns:add_entry>
-          </xsl:otherwise>
-        </xsl:choose>
-      </xsl:when>
-    </xsl:choose>
-  </xsl:template>
-  <xsl:template match="DataType">
-    <xsl:param name="index"/>
-    <xsl:param name="entry_name"/>
-    <xsl:for-each select="SubItem">
-      <xsl:variable name="subentry_names">
-        <xsl:value-of select="DisplayName"/>
-        <Default><xsl:value-of select="Name/text()"/></Default>
-      </xsl:variable>
-      <ns:add_entry>
-        <Index><xsl:value-of select="$index"/></Index>
-        <SubIndex><xsl:value-of select="ns:HexDecValue(SubIdx/text())"/></SubIndex>
-        <Name>
-          <xsl:value-of select="$entry_name"/>
-          <xsl:text> - </xsl:text>
-          <xsl:value-of select="ns:EntryName($subentry_names)"/>
-        </Name>
-        <Type><xsl:value-of select="Type/text()"/></Type>
-        <BitSize><xsl:value-of select="BitSize/text()"/></BitSize>
-        <Access><xsl:value-of select="Flags/Access/text()"/></Access>
-        <PDOMapping><xsl:value-of select="Flags/PdoMapping/text()"/></PDOMapping>
-      </ns:add_entry>
-    </xsl:for-each>
-  </xsl:template>
-  <xsl:template name="pdo_entries">
-    <xsl:param name="direction"/>
-    <xsl:variable name="pdo_index">
-      <xsl:value-of select="ns:HexDecValue(Index/text())"/>
-    </xsl:variable>
-    <xsl:variable name="pdo_name">
-      <xsl:value-of select="ns:EntryName(Name)"/>
-    </xsl:variable>
-    <xsl:for-each select="Entry">
-	  <xsl:variable name="index">
-	    <xsl:value-of select="ns:HexDecValue(Index/text())"/>
-	  </xsl:variable>
-	  <xsl:choose>
-	    <xsl:when test="$index &gt;= $min_index and $index &lt;= $max_index">
-	      <ns:add_entry>
-            <Index><xsl:value-of select="$index"/></Index>
-            <SubIndex><xsl:value-of select="ns:HexDecValue(SubIndex/text())"/></SubIndex>
-            <Name><xsl:value-of select="ns:EntryName(Name)"/></Name>
-            <Type><xsl:value-of select="DataType/text()"/></Type>
-            <BitSize><xsl:value-of select="BitLen/text()"/></BitSize>
-            <xsl:choose>
-              <xsl:when test="$direction='Transmit'">
-                <Access><xsl:text>ro</xsl:text></Access>
-                <PDOMapping><xsl:text>T</xsl:text></PDOMapping>
-              </xsl:when>
-              <xsl:otherwise>
-                <Access><xsl:text>wo</xsl:text></Access>
-                <PDOMapping><xsl:text>R</xsl:text></PDOMapping>
-              </xsl:otherwise>
-            </xsl:choose>
-            <PDO>
-              <index><xsl:value-of select="$pdo_index"/></index>
-              <name><xsl:value-of select="$pdo_name"/></name>
-              <type><xsl:value-of select="$direction"/></type>
-            </PDO>
-          </ns:add_entry>
-	    </xsl:when>
-	  </xsl:choose>
-    </xsl:for-each>
-  </xsl:template>
-  <xsl:template match="text()"/>
-</xsl:stylesheet>
\ No newline at end of file
+<xsl:stylesheet xmlns:func="http://exslt.org/functions" xmlns:dyn="http://exslt.org/dynamic" xmlns:str="http://exslt.org/strings" xmlns:math="http://exslt.org/math" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="ns" xmlns:yml="http://fdik.org/yml" xmlns:set="http://exslt.org/sets" version="1.0" xmlns:ns="entries_list_ns" exclude-result-prefixes="ns" xmlns:regexp="http://exslt.org/regular-expressions" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="xml"/><xsl:variable name="space" select="'                                                                                                                                                                                                        '"/><xsl:param name="autoindent" select="4"/><xsl:param name="min_index"/><xsl:param name="max_index"/><xsl:template match="text()"><xsl:param name="_indent" select="0"/></xsl:template><xsl:template match="Device"><xsl:param name="_indent" select="0"/><xsl:apply-templates select="Profile/Dictionary/Objects/Object"><xsl:with-param name="_indent" select="$_indent + (1) * $autoindent"/></xsl:apply-templates><xsl:for-each select="RxPdo"><xsl:call-template name="pdo_entries"><xsl:with-param name="direction" select="'Receive'"/></xsl:call-template></xsl:for-each><xsl:for-each select="TxPdo"><xsl:call-template name="pdo_entries"><xsl:with-param name="direction" select="'Transmit'"/></xsl:call-template></xsl:for-each></xsl:template><xsl:template match="Object"><xsl:param name="_indent" select="0"/><xsl:variable name="index"><xsl:value-of select="ns:HexDecValue(Index/text())"/></xsl:variable><xsl:variable name="entry_name"><xsl:value-of select="ns:EntryName(Name)"/></xsl:variable><xsl:choose><xsl:when test="$index &gt;= $min_index and $index &lt;= $max_index"><xsl:variable name="datatype_name"><xsl:value-of select="Type/text()"/></xsl:variable><xsl:choose><xsl:when test="ancestor::Dictionary/child::DataTypes/DataType[Name/text()=$datatype_name][SubItem]"><xsl:apply-templates select="ancestor::Dictionary/child::DataTypes/DataType[Name/text()=$datatype_name][SubItem]"><xsl:with-param name="_indent" select="$_indent + (1) * $autoindent"/><xsl:with-param name="index"><xsl:value-of select="$index"/></xsl:with-param><xsl:with-param name="entry_name"><xsl:value-of select="$entry_name"/></xsl:with-param></xsl:apply-templates></xsl:when><xsl:otherwise><xsl:variable name="subindex"><xsl:text>0</xsl:text></xsl:variable><xsl:variable name="entry"><xsl:value-of select="ns:AddEntry($index, $subindex, $entry_name, $datatype_name, BitSize/text(), Flags/Access/text(), Flags/PdoMapping/text())"/></xsl:variable></xsl:otherwise></xsl:choose></xsl:when></xsl:choose></xsl:template><xsl:template match="DataType"><xsl:param name="_indent" select="0"/><xsl:param name="index"/><xsl:param name="entry_name"/><xsl:for-each select="SubItem"><xsl:variable name="subindex"><xsl:value-of select="ns:HexDecValue(SubIdx/text())"/></xsl:variable><xsl:variable name="subentry_name"><xsl:value-of select="$entry_name"/><xsl:text> - </xsl:text><xsl:value-of select="ns:EntryName(DisplayName, Name/text())"/></xsl:variable><xsl:variable name="entry"><xsl:value-of select="ns:AddEntry($index, $subindex, $subentry_name, Type/text(), BitSize/text(), Flags/Access/text(), Flags/PdoMapping/text())"/></xsl:variable></xsl:for-each></xsl:template><xsl:template name="pdo_entries"><xsl:param name="_indent" select="0"/><xsl:param name="direction"/><xsl:variable name="pdo_index"><xsl:value-of select="ns:HexDecValue(Index/text())"/></xsl:variable><xsl:variable name="pdo_name"><xsl:value-of select="ns:EntryName(Name)"/></xsl:variable><xsl:for-each select="Entry"><xsl:variable name="index"><xsl:value-of select="ns:HexDecValue(Index/text())"/></xsl:variable><xsl:choose><xsl:when test="$index &gt;= $min_index and $index &lt;= $max_index"><xsl:variable name="subindex"><xsl:value-of select="ns:HexDecValue(SubIndex/text())"/></xsl:variable><xsl:variable name="subentry_name"><xsl:value-of select="ns:EntryName(Name)"/></xsl:variable><xsl:variable name="access"><xsl:choose><xsl:when test="$direction='Transmit'"><xsl:text>ro</xsl:text></xsl:when><xsl:otherwise><xsl:text>wo</xsl:text></xsl:otherwise></xsl:choose></xsl:variable><xsl:variable name="pdo_mapping"><xsl:choose><xsl:when test="$direction='Transmit'"><xsl:text>T</xsl:text></xsl:when><xsl:otherwise><xsl:text>R</xsl:text></xsl:otherwise></xsl:choose></xsl:variable><xsl:variable name="entry"><xsl:value-of select="ns:AddEntry($index, $subindex, $subentry_name, DataType/text(), BitLen/text(), $access, $pdo_mapping, $pdo_index, $pdo_name, $direction)"/></xsl:variable></xsl:when></xsl:choose></xsl:for-each></xsl:template></xsl:stylesheet>
\ No newline at end of file