Muru
Meeskond Muru
Liige:
- Murdho Savila
XML
XML
Pangakontod koos tehingutega.
<?xml version="1.0" encoding="utf-8"?>
<accounts type="array" order_by="created_at:DESC">
<account>
<id type="integer">476</id>
<customer-id type="integer">115</customer-id>
<refno>867625001039617</refno>
<balance type="decimal">120.0</balance>
<created-at type="dateTime">2015-01-01T15:30:00+02:00</created-at>
<transactions type="array" order_by="transaction_at:ASC" >
<transaction type="account_transaction">
<id type="integer">1994</id>
<account-id type="integer">476</account-id>
<transaction-at type="date">2015-03-06</transaction-at>
<amount type="decimal">150.0</amount>
<account-balance type="decimal">0.0</account-balance>
<debtor-id type="integer">56</debtor-id>
<creditor-id type="integer">115</creditor-id>
<description><![CDATA[Ülekanne]]></description>
<created-at type="dateTime">2015-03-05T22:54:54+02:00</created-at>
</transaction>
<transaction type="account_transaction">
<id type="integer">2013</id>
<account-id type="integer">476</account-id>
<transaction-at type="date">2015-03-07</transaction-at>
<amount type="decimal">-30.0</amount>
<account-balance type="decimal">150.0</account-balance>
<debtor-id type="integer">115</debtor-id>
<creditor-id type="integer">25</creditor-id>
<description><![CDATA[6762593001039618 06.03.15 19:01 Vapiano restoran Sola\\Tallinn \EST]]></description>
<created-at type="dateTime">2015-03-07T06:30:11+02:00</created-at>
</transaction>
</transactions>
</account>
<account>
<id type="integer">351</id>
<customer-id type="integer">78</customer-id>
<refno>867625001030245</refno>
<balance type="decimal">250.0</balance>
<created-at type="dateTime">2014-11-29T11:10:59+02:00</created-at>
<transactions type="array" order_by="transaction_at:DESC">
<transaction type="account_transaction">
<id type="integer">1930</id>
<account-id type="integer">351</account-id>
<transaction-at type="date">2015-02-28</transaction-at>
<amount type="decimal">-120.0</amount>
<account-balance type="decimal">370.0</account-balance>
<debtor-id type="integer">78</debtor-id>
<creditor-id type="integer">11</creditor-id>
<description><![CDATA[6762593001039618 26.02.15 19:31 KAUBAMAJA TALLINN \\TALLINN \EST]]></description>
<created-at type="dateTime">2015-02-28T06:31:42+02:00</created-at>
</transaction>
<transaction type="account_transaction">
<id type="integer">1799</id>
<account-id type="integer">351</account-id>
<transaction-at type="date">2015-02-25</transaction-at>
<amount type="decimal">240.0</amount>
<account-balance type="decimal">130.0</account-balance>
<debtor-id type="integer">101</debtor-id>
<creditor-id type="integer">78</creditor-id>
<description><![CDATA[Võla tasumine]]></description>
<created-at type="dateTime">2015-02-25T06:42:00+02:00</created-at>
</transaction>
</transactions>
</account>
</accounts>
XSD
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="accounts">
<xs:complexType>
<xs:sequence>
<xs:element name="account" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="id">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="customer-id">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element type="xs:string" name="refno"/>
<xs:element name="balance">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="created-at">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:dateTime">
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="transactions">
<xs:complexType>
<xs:sequence>
<xs:element name="transaction" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="id">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="account-id">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="transaction-at">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:date">
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="amount">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="account-balance">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="debtor-id">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="creditor-id">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element type="xs:string" name="description"/>
<xs:element name="created-at">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:dateTime">
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="type" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:string" name="order_by" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="type"/>
<xs:attribute type="xs:string" name="order_by"/>
</xs:complexType>
</xs:element>
</xs:schema>
XSLT
XSLT => HTML: kontode ja nendega seotud tehingute kuvamine.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/accounts">
<html>
<head>
<title>Accounts with transactions</title>
</head>
<body>
<h2>Accounts with transactions</h2>
<hr/>
<xsl:for-each select="account">
<h3>Account with transactions</h3>
<table border="1">
<tr>
<td>ID</td>
<td><xsl:value-of select="id"/></td>
</tr>
<tr>
<td>Customer ID</td>
<td><xsl:value-of select="customer-id"/></td>
</tr>
<tr>
<td>Refno</td>
<td><xsl:value-of select="refno"/></td>
</tr>
<tr>
<td>Balance</td>
<td><xsl:value-of select="balance"/> €</td>
</tr>
<tr>
<td>Created at</td>
<td><xsl:value-of select="created-at"/></td>
</tr>
</table>
<h4>Account transactions</h4>
<table border="1">
<xsl:for-each select="transactions/transaction">
<tr>
<th>ID</th>
<th>Account ID</th>
<th>Transaction at</th>
<th>Amount (€)</th>
<th>Account balance (€)</th>
<th>Debtor ID</th>
<th>Creditor ID</th>
<th>Description</th>
<th>Created at</th>
</tr>
<tr>
<td><xsl:value-of select="id"/></td>
<td><xsl:value-of select="account-id"/></td>
<td><xsl:value-of select="transaction-at"/></td>
<td><xsl:value-of select="amount"/></td>
<td><xsl:value-of select="account-balance"/></td>
<td><xsl:value-of select="debtor-id"/></td>
<td><xsl:value-of select="creditor-id"/></td>
<td><xsl:value-of select="description"/></td>
<td><xsl:value-of select="created-at"/></td>
</tr>
</xsl:for-each>
</table>
<br/>
<hr/>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XSLT => XML: kontode viitenumbrite ja jääkide kuvamine (kontojäägi järgi kahanevalt)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/accounts">
<accounts type="array" order_by="balance:DESC">
<xsl:for-each select="account">
<xsl:sort select="balance" order="descending"/>
<account>
<refno>
<xsl:value-of select="refno"/>
</refno>
<balance type="decimal">
<xsl:value-of select="balance"/>
</balance>
</account>
</xsl:for-each>
</accounts>
</xsl:template>
</xsl:stylesheet>
Veebiteenus
Analüüs
Mis saab olema?
Veebiteenusena on plaanis teha rakendus, mis aitab kasutajatel teha regulaarselt päringuid veebiteenustesse. Nimeks HelpfulServices.
Näiteks on see vajalik, kui klient soovib teavitust, kui tema kodukandis on lähipäevil oodata öökülmasid. Minu rakendus võimaldab tal selle päringu ühe korra seadistada ning määrata ajavahemiku, millal seda käivitatakse. Niipea kui päringu tulemusel saadud info vastab teatud tingimustele, saadetakse kliendile e-mail ning klient saab teadlikuks.
Teine näide võib olla näiteks toidupoodide e-poodides teatud kaupade soodushindade jälgimine.
Lähtekood
https://github.com/murdho/HelpfulServices
Klientrakendused
Retsensioonid
Ülesande "XML fail" retsensioon meeskonnale Repi meeskonnalt Muru
Ülesande "XML fail" retsensioon meeskonnale RK meeskonnalt Muru