pg_view_style.xsl 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Copyright (c) Daniel Sheffield 2022
  4. All rights reserved.
  5. -->
  6. <xsl:stylesheet version="1.0"
  7. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  8. xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  9. xmlns="http://www.w3.org/1999/xhtml"
  10. >
  11. <xsl:output method="xml"
  12. doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
  13. doctype-public="-//W3C/DTD XHTML 1.0 Strict//EN"
  14. indent="yes"/>
  15. <xsl:template match="/*">
  16. <xsl:variable name="schema" select="//xsd:schema"/>
  17. <xsl:variable name="tabletypename"
  18. select="$schema/xsd:element[@name=name(current())]/@type"/>
  19. <xsl:variable name="rowtypename"
  20. select="$schema/xsd:complexType[@name=$tabletypename]/xsd:sequence/xsd:element[@name='row']/@type"/>
  21. <html>
  22. <head>
  23. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  24. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/purecss@2.1.0/build/pure-min.css" integrity="sha384-yHIFVG6ClnONEA5yB5DJXfW2/KC173DIQrYoZMEtBvGzmf0PKiGyNEqe9N6BNDBH" crossorigin="anonymous"/>
  25. <link rel="stylesheet" href="https://shandan.one/css/grids-responsive-min.css"/>
  26. <link rel="stylesheet" href="https://shandan.one/css/responsive-visibility-collapse.css"/>
  27. <title><xsl:value-of select="name(current())"/></title>
  28. </head>
  29. <body>
  30. <div style="background: darkgray; position: sticky; top: 0; padding: 0.2em; width: 100%; z-index: 1; text-align: center;">
  31. <form action="random">
  32. <button type="submit">Generate</button>
  33. </form>
  34. </div>
  35. <div style="position: relative; max-width: 68em; min-width: min(100%, 68em); left: 50%; transform: translate(max(-50%, -34em),0)">
  36. <table class="pure-table pure-table-bordered pure-table-striped">
  37. <tr style="text-transform: capitalize">
  38. <xsl:for-each select="$schema/xsd:complexType[@name=$rowtypename]/xsd:sequence/xsd:element/@name">
  39. <xsl:variable name="elementtype"
  40. select="."/>
  41. <xsl:choose>
  42. <xsl:when test="$elementtype = 'txt'">
  43. <th class="opt-all">Text</th>
  44. </xsl:when>
  45. <xsl:when test="$elementtype = 'category'">
  46. <th class="opt-all">Section</th>
  47. </xsl:when>
  48. <xsl:when test="$elementtype = 'translation'">
  49. <th class="opt-md opt-lg opt-xl opt-xxl">Reference</th>
  50. </xsl:when>
  51. <xsl:otherwise>
  52. </xsl:otherwise>
  53. </xsl:choose>
  54. </xsl:for-each>
  55. </tr>
  56. <xsl:for-each select="row">
  57. <tr>
  58. <xsl:for-each select="*">
  59. <xsl:variable name="elementtype"
  60. select="name(current())"/>
  61. <xsl:choose>
  62. <xsl:when test="$elementtype = 'txt'">
  63. <td class="opt-all"><xsl:value-of select="."/></td>
  64. </xsl:when>
  65. <xsl:when test="$elementtype = 'category'">
  66. <xsl:choose>
  67. <xsl:when test="contains(.,'z_')">
  68. <td class="opt-all" rowspan="2" style="text-transform: capitalize;">Kingdom</td>
  69. </xsl:when>
  70. <xsl:when test="contains(.,'a_')">
  71. </xsl:when>
  72. <xsl:otherwise>
  73. <td class="opt-all" style="text-transform: capitalize;"><xsl:value-of select="."/></td>
  74. </xsl:otherwise>
  75. </xsl:choose>
  76. </xsl:when>
  77. <xsl:when test="$elementtype = 'translation'">
  78. </xsl:when>
  79. <xsl:otherwise>
  80. <td class="opt-md opt-lg opt-xl opt-xxl" style="line-height: 0.5;"><xsl:value-of select="preceding-sibling::translation"/><p/><xsl:value-of select="translate(translate(.,' ','&#160;'),'-','&#8209;')"/></td>
  81. </xsl:otherwise>
  82. </xsl:choose>
  83. </xsl:for-each>
  84. </tr>
  85. </xsl:for-each>
  86. </table>
  87. </div>
  88. </body>
  89. </html>
  90. </xsl:template>
  91. </xsl:stylesheet>