VRFeeds

From ICO wiki
Revision as of 18:31, 6 April 2016 by Tsillajo (talk | contribs) (Created page with "__TOC__ == Tiimi liige == * Tarmo Sillajõe === Kasutatavad tehnoloogiad === Täiendatakse jooksvalt === Rakenduse kirjeldus === Eesmärgiks luua RSS voogude haldusteenus:...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Tiimi liige

  • Tarmo Sillajõe

Kasutatavad tehnoloogiad

Täiendatakse jooksvalt

Rakenduse kirjeldus

Eesmärgiks luua RSS voogude haldusteenus:

  • kasutaja saab teenuses RSS vooge lisada ja kustudada
  • kasutaja saab pärida talle huvipakkuvate voogude viimaseid uudiseid
  • luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks
  • kasutaja saab RSS vooge vaadata eraldi või grupeeritult
  • vooge peab puhverdama, kuna voogude lugemine võtab enamasti üsna palju aega

XML/XSD/XSLT

XML

<?xml version="1.0" encoding="utf-8" ?>
<subscriptions>
  <feed_categories>
    <feed_category>technology</feed_category>
    <feed_category>sports</feed_category>
    <feed_category>politics</feed_category>
    <feed_category>economy</feed_category>
    <feed_category>entertainment</feed_category>
    <feed_category>local</feed_category>
    <feed_category>educational</feed_category>
  </feed_categories>

  <user id="1">
    <user-name><![CDATA[jaan.fiktiivne@itcollege.ee]]></user-name>
    <group_id><![CDATA[student]]></group_id>
    <feeds max_number="6">
      <feed id="1" active="yes">
        <feed_category>local</feed_category>
        <feed_category>politics</feed_category>
        <feed_description><![CDATA[Postimees]]></feed_description>
        <feed_url>http://www.postimees.ee/rss/</feed_url>
        <no_of_episodes>10</no_of_episodes>
      </feed>
      <feed id="2" active="yes">
        <feed_category>technology</feed_category>
        <feed_description><![CDATA[Digitund]]></feed_description>
        <feed_url>http://raadio1.ee/digitund/feed/</feed_url>
        <no_of_episodes>10</no_of_episodes>
      </feed>
      <feed id="3" active="yes">
        <feed_category>economy</feed_category>
        <feed_description><![CDATA[Bloomberg]]></feed_description>
        <feed_url>http://www.newslookup.com/rss/business/bloomberg.rss</feed_url>
        <no_of_episodes>10</no_of_episodes>
      </feed>
    </feeds>
  </user>

  <user id="2">
    <user-name><![CDATA[jyri@mingimail.ee]]></user-name>
    <group_id><![CDATA[child]]></group_id>
    <feeds max_number="6">
      <feed id="1" active="yes">
        <feed_category>educational</feed_category>
        <feed_category>entertainment</feed_category>
        <feed_description><![CDATA[Educational Documentaries]]></feed_description>
        <feed_url>https://www.youtube.com/channel/UCLvs-IJf0B2T2v8hzy2zhEg</feed_url>
        <no_of_episodes>10</no_of_episodes>      
      </feed>     
    </feeds>
  </user>

  <user id="3">
    <user-name><![CDATA[mari@mingimail.ee]]></user-name>
    <group_id><![CDATA[student]]></group_id>
    <feeds max_number="6">
      <feed id="1" active="yes">
        <feed_category>educational</feed_category>
        <feed_category>technology</feed_category>
        <feed_category>entertainment</feed_category>
        <feed_description><![CDATA[Air Crash Investigation]]></feed_description>
        <feed_url>https://www.youtube.com/channel/UCIsX1NI5W05MU0eKlhVwm8g</feed_url>
        <no_of_episodes>10</no_of_episodes>
      </feed>     
    </feeds>
  </user>
 
</subscriptions>

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="subscriptions">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="feed_categories">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="40" name="feed_category" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element maxOccurs="unbounded" name="user">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="user-name" type="xs:string" />
              <xs:element name="group_id" type="xs:string" />
              <xs:element name="feeds">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="feed">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="unbounded" name="feed_category" type="xs:string" />
                          <xs:element name="feed_description" type="xs:string" />
                          <xs:element name="feed_url" type="xs:string" />
                          <xs:element name="no_of_episodes" type="xs:unsignedByte" />
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:unsignedByte" use="required" />
                        <xs:attribute name="active" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="max_number" type="xs:unsignedByte" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="id" type="xs:unsignedByte" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Logi

*03-04 XML'i, skeemifaili ja transformatsioonide loomine.

XSLT

Näitame kõiki kasutajaid ja nende tellimusi.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="html" indent="yes"/>

  <xsl:template match="/">

    <xsl:param name="filter">""</xsl:param>

    <html>
      <head>
        <title>Kõik kasutajad</title>
      </head>
      <body>
        

<xsl:for-each select="/subscriptions/user"> id: <xsl:value-of select="@id"/>;
user-name: <xsl:value-of select="user-name"/>;
group: <xsl:value-of select="group_id"/>;
max number of feeds allowed: <xsl:value-of select="feeds/@max_number"/> <xsl:for-each select="feeds/feed"> </xsl:for-each >
description url feed_category
<xsl:value-of select="feed_description"/> <xsl:value-of select="feed_url"/> <xsl:for-each select="feed_category">
  • <xsl:value-of select="."/>
  • </xsl:for-each>




    </xsl:for-each>

    </body> </html> </xsl:template> </xsl:stylesheet>
    
    
    Näitame kasutajaid, kes on omale tellinud tehnoloogiateemalised vood
    
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
    >
      <xsl:output method="html" indent="yes"/>
    
      <xsl:template match="/">
    
        <xsl:param name="search_category">technology</xsl:param>
    
        <html>
          <head>
            <title>valitud kasutajad</title>
          </head>
    
          <body>
            <xsl:for-each select="/subscriptions/user">
              <xsl:variable name="outer" select="."></xsl:variable>
              <xsl:for-each select="feeds/feed/feed_category">
                <xsl:if test=".=$search_category">
                  

    <xsl:value-of select="$outer/user-name"/>

    </xsl:if> </xsl:for-each> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>
    
    Leiame, kui palju on igal kasutajal aktiivseid voogude tellimusi.
    
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
    >
      <xsl:output method="html" indent="yes"/>
    
      <xsl:template match="/">
    
        <xsl:param name="search_category">technology</xsl:param>
    
        <html>
          <head>
            <title>feedide arv kasutaja kohta</title>
          </head>
    
          <body>
            

    <xsl:for-each select="/subscriptions/user"> Kasutajal <xsl:value-of select="./user-name"/> on aktiivseid feed'isid: <xsl:value-of select="count(feeds/feed[@active='yes'])" />

    </xsl:for-each>

    </body> </html> </xsl:template> </xsl:stylesheet>