Team Echo
From ICO wiki
Team Echo Võrgurakendused II
- Mihkel Vajak
- Janno Oolo
- Mari-Liis Oldja
- Arti Zirk
- Joosep Voolma
XML
<source lang="xml"> <?xml version="1.0" encoding="utf-8" ?> <?xml-stylesheet type="text/xsl" href="Echo-html.xslt"?> <echo> <videos> <video id="1" view-count="69" author-id="1"> <title>Mihkli rännak</title> <streams> <stream type="primary"> <stream-url mime-type="video/webm">https://u.wut.ee/ookutsu.webm</stream-url> <stream-url mime-type="audio/mp3">https://media/id/audio.mp3</stream-url> <stream-url mime-type="video/mp4">https://media/id/video.mp4</stream-url> </stream> <stream type="secondary"> <stream-url mime-type="audio/*">https://media/id/audio2</stream-url> </stream> </streams> <metadata> <description> Väga kurb </description> </metadata> <comments> <comment author-id="1" post-timestamp="1489683470"> Norm värk </comment> </comments> </video> <video id="2" view-count="69" author-id="2"> <title>Lahe video</title> <streams> <stream type="primary"> <stream-url mime-type="video/webm">https://u.wut.ee/youfuckedup.webm</stream-url> <stream-url mime-type="audio/mp3">https://media/id/audio.mp3</stream-url> <stream-url mime-type="video/mp4">https://media/id/video.mp4</stream-url> </stream> <stream type="secondary"> <stream-url mime-type="audio/*">https://media/id/audio2</stream-url> </stream> </streams> <metadata> <description> See on väga äge video on see </description> </metadata> <comments> <comment author-id="1" post-timestamp="1489683470"> Norm värk </comment> <comment author-id="2" post-timestamp="1489683470"> Norm värk 2 </comment> </comments> </video> <video id="3" view-count="69" author-id="3"> <title>Nalja kah</title> <streams> <stream type="primary"> <stream-url mime-type="video/webm">https://u.wut.ee/perlvspython.webm</stream-url> <stream-url mime-type="audio/mp3">https://media/id/audio.mp3</stream-url> <stream-url mime-type="video/mp4">https://media/id/video.mp4</stream-url> </stream> <stream type="secondary"> <stream-url mime-type="audio/*">https://media/id/audio2</stream-url> </stream> </streams> <metadata> <description> Väga hea huumor </description> </metadata> <comments> <comment author-id="1" post-timestamp="1489683470"> Norm värk </comment> </comments> </video> <video id="4" view-count="69" author-id="1"> <title>Arti areng</title> <streams> <stream type="primary"> <stream-url mime-type="video/webm">https://u.wut.ee/sittmissitt.webm</stream-url> <stream-url mime-type="audio/mp3">https://media/id/audio.mp3</stream-url> <stream-url mime-type="video/mp4">https://media/id/video.mp4</stream-url> </stream> <stream type="secondary"> <stream-url mime-type="audio/*">https://media/id/audio2</stream-url> </stream> </streams> <metadata> <description> Väga kurb </description> </metadata> <comments> <comment author-id="1" post-timestamp="1489683470"> Imelik oli </comment> </comments> </video> <video id="4" view-count="69" author-id="4"> <title>Oldja laulud</title> <streams> <stream type="primary"> <stream-url mime-type="video/webm">https://u.wut.ee/healtscare.webm</stream-url> <stream-url mime-type="audio/mp3">https://media/id/audio.mp3</stream-url> <stream-url mime-type="video/mp4">https://media/id/video.mp4</stream-url> </stream> <stream type="secondary"> <stream-url mime-type="audio/*">https://media/id/audio2</stream-url> </stream> </streams> <metadata> <description> Draama Queen </description> </metadata> <comments> <comment author-id="1" post-timestamp="1489683420"> Norm värk </comment> </comments> </video> <video id="4" view-count="69" author-id="5"> <title>Osa 13 ehk Oolo kadumine</title> <streams> <stream type="primary"> <stream-url mime-type="video/webm">https://u.wut.ee/healtscare.webm</stream-url> <stream-url mime-type="audio/mp3">https://media/id/audio.mp3</stream-url> <stream-url mime-type="video/mp4">https://media/id/video.mp4</stream-url> </stream> <stream type="secondary"> <stream-url mime-type="audio/*">https://media/id/audio2</stream-url> </stream> </streams> <metadata> <description> Lihtsalt kadus ära </description> </metadata> <comments> <comment author-id="1" post-timestamp="1489683470"> Norm värk </comment> </comments> </video> </videos> <users> <user id="1"> <username>admin</username> <full-name>Admin</full-name> </user> <user id="2"> <username>oolo</username> <full-name>Oolo</full-name> </user> <user id ="3"> <username>zirk</username> <full-name>Hr. Zirk</full-name> </user> </users> <lists> <list owner-id="1"> <video id="1" timestamp-added="1489684373"></video> <video id="3" timestamp-added="1489684379"></video> </list> </lists> </echo>
XSLT XML
<?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="xml" indent="yes"/> <xsl:template match="/"> <videos> <xsl:for-each select="echo/videos/video"> <video> <xsl:variable name="author-id" select="@author-id"/> <title> <xsl:value-of select="title"/> </title> <xsl:copy-of select="streams/stream[@type='primary']" /> <autor> <xsl:copy-of select="/echo/users/user[@id=$author-id]" /> </autor> <description> <xsl:value-of select="metadata/description"/> </description> <comments> <xsl:for-each select="comments/comment"> <xsl:variable name="comment-author-id" select="@author-id"/> <comment> <text><xsl:value-of select="." /></text> <xsl:copy-of select="/echo/users/user[@id=$comment-author-id]/username" /> <xsl:copy-of select="/echo/users/user[@id=$comment-author-id]/full-name" /> </comment> </xsl:for-each> </comments> </video> </xsl:for-each> </videos> </xsl:template> </xsl:stylesheet>
XSLT HTML
<?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="/"> <html> <title>Media Kogumik</title> <xsl:for-each select="echo/videos/video"> <div> <xsl:variable name="author-id" select="@author-id"/> <h3> <xsl:value-of select="title"/> </h3> <h4> <xsl:value-of select="/echo/users/user[@id=$author-id]/full-name" /> </h4> <video controls="" loop=""> <xsl:for-each select="streams/stream[@type='primary']"> <xsl:for-each select="stream-url"> <source> <xsl:attribute name="type"> <xsl:value-of select="@mime-type"/> </xsl:attribute> <xsl:attribute name="src"> <xsl:value-of select="."/> </xsl:attribute> </source> </xsl:for-each> </xsl:for-each> </video> <p> <xsl:value-of select="metadata/description"/> </p> <div> <h4>Komentaarid:</h4> <ol> <xsl:for-each select="comments/comment"> <li> <xsl:variable name="comment-author-id" select="@author-id"/> <div> <xsl:value-of select="." /> </div> <div> <b>Autor:</b> <xsl:value-of select="/echo/users/user[@id=$comment-author-id]/full-name" /> </div> </li> </xsl:for-each> </ol> </div> </div> <hr/> </xsl:for-each> </html> </xsl:template> </xsl:stylesheet>
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="echo"> <xs:complexType> <xs:sequence> <xs:element name="videos"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="video"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:string" /> <xs:element name="streams"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="stream"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="stream-url"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="mime-type" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="type" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="metadata"> <xs:complexType> <xs:sequence> <xs:element name="description" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="comments"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="comment"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="author-id" type="xs:unsignedInt" use="required" /> <xs:attribute name="post-timestamp" type="xs:unsignedInt" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="id" type="xs:unsignedInt" use="required" /> <xs:attribute name="view-count" type="xs:unsignedInt" use="required" /> <xs:attribute name="author-id" type="xs:unsignedInt" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="users"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="user"> <xs:complexType> <xs:sequence> <xs:element name="username" type="xs:string" /> <xs:element name="full-name" type="xs:string" /> </xs:sequence> <xs:attribute name="id" type="xs:unsignedInt" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="lists"> <xs:complexType> <xs:sequence> <xs:element name="list"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="video"> <xs:complexType> <xs:attribute name="id" type="xs:unsignedInt" use="required" /> <xs:attribute name="timestamp-added" type="xs:unsignedInt" use="required" /> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="owner-id" type="xs:unsignedInt" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>