VRFeeds
From ICO wiki
Tiimi liige
- Tarmo Sillajõe
Kasutatavad tehnoloogiad
Täiendatakse jooksvalt XML
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"/>;
</body> </html> </xsl:template> </xsl:stylesheet>
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>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'])" />
</body> </html> </xsl:template> </xsl:stylesheet>
</xsl:for-each>