Alt + Tab
From ICO wiki
Team Echo Võrgurakendused II
- Mihkel Roots
- Roland Soosaar
- Krista Norak
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> <link rel="stylesheet" type="text/css" href="https://d.arti.ee/media.css"/> <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>