query-to-xml-xslt.xml 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <xsl:stylesheet version="1.1"
  2. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3. xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  4. xmlns:xhtml="http://www.w3.org/1999/xhtml"
  5. >
  6. <xsl:output method="xml"
  7. doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
  8. doctype-public="-//W3C/DTD XHTML 1.0 Strict//EN"
  9. indent="yes"/>
  10. <!-- This is an identity template - it copies everything
  11. that doesn't match another template -->
  12. <xsl:template match="@* | node()">
  13. <xsl:copy>
  14. <xsl:apply-templates select="@* | node()"/>
  15. </xsl:copy>
  16. </xsl:template>
  17. <xsl:template match="processing-instruction()">
  18. </xsl:template>
  19. <xsl:template match="//xhtml:div[@id='xmldata']/*">
  20. <xsl:variable name="schema" select="//xsd:schema"/>
  21. <xsl:variable name="tabletypename"
  22. select="$schema/xsd:element[@name=name(current())]/@type"/>
  23. <xsl:variable name="rowtypename"
  24. select="$schema/xsd:complexType[@name=$tabletypename]/xsd:sequence/xsd:element[@name='row']/@type"/>
  25. <xsl:variable name="fieldname"
  26. select="$schema/xsd:complexType[@name=$rowtypename]/xsd:sequence/xsd:element[@name='Product' or @name='Category' or @name='Group' or @name='Name'][1]/@name"/>
  27. <table xmlns="http://www.w3.org/1999/xhtml"
  28. class="pure-table pure-table-bordered pure-table-striped" style="text-align: left; width: 100%;">
  29. <thead style="text-align: center">
  30. <tr>
  31. <th></th>
  32. <xsl:for-each select="$schema/xsd:complexType[@name=$rowtypename]/xsd:sequence/xsd:element/@name">
  33. <th><xsl:value-of select="."/></th>
  34. </xsl:for-each>
  35. </tr>
  36. </thead>
  37. <tbody>
  38. <xsl:for-each select="xhtml:row">
  39. <xsl:choose>
  40. <xsl:when test="position() != last()">
  41. <tr>
  42. <td>
  43. <input type="checkbox">
  44. <xsl:attribute name="name">
  45. <xsl:choose>
  46. <xsl:when test="$fieldname = 'Name'">tag</xsl:when>
  47. <xsl:otherwise>
  48. <xsl:value-of select="translate($fieldname,'PCG', 'pcg')"/>
  49. </xsl:otherwise>
  50. </xsl:choose>
  51. </xsl:attribute>
  52. <xsl:attribute name="value">
  53. <xsl:value-of select="*[name() = $fieldname][1]"/>
  54. </xsl:attribute>
  55. <xsl:attribute name="form">filter</xsl:attribute>
  56. </input>
  57. </td>
  58. <xsl:for-each select="*">
  59. <td><xsl:value-of select="."/></td>
  60. </xsl:for-each>
  61. </tr>
  62. </xsl:when>
  63. </xsl:choose>
  64. </xsl:for-each>
  65. </tbody>
  66. <tfoot>
  67. <xsl:for-each select="xhtml:row">
  68. <xsl:choose>
  69. <xsl:when test="position() = last()">
  70. <tr>
  71. <xsl:for-each select="*">
  72. <th style="text-align: center"><xsl:value-of select="."/></th>
  73. </xsl:for-each>
  74. </tr>
  75. </xsl:when>
  76. </xsl:choose>
  77. </xsl:for-each>
  78. </tfoot>
  79. </table>
  80. </xsl:template>
  81. </xsl:stylesheet>