Muru

From ICO wiki

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>

Accounts with transactions 2015-03-07 11-01-59.png

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