Podpora XML tabulek – výstupu.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sun Dec 20 01:14:28 2009 +0100 (2009-12-20)
changeset 737252f80b39de
parent 72 fc3d6fa6fbcd
child 74 48066e753dd6
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.
java/sql-vyuka/web/ajax.jspx
     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 &amp;&amp; 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