update_to_new_format.xsl 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  2. <xsl:template match="banks">
  3. <xsl:apply-templates select="@*|node()"/>
  4. </xsl:template>
  5. <xsl:template match="views">
  6. <xsl:apply-templates select="@*|node()"/>
  7. </xsl:template>
  8. <xsl:template match="units">
  9. <xsl:apply-templates select="@*|node()"/>
  10. </xsl:template>
  11. <xsl:template match="bank">
  12. <bank>
  13. <xsl:for-each select="bank_description/*">
  14. <xsl:attribute name="{name()}">
  15. <xsl:value-of select="text()"/>
  16. </xsl:attribute>
  17. </xsl:for-each>
  18. <xsl:apply-templates select="registers/*"/>
  19. </bank>
  20. </xsl:template>
  21. <xsl:template match="bank_description">
  22. </xsl:template>
  23. <xsl:template match="register_bits">
  24. <field>
  25. <xsl:for-each select="*">
  26. <xsl:if test="name() = 'views'">
  27. <xsl:apply-templates select="view"/>
  28. </xsl:if>
  29. <xsl:if test="name() != 'views'">
  30. <xsl:attribute name="{name()}">
  31. <xsl:value-of select="text()"/>
  32. </xsl:attribute>
  33. </xsl:if>
  34. </xsl:for-each>
  35. </field>
  36. </xsl:template>
  37. <xsl:template match="register">
  38. <register>
  39. <xsl:for-each select="*">
  40. <xsl:if test="name() = 'registers_bits'">
  41. <xsl:apply-templates select="register_bits"/>
  42. </xsl:if>
  43. <xsl:if test="name() = 'views'">
  44. <xsl:apply-templates select="view"/>
  45. </xsl:if>
  46. <xsl:if test="name() != 'registers_bits' and name() != 'views'">
  47. <xsl:attribute name="{name()}">
  48. <xsl:value-of select="text()"/>
  49. </xsl:attribute>
  50. </xsl:if>
  51. </xsl:for-each>
  52. </register>
  53. </xsl:template>
  54. <xsl:template match="enum">
  55. <name>
  56. <xsl:attribute name="name">
  57. <xsl:value-of select="text()"/>
  58. </xsl:attribute>
  59. <xsl:apply-templates select="@*"/>
  60. </name>
  61. </xsl:template>
  62. <xsl:template match="view[@type]">
  63. <xsl:if test="@type = 'formula'">
  64. <transform>
  65. <xsl:for-each select="*">
  66. <xsl:attribute name="{name()}">
  67. <xsl:value-of select="text()"/>
  68. </xsl:attribute>
  69. </xsl:for-each>
  70. </transform>
  71. </xsl:if>
  72. <xsl:if test="@type = 'enum'">
  73. <enum>
  74. <xsl:for-each select="*">
  75. <xsl:if test="name() != 'enum'">
  76. <xsl:attribute name="{name()}">
  77. <xsl:value-of select="text()"/>
  78. </xsl:attribute>
  79. </xsl:if>
  80. </xsl:for-each>
  81. <xsl:apply-templates select="enum"/>
  82. </enum>
  83. </xsl:if>
  84. </xsl:template>
  85. <xsl:template match="view">
  86. <view>
  87. <xsl:attribute name="name"><xsl:value-of select="text()"/></xsl:attribute>
  88. </view>
  89. </xsl:template>
  90. <xsl:template match="convert_unit">
  91. <transform>
  92. <xsl:attribute name="unit"><xsl:value-of select="@value"/></xsl:attribute>
  93. <xsl:attribute name="transform"><xsl:value-of select="text()"/></xsl:attribute>
  94. </transform>
  95. </xsl:template>
  96. <xsl:template match="unit">
  97. <unit>
  98. <xsl:apply-templates select="@*"/>
  99. <xsl:apply-templates select="convert_unit"/>
  100. </unit>
  101. </xsl:template>
  102. <xsl:template match="@*|node()">
  103. <xsl:copy>
  104. <xsl:apply-templates select="@*|node()"/>
  105. </xsl:copy>
  106. </xsl:template>
  107. </xsl:stylesheet>