XML-asiakirjat » Esimerkki 2: syöttökenttien kerääminen
Esimerkki 2: lomakkeen syöttökenttien kerääminen
Syöttökentät ovat eräs tapa toteuttaa lomakkeita. Tässä
yksinkertaisessa esimerkissä kerätään OpenDocument-muotoisesta
tekstiasiakirjasta kaikkien syöttökenttien sisältämät tiedot ja
tulostetaan ne HTML-muodossa.
Ohjelma kerää syöttökentät mistä tahansa tiedostosta, ei vain
lomakkeesta. Alempana toinen esimerkki kenttien
keräämisestä aidosta lomake.fi-palvelun tarjoamasta Microsoft
Word -lomakkeesta.
Oletetaan, että käyttäjä on täyttänyt tyhjän
lomakkeen ja saanut aikaiseksi täytetyn
lomakkeen.
Lomakkeessa on syöttökenttiä, jotka on nimetty k_sukunimi,
k_etunimet, ja niin edelleen.
XSLT-ohjelma (eli muunnin tai "tyylisivu") on
seuraavanlainen. Alussa on nimialueiden määrittelyjen vakio-osa, jonka
jälkeen tulee tulosmuodon määrittely (HTML) ja lopulta kolme
muunnossääntöä.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- ======================================================================== -->
<!-- OpenDocument-formaatin nimiavaruusmäärittelyt -->
<!-- Huomaa, että tähän on otettu mukaan vain ne nimiavaruudet, joita tässä -->
<!-- muunnoksessa oikeasti käytetään. -->
<!-- ======================================================================== -->
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
office:version="1.0"
version="1.0">
<!-- Määrätään muunnoksen ulostulomuoto ja merkkikoodaus. -->
<xsl:output method="html" encoding="ISO-8859-1"/>
<!-- ======================================================================== -->
<!-- Lue syöttökentän tiedot ja muotoile ne taulukon riviksi -->
<!-- ======================================================================== -->
<xsl:template match="text:text-input">
<xsl:if test="normalize-space(.) != ''">
<tr>
<td><xsl:value-of select="normalize-space(@text:description)"/>:</td>
<td><xsl:value-of select="normalize-space(.)"/></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>Tekstikenttä</th><th>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>
XSLT-muunnoksen tekeminen asiakirjalle
XSLT-ohjelman voi asentaa OpenOffice.orgiin vientisuodattimeksi,
kuten on kuvattu alempana. Sitä voi kuitenkin käyttää myös
OpenOffice.orgin ulkopuolella. Esimerkiksi Linuxissa sitä käytetään
komentoriviltä seuraavasti. Puretaan asiakirjasta ensin sen sisältö ja
sen jälkeen ajetaan nimellä lomake-tekstiksi.xsl tallennettu
XSLT-ohjelma.
$ unzip lomake1.odt content.xml
$ xsltproc lomake-tekstiksi.xsl content.xml
Tällöin saadaan seuraava HTML-muotoinen tulostus:
<body ...nimiavaruusmäärittelyjä...>
<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>
<tr>
<td>k_sukunimi:</td>
<td>Suuri</td>
</tr>
<tr>
<td>k_etunimet:</td>
<td>Aleksanteri</td>
</tr>
<tr>
<td>k_ammatti:</td>
<td>valloittaja</td>
</tr>
<tr>
<td>k_syntymaaika:</td>
<td>1.4.-390</td>
</tr>
</table>
</body>
Joka siis näyttää tältä:
Lomakeraportti
Generoitu täytetyn lomakkeen sisältävästä OASIS OpenDocument -tekstiasiakirjasta.
Tekstikenttä |
Täytetty arvo |
k_sukunimi: |
Suuri |
k_etunimet: |
Aleksanteri |
k_ammatti: |
valloittaja |
k_syntymaaika: |
1.4.-390 |
Jotkin julkishallinnon lomakkeet ovat edelleen
Word-muodossa. Esimerkiksi lomake.fi
tarjoaa sellaisia, muttei vielä OpenOffice-muodossa. Näiden
lomakkeiden sisältö on kuitenkin helppo muuttaa OpenOffice- tai
OpenDocument-muotoon ja käsitellä yllä määritellyllä suodattimella.
Otetaan vaikkapa Yrittäjyys-kokoelmasta lomake Yksityinen elinkeinonharjoittaja, perustamisilmoitus (Word).
Muunnetaan se OpenDocument-muotoon lataamalla se OpenOffice.orgiin
Word-tiedostona ja tallentamalla se uudessa muodossa. Suuri määrä
Word-asiakirjoja on helposti muunnettavissa .sxw- tai .odt-muotoon
OpenOffice.orgin asiakirjamuuntimella. Asiakirjamuunnin
käynnistetään valikosta Tiedosto/Ohjattu
toiminto/Asiakirjamuunnin.
Lomakeraportti
Generoitu täytetyn lomakkeen sisältävästä OASIS OpenDocument -tekstiasiakirjasta.
Tekstikenttä |
Täytetty arvo |
Teksti6: |
Munfirma |
Teksti217: |
Joku kiva vaihtoehtonimi |
Teksti218: |
Toinen tosi kiva vaihtoehtoinen nimi |
Teksti250: |
Se kiva kaupunki jossa mä asun |
Teksti6: |
Mycompany |
Teksti241: |
Mycompany |
Teksti243: |
Biznekset ameriikoissa |
Teksti242: |
Blerp |
Teksti244: |
Biznekset ruottissa |
Teksti11: |
Minun yritykseni, Blerp |
Teksti217: |
Risto Reipas |
Teksti216: |
123456-123a |
Teksti239: |
suomi |
Teksti223: |
Kivakuja 42 |
: |
1 |
: |
2 |
: |
3 |
: |
4 |
: |
5 |
Teksti224: |
KAUPUNKILA |
Teksti15: |
Käymälä 3 |
Teksti16: |
12345 |
Teksti17: |
KYLÄLÄ |
Teksti18: |
09-123456 |
Teksti219: |
555-12643 |
Teksti220: |
555-67375 |
Teksti22: |
mie@jossain.fi |
Teksti222: |
http://kotskasivu.fi/ |
Teksti225: |
1.1.-31.12 |
Teksti226: |
1.1.2005-31.12.2005 |
Teksti31: |
Ei kukkaa |
Teksti32: |
2783483264783264 |
Teksti33: |
Osoitekuja 88 |
Teksti34: |
12345 |
Teksti35: |
PAIKKALA |
Teksti225: |
Semmosii bizniksii, tiätsä |
Teksti245: |
Ju nou, juttui |
Teksti248: |
Tahan tuottaminen |
Teksti228: |
ei |
(Lomakkeesta oli suurin osa kentistä jätetty täyttämättä.)
Marko Grönroos magi42@openoffice.org
|