etherlab/entries_list.xslt
changeset 2157 a2385e535cf5
child 2161 4bea1d98db46
equal deleted inserted replaced
2156:c8eee6be2da8 2157:a2385e535cf5
       
     1 <xsl:stylesheet version="1.0"
       
     2     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       
     3     xmlns:ns="entries_list_ns"
       
     4     extension-element-prefixes="ns"
       
     5     exclude-result-prefixes="ns">
       
     6   <xsl:param name="min_index"/>
       
     7   <xsl:param name="max_index"/>
       
     8   <xsl:template match="Device">
       
     9     <xsl:apply-templates select="Profile/Dictionary/Objects/Object"/>
       
    10     <xsl:for-each select="RxPdo">
       
    11       <xsl:call-template name="pdo_entries">
       
    12         <xsl:with-param name="direction" select="'Receive'"/>
       
    13       </xsl:call-template>
       
    14     </xsl:for-each>
       
    15     <xsl:for-each select="TxPdo">
       
    16       <xsl:call-template name="pdo_entries">
       
    17         <xsl:with-param name="direction" select="'Transmit'"/>
       
    18       </xsl:call-template>
       
    19     </xsl:for-each>
       
    20   </xsl:template>
       
    21   <xsl:template match="Object">
       
    22     <xsl:variable name="index">
       
    23       <xsl:value-of select="ns:HexDecValue(Index/text())"/>
       
    24     </xsl:variable>
       
    25     <xsl:variable name="entry_name">
       
    26       <xsl:value-of select="ns:EntryName(Name)"/>
       
    27     </xsl:variable>
       
    28     <xsl:choose>
       
    29       <xsl:when test="$index &gt;= $min_index and $index &lt;= $max_index">
       
    30         <xsl:variable name="datatype_name">
       
    31           <xsl:value-of select="Type/text()"/>
       
    32         </xsl:variable>
       
    33         <xsl:choose>
       
    34           <xsl:when test="ancestor::Dictionary/child::DataTypes/DataType[Name/text()=$datatype_name][SubItem]">
       
    35             <xsl:apply-templates select="ancestor::Dictionary/child::DataTypes/DataType[Name/text()=$datatype_name][SubItem]">
       
    36               <xsl:with-param name="index">
       
    37                 <xsl:value-of select="$index"/>
       
    38               </xsl:with-param>
       
    39               <xsl:with-param name="entry_name">
       
    40                 <xsl:value-of select="$entry_name"/>
       
    41               </xsl:with-param>
       
    42             </xsl:apply-templates>
       
    43           </xsl:when>
       
    44           <xsl:otherwise>
       
    45             <ns:add_entry>
       
    46               <Index><xsl:value-of select="$index"/></Index>
       
    47               <SubIndex><xsl:text>0</xsl:text></SubIndex>
       
    48               <Name><xsl:value-of select="$entry_name"/></Name>
       
    49               <Type><xsl:value-of select="$datatype_name"/></Type>
       
    50               <BitSize><xsl:value-of select="BitSize/text()"/></BitSize>
       
    51               <Access><xsl:value-of select="Flags/Access/text()"/></Access>
       
    52               <PDOMapping><xsl:value-of select="Flags/PdoMapping/text()"/></PDOMapping>
       
    53             </ns:add_entry>
       
    54           </xsl:otherwise>
       
    55         </xsl:choose>
       
    56       </xsl:when>
       
    57     </xsl:choose>
       
    58   </xsl:template>
       
    59   <xsl:template match="DataType">
       
    60     <xsl:param name="index"/>
       
    61     <xsl:param name="entry_name"/>
       
    62     <xsl:for-each select="SubItem">
       
    63       <xsl:variable name="subentry_names">
       
    64         <xsl:value-of select="DisplayName"/>
       
    65         <Default><xsl:value-of select="Name/text()"/></Default>
       
    66       </xsl:variable>
       
    67       <ns:add_entry>
       
    68         <Index><xsl:value-of select="$index"/></Index>
       
    69         <SubIndex><xsl:value-of select="ns:HexDecValue(SubIdx/text())"/></SubIndex>
       
    70         <Name>
       
    71           <xsl:value-of select="$entry_name"/>
       
    72           <xsl:text> - </xsl:text>
       
    73           <xsl:value-of select="ns:EntryName($subentry_names)"/>
       
    74         </Name>
       
    75         <Type><xsl:value-of select="Type/text()"/></Type>
       
    76         <BitSize><xsl:value-of select="BitSize/text()"/></BitSize>
       
    77         <Access><xsl:value-of select="Flags/Access/text()"/></Access>
       
    78         <PDOMapping><xsl:value-of select="Flags/PdoMapping/text()"/></PDOMapping>
       
    79       </ns:add_entry>
       
    80     </xsl:for-each>
       
    81   </xsl:template>
       
    82   <xsl:template name="pdo_entries">
       
    83     <xsl:param name="direction"/>
       
    84     <xsl:variable name="pdo_index">
       
    85       <xsl:value-of select="ns:HexDecValue(Index/text())"/>
       
    86     </xsl:variable>
       
    87     <xsl:variable name="pdo_name">
       
    88       <xsl:value-of select="ns:EntryName(Name)"/>
       
    89     </xsl:variable>
       
    90     <xsl:for-each select="Entry">
       
    91 	  <xsl:variable name="index">
       
    92 	    <xsl:value-of select="ns:HexDecValue(Index/text())"/>
       
    93 	  </xsl:variable>
       
    94 	  <xsl:choose>
       
    95 	    <xsl:when test="$index &gt;= $min_index and $index &lt;= $max_index">
       
    96 	      <ns:add_entry>
       
    97             <Index><xsl:value-of select="$index"/></Index>
       
    98             <SubIndex><xsl:value-of select="ns:HexDecValue(SubIndex/text())"/></SubIndex>
       
    99             <Name><xsl:value-of select="ns:EntryName(Name)"/></Name>
       
   100             <Type><xsl:value-of select="Type/text()"/></Type>
       
   101             <BitSize><xsl:value-of select="BitLen/text()"/></BitSize>
       
   102             <xsl:choose>
       
   103               <xsl:when test="$direction='Transmit'">
       
   104                 <Access><xsl:text>ro</xsl:text></Access>
       
   105                 <PDOMapping><xsl:text>T</xsl:text></PDOMapping>
       
   106               </xsl:when>
       
   107               <xsl:otherwise>
       
   108                 <Access><xsl:text>wo</xsl:text></Access>
       
   109                 <PDOMapping><xsl:text>R</xsl:text></PDOMapping>
       
   110               </xsl:otherwise>
       
   111             </xsl:choose>
       
   112             <PDO>
       
   113               <index><xsl:value-of select="$pdo_index"/></index>
       
   114               <name><xsl:value-of select="$pdo_name"/></name>
       
   115               <type><xsl:value-of select="$direction"/></type>
       
   116             </PDO>
       
   117           </ns:add_entry>
       
   118 	    </xsl:when>
       
   119 	  </xsl:choose>
       
   120     </xsl:for-each>
       
   121   </xsl:template>
       
   122   <xsl:template match="text()"/>
       
   123 </xsl:stylesheet>