Podpora XML tabulek – výstupu.
Pokud výsledek dotazu má jen jeden sloupec a ten se jmenuje "pouze_xml",
nevykreslí se klasická tabulka, ale obsah prvního záznamu se vloží do <pre> … </pre>
Uživatel si tak může přehledněji zobrazit XML výstup generovaný databází.
Je možné kombinovat i s klasickými tabulkami:
SELECT 123 AS číslo;
SELECT query_to_xml('SELECT * FROM tabulka;', true, false, '…') AS pouze_xml;
SELECT * FROM tabulka;
Zobrazí klasickou tabulku, potom XML výstup uzavřený v <pre/> a potom zase klasickou tabulku.
1.1 --- a/java/sql-vyuka/web/ajax.jspx Sat Dec 19 15:22:56 2009 +0100
1.2 +++ b/java/sql-vyuka/web/ajax.jspx Sun Dec 20 01:14:28 2009 +0100
1.3 @@ -9,8 +9,8 @@
1.4 <jsp:useBean id="ajax" class="cz.frantovo.sql.vyuka.web.Ajax" scope="request"/>
1.5
1.6 <jsp:scriptlet>
1.7 - request.setCharacterEncoding("UTF-8");
1.8 - ajax.setKlient(request.getRemoteAddr(), request.getHeader("x-forwarded-for"), request.getRequestedSessionId());
1.9 + request.setCharacterEncoding("UTF-8");
1.10 + ajax.setKlient(request.getRemoteAddr(), request.getHeader("x-forwarded-for"), request.getRequestedSessionId());
1.11 </jsp:scriptlet>
1.12
1.13 <c:choose>
1.14 @@ -40,69 +40,80 @@
1.15 </c:otherwise>
1.16 </c:choose>
1.17 <!-- </lokalizace> -->
1.18 - <table>
1.19 - <thead title="${zahlaviTip}">
1.20 - <tr>
1.21 - <c:forEach var="zahlavi" items="${tabulka.zahlavi}">
1.22 - <td>
1.23 - <!-- <lokalizace> -->
1.24 - <c:if test="${tabulka.lokalizovat}">
1.25 - <fmt:message key="${zahlavi}" var="zahlavi"/>
1.26 - </c:if>
1.27 - <!-- </lokalizace> -->
1.28 - <c:out value="${zahlavi}"/>
1.29 - </td>
1.30 - </c:forEach>
1.31 - </tr>
1.32 - </thead>
1.33 - <tbody>
1.34 - <c:forEach var="radek" items="${tabulka.hodnoty}">
1.35 - <tr>
1.36 - <c:forEach var="bunka" items="${radek}">
1.37 - <!-- <formátováníPodleDatovýchTypů> -->
1.38 - <c:choose>
1.39 - <c:when test="${bunka.class == 'class java.sql.Timestamp'}">
1.40 - <td>
1.41 - <fmt:formatDate value="${bunka}" pattern="dd.MM.yyyy HH:mm:ss"/>
1.42 - <!-- uvnitř vzoru je nedělitelná mezera -->
1.43 - </td>
1.44 - </c:when>
1.45 - <c:when test="${bunka.class == 'class java.sql.Date'}">
1.46 - <td>
1.47 - <fmt:formatDate value="${bunka}" pattern="dd.MM.yyyy"/>
1.48 - </td>
1.49 - </c:when>
1.50 - <c:when test="${bunka.class == 'class java.lang.Integer' || bunka.class == 'class java.math.BigDecimal'}">
1.51 - <td class="cislo">
1.52 - <fmt:formatNumber value="${bunka}" pattern="###,###.###"/>
1.53 - </td>
1.54 - </c:when>
1.55 - <c:when test="${bunka.class == 'class java.lang.Boolean'}">
1.56 - <td>
1.57 - <c:choose>
1.58 - <c:when test="${bunka}">
1.59 - <fmt:message key="boolean.pravda.tip" var="pravda"/>
1.60 - <abbr title="${pravda}"><fmt:message key="boolean.pravda"/></abbr>
1.61 - </c:when>
1.62 - <c:otherwise>
1.63 - <fmt:message key="boolean.nepravda.tip" var="nepravda"/>
1.64 - <abbr title="${nepravda}"><fmt:message key="boolean.nepravda"/></abbr>
1.65 - </c:otherwise>
1.66 - </c:choose>
1.67 - </td>
1.68 - </c:when>
1.69 - <c:otherwise>
1.70 - <td>
1.71 - <c:out value="${bunka}" />
1.72 - </td>
1.73 - </c:otherwise>
1.74 - </c:choose>
1.75 - <!-- </formátováníPodleDatovýchTypů> -->
1.76 - </c:forEach>
1.77 - </tr>
1.78 - </c:forEach>
1.79 - </tbody>
1.80 - </table>
1.81 + <c:choose>
1.82 + <c:when test="${fn:length(tabulka.zahlavi) == 1 && tabulka.zahlavi[0] == 'pouze_xml'}">
1.83 + <!-- <XML tabulka> -->
1.84 + <pre><c:out value="${tabulka.hodnoty[0][0]}" /></pre>
1.85 + <!-- </XML tabulka> -->
1.86 + </c:when>
1.87 + <c:otherwise>
1.88 + <!-- <bežná tabulka> -->
1.89 + <table>
1.90 + <thead title="${zahlaviTip}">
1.91 + <tr>
1.92 + <c:forEach var="zahlavi" items="${tabulka.zahlavi}">
1.93 + <td>
1.94 + <!-- <lokalizace> -->
1.95 + <c:if test="${tabulka.lokalizovat}">
1.96 + <fmt:message key="${zahlavi}" var="zahlavi"/>
1.97 + </c:if>
1.98 + <!-- </lokalizace> -->
1.99 + <c:out value="${zahlavi}"/>
1.100 + </td>
1.101 + </c:forEach>
1.102 + </tr>
1.103 + </thead>
1.104 + <tbody>
1.105 + <c:forEach var="radek" items="${tabulka.hodnoty}">
1.106 + <tr>
1.107 + <c:forEach var="bunka" items="${radek}">
1.108 + <!-- <formátováníPodleDatovýchTypů> -->
1.109 + <c:choose>
1.110 + <c:when test="${bunka.class == 'class java.sql.Timestamp'}">
1.111 + <td>
1.112 + <fmt:formatDate value="${bunka}" pattern="dd.MM.yyyy HH:mm:ss"/>
1.113 + <!-- uvnitř vzoru je nedělitelná mezera -->
1.114 + </td>
1.115 + </c:when>
1.116 + <c:when test="${bunka.class == 'class java.sql.Date'}">
1.117 + <td>
1.118 + <fmt:formatDate value="${bunka}" pattern="dd.MM.yyyy"/>
1.119 + </td>
1.120 + </c:when>
1.121 + <c:when test="${bunka.class == 'class java.lang.Integer' || bunka.class == 'class java.math.BigDecimal'}">
1.122 + <td class="cislo">
1.123 + <fmt:formatNumber value="${bunka}" pattern="###,###.###"/>
1.124 + </td>
1.125 + </c:when>
1.126 + <c:when test="${bunka.class == 'class java.lang.Boolean'}">
1.127 + <td>
1.128 + <c:choose>
1.129 + <c:when test="${bunka}">
1.130 + <fmt:message key="boolean.pravda.tip" var="pravda"/>
1.131 + <abbr title="${pravda}"><fmt:message key="boolean.pravda"/></abbr>
1.132 + </c:when>
1.133 + <c:otherwise>
1.134 + <fmt:message key="boolean.nepravda.tip" var="nepravda"/>
1.135 + <abbr title="${nepravda}"><fmt:message key="boolean.nepravda"/></abbr>
1.136 + </c:otherwise>
1.137 + </c:choose>
1.138 + </td>
1.139 + </c:when>
1.140 + <c:otherwise>
1.141 + <td>
1.142 + <c:out value="${bunka}" />
1.143 + </td>
1.144 + </c:otherwise>
1.145 + </c:choose>
1.146 + <!-- </formátováníPodleDatovýchTypů> -->
1.147 + </c:forEach>
1.148 + </tr>
1.149 + </c:forEach>
1.150 + </tbody>
1.151 + </table>
1.152 + <!-- </bežná tabulka> -->
1.153 + </c:otherwise>
1.154 + </c:choose>
1.155 </c:forEach>
1.156 <!-- </Tabulky> -->
1.157