Vapaa ja avoin toimisto-ohjelmisto

XML-asiakirjat » Esimerkki 3: ohjausobjektilomake

XML-esimerkki 3: ohjausobjektilomakkeen tietojen kerääminen

Lomakkeen ohjausobjekteilla on mahdollista tehdä hyvin monipuolisia lomakkeita, joiden kentät voivat sisältää muutakin kuin vain tekstiä. Lomake voidaan yhdistää tietokantaan, jolloin lomakkeeseen täytetyt tiedot päivittyvät tietokantaan suoraan.

Tässä esimerkissä lomaketta ei ole yhdistetty tietokantaan, vaan sen sisältämät tiedot muunnetaan toiseen tiedostomuotoon, tässä tapauksessa HTML:ksi.

Oletetaan, että käyttäjä on täyttänyt esimerkkilomakkeen (ODT).

Muuntaminen

Alla esitetty muunnos muuntaa lomakkeen HTML-muotoiseksi taulukoksi.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
  xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
  xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
  xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
  xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
  xmlns:fo="http://www.w3.org/1999/XSL/Format"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
  xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
  xmlns:svg="http://www.w3.org/2000/svg"
  xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
  xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
  xmlns:math="http://www.w3.org/1998/Math/MathML"
  xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
  xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
  xmlns:ooo="http://openoffice.org/2004/office"
  xmlns:ooow="http://openoffice.org/2004/writer"
  xmlns:oooc="http://openoffice.org/2004/calc"
  xmlns:dom="http://www.w3.org/2001/xml-events"
  xmlns:xforms="http://www.w3.org/2002/xforms"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  office:version="1.0"
  version="1.0">

  <!-- Määrätään muunnoksen ulostulomuoto ja merkkikoodaus. -->
  <xsl:output method="html" encoding="ISO-8859-1"/>

  <!-- ======================================================================== -->
  <!-- Luetaan kenttien tiedot ja muotoillaan ne taulukon riviksi               -->
  <!-- ======================================================================== -->
  
  <!-- Tekstikenttä -->
  <xsl:template match="form:text">
    <tr>
      <td><xsl:value-of select="@form:name"/>:</td>
      <td><xsl:value-of select="@form:current-value"/></td>
    </tr>
  </xsl:template>
  
  <!-- Muotoiltu tekstikenttä -->
  <xsl:template match="form:formatted-text">
    <tr>
      <td><xsl:value-of select="@form:name"/>:</td>
      <td><xsl:value-of select="@form:current-value"/> (numeerinen päivämäärä 1.1.1900 laskien)</td>
    </tr>
  </xsl:template>
  
  <!-- Monivalintakenttä -->
  <xsl:template match="form:radio">
    <xsl:if test="@form:current-selected = 'true'">
      <tr>
        <td><xsl:value-of select="@form:name"/>:</td>
        <td><xsl:value-of select="@form:label"/></td>
      </tr>
    </xsl:if>
  </xsl:template>


  <!-- ======================================================================== -->
  <!-- Juurisolmu                                                               -->
  <!-- ======================================================================== -->
   <xsl:template match="/">
     <body>
       <h2>Lomakeraportti</h2>
       <p>Generoitu täytetyn lomakkeen sisältävästä OASIS OpenDocument -tekstiasiakirjasta.</p>

       <table>
         <tr><th align="left">Tekstikenttä</th><th align="left">Täytetty arvo</th></tr>
         <xsl:apply-templates/>
       </table>
     </body>
   </xsl:template>

  <!-- ======================================================================== -->
  <!-- Karsitaan pois kaikki muut tekstit                                       -->
  <!-- ======================================================================== -->
   <xsl:template match="text()">
   </xsl:template>

</xsl:stylesheet>

Ajaminen tapahtuu kuten edellisessä esimerkissä tai asentamalla XSLT-ohjelman suodattimeksi OpenOffice.orgiin.

Suorittaminen tuottaa seuraavanlaisen raportin:

Lomakeraportti

Generoitu täytetyn lomakkeen sisältävästä OASIS OpenDocument -tekstiasiakirjasta.

Tekstikenttä Täytetty arvo
k_ammatti: kuningas
k_syntymaaika: 15438 (numeerinen päivämäärä 1.1.1900 laskien)
k_sukunimi: Suuri
k_etunimet: Kaarle
k_siviilisaaty: eronnut
k_syntymapaikka: paikkala

Marko Grönroos
magi42@openoffice.org