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
|