 |
| XSLT General questions and answers about XSLT. For issues strictly specific to the book XSLT 1.1 Programmers Reference, please post to that forum instead. |
Welcome to the p2p.wrox.com Forums.
You are currently viewing the XSLT section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
|
|
|
|

July 22nd, 2013, 08:56 AM
|
|
Registered User
|
|
Join Date: Jun 2013
Posts: 5
Thanks: 2
Thanked 0 Times in 0 Posts
|
|
XSLT transform source file while ordering based on class and apply xsl number
Hello,
I have the following source, which I am able to transform and generate the new XML while ordering the track list using @class.
Now the issue I am having is that I would like to restart/reset the value of
Code:
<vlc:id>xsl:number </vlc:id>
right from the first track element, which gets a value during the transformation, so that the first track element in the resulting XML has
, and the second one has
and so on...
I have tried to see if it was possible to control the order in which the templates run so that the template that sorts the track elements is executed before the one that generates the numbers, but I was not able to do.
Here is my source document:
Code:
<html>
<head>
<title></title>
</head>
<body>
<!-- This is my first comment -->
<ol>
<li>3 Song 1</li>
<li>4 Song 2</li>
<li>5 Song 3 HD</li>
<li>7 Song 4</li>
<li>8 Song 5</li>
<li>10 Song 6 HD</li>
<li>14 Song 7</li>
<li>16 Song 8</li>
<li>18 Song 9</li>
<li>19 Song 10 HD</li>
<li>26 Song 11</li>
<li>29 Song 12</li>
<li>31 Song 13 HD</li>
<li>34 Song 14</li>
<li>37 Song 15</li>
<li>39 Song 16</li>
<li>41 Song 17 HD</li>
<li>44 Song 18</li>
</ol>
</body>
</html>
And the XSLT 2.0
Code:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xspf="http://xspf.org/ns/0/"
xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="2">
<xsl:output method="xml" omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- It is very important to add the prefix xspf to the xmlns for xspf otherwise the sorting does not work-->
<!--This identity transform template allows to copy the whole document and then drop all the parts that we don't want to keep-->
<!-- Drop the content of the head, hr, and h1 elements -->
<xsl:template match="head|hr|h1"/>
<!--Copy the content of <ol> and its children-->
<xsl:template match="ol">
<!-- TrackList is case sensitive and it was not working without the proper-->
<trackList>
<xsl:variable name="tracks">
<xsl:apply-templates/>
</xsl:variable>
<xsl:perform-sort select="$tracks/*">
<xsl:sort select="title/@class"/>
</xsl:perform-sort>
</trackList>
</xsl:template>
<!--Copy the content of <li> and its content-->
<xsl:template name="mylist" match="li">
<!-- Create new elements track and title as its child and grab the current content of li text, then use the second group of string using tokenize() -->
<track>
<location>
<!-- The substring-before functionality allows to grab the first set of characters/word/number before the provided arg$, in this case space ' '-->
<xsl:value-of select="concat('http://localhost/auto/v',substring-before(., ' '),'?dlna')"
/>
</location>
<title>
<xsl:variable name="cleaned" select="replace(.,'\(HD\)|-DTV',' HD')"/>
<!-- Check if track title contains HD create a class for SD or HD for it -->
<xsl:choose>
<xsl:when test="contains($cleaned, 'HD')">
<xsl:attribute name="class">
<xsl:text>HD</xsl:text>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="class">
<xsl:text>SD</xsl:text>
</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<!-- Create a variable to hold the cleaned title for every track -->
<!--<xsl:value-of select="replace(.,'(HD)','HD',substring-after(., ' '))" />-->
<xsl:value-of select="substring-after($cleaned, ' ')"/>
</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>
<!-- Count the number of <li> as they represent a single track -->
<xsl:number count="li"/>
<!--<xsl:value-of select="substring-before(., ' ')"/>-->
</vlc:id>
</extension>
</track>
</xsl:template>
<!--Copy the content of <body> and its children. This snippet was at the beginning of the document, but then I moved it to the end of the XSLT-->
<xsl:template match="body">
<playlist>
<title>Playlist</title>
<xsl:apply-templates/>
<!-- By putting the apply-templates above this snippet it makes it generate after the whole document, which is what I wanted to achieve. -->
<!-- For every substring-before create a list of vlc:item as found in the automatically created VLC playlist-->
<extension application="http://www.videolan.org/vlc/playlist/0">
<xsl:for-each select="(ol/li/text())">
<!-- This allows to create self-closing attribute tag for vlc:id tid-->
<xsl:variable name="vlcname">
<xsl:value-of select="substring-before(., ' ')"/>
</xsl:variable>
<xsl:element name="vlc:item">
<xsl:attribute name="tid">
<!-- Count the number of <li> as they represent a single track -->
<xsl:number count="li" format="0"/>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</extension>
</playlist>
</xsl:template>
</xsl:stylesheet>
The current output looks like the below:
Code:
<playlist xmlns:xspf="http://xspf.org/ns/0/"
xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/">
<title>Playlist</title>
<trackList>
<track>
<location>http://localhost/auto/v5?dlna</location>
<title class="HD">Song 3 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>3</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v10?dlna</location>
<title class="HD">Song 6 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>6</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v19?dlna</location>
<title class="HD">Song 10 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>10</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v31?dlna</location>
<title class="HD">Song 13 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>13</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v41?dlna</location>
<title class="HD">Song 17 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>17</vlc:id>
</extension>
</track>
</trackList>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:item tid="1"/>
<vlc:item tid="2"/>
<vlc:item tid="3"/>
<vlc:item tid="4"/>
<vlc:item tid="5"/>
</extension>
</playlist>
And what I need should be like the below output:
Code:
<playlist xmlns:xspf="http://xspf.org/ns/0/"
xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/">
<title>Playlist</title>
<trackList>
<track>
<location>http://localhost/auto/v5?dlna</location>
<title class="HD">Song 3 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>1</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v10?dlna</location>
<title class="HD">Song 6 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>2</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v19?dlna</location>
<title class="HD">Song 10 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>3</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v31?dlna</location>
<title class="HD">Song 13 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>4</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v41?dlna</location>
<title class="HD">Song 17 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>5</vlc:id>
</extension>
</track>
</trackList>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:item tid="1"/>
<vlc:item tid="2"/>
<vlc:item tid="3"/>
<vlc:item tid="4"/>
<vlc:item tid="5"/>
</extension>
</playlist>
I am using Saxon-EE 9.5.0.2
Thanks in advance for your help
Last edited by eloralon; July 22nd, 2013 at 09:19 AM..
|
|

July 23rd, 2013, 05:19 AM
|
|
Friend of Wrox
|
|
Join Date: Nov 2007
Posts: 1,243
Thanks: 0
Thanked 245 Times in 244 Posts
|
|
I don't quite understand why the code you posted would create the output you posted where you have only shown 'HD' songs.
There must be some filtering you are doing elsewhere which I don't see in your code.
As for numbering those items you process, I would simply sort when doing apply-templates and then output the value of "position()" to get sequential numbers:
So the code
Code:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xspf="http://xspf.org/ns/0/"
xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="2">
<xsl:output method="xml" omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- It is very important to add the prefix xspf to the xmlns for xspf otherwise the sorting does not work-->
<!--This identity transform template allows to copy the whole document and then drop all the parts that we don't want to keep-->
<!-- Drop the content of the head, hr, and h1 elements -->
<xsl:template match="head|hr|h1"/>
<!--Copy the content of <ol> and its children-->
<xsl:template match="ol">
<!-- TrackList is case sensitive and it was not working without the proper-->
<xsl:variable name="tl">
<trackList>
<xsl:apply-templates select="li">
<xsl:sort select="if (matches(., '\(HD\)|-DTV')) then 'HD' else 'SD'"/>
</xsl:apply-templates>
</trackList>
</xsl:variable>
<xsl:copy-of select="$tl"/>
<xsl:apply-templates select="$tl/trackList"/>
</xsl:template>
<!--Copy the content of <li> and its content-->
<xsl:template name="mylist" match="li">
<!-- Create new elements track and title as its child and grab the current content of li text, then use the second group of string using tokenize() -->
<track>
<location>
<!-- The substring-before functionality allows to grab the first set of characters/word/number before the provided arg$, in this case space ' '-->
<xsl:value-of select="concat('http://localhost/auto/v',substring-before(., ' '),'?dlna')"
/>
</location>
<title>
<xsl:variable name="cleaned" select="replace(.,'\(HD\)|-DTV',' HD')"/>
<!-- Check if track title contains HD create a class for SD or HD for it -->
<xsl:choose>
<xsl:when test="contains($cleaned, 'HD')">
<xsl:attribute name="class">
<xsl:text>HD</xsl:text>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="class">
<xsl:text>SD</xsl:text>
</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<!-- Create a variable to hold the cleaned title for every track -->
<!--<xsl:value-of select="replace(.,'(HD)','HD',substring-after(., ' '))" />-->
<xsl:value-of select="substring-after($cleaned, ' ')"/>
</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>
<xsl:value-of select="position()"/>
</vlc:id>
</extension>
</track>
</xsl:template>
<!--Copy the content of <body> and its children. This snippet was at the beginning of the document, but then I moved it to the end of the XSLT-->
<xsl:template match="body">
<playlist>
<title>Playlist</title>
<xsl:apply-templates/>
</playlist>
</xsl:template>
<xsl:template match="trackList">
<extension application="http://www.videolan.org/vlc/playlist/0">
<xsl:for-each select="track">
<xsl:element name="vlc:item">
<xsl:attribute name="tid">
<!-- Count the number of <track> as they represent a single track -->
<xsl:number format="0"/>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</extension>
</xsl:template>
</xsl:stylesheet>
produces the result
Code:
<playlist xmlns:xspf="http://xspf.org/ns/0/"
xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/">
<title>Playlist</title>
<trackList>
<track>
<location>http://localhost/auto/v3?dlna</location>
<title class="SD">Song 1</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>1</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v4?dlna</location>
<title class="SD">Song 2</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>2</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v5?dlna</location>
<title class="HD">Song 3 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>3</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v7?dlna</location>
<title class="SD">Song 4</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>4</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v8?dlna</location>
<title class="SD">Song 5</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>5</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v10?dlna</location>
<title class="HD">Song 6 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>6</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v14?dlna</location>
<title class="SD">Song 7</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>7</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v16?dlna</location>
<title class="SD">Song 8</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>8</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v18?dlna</location>
<title class="SD">Song 9</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>9</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v19?dlna</location>
<title class="HD">Song 10 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>10</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v26?dlna</location>
<title class="SD">Song 11</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>11</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v29?dlna</location>
<title class="SD">Song 12</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>12</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v31?dlna</location>
<title class="HD">Song 13 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>13</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v34?dlna</location>
<title class="SD">Song 14</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>14</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v37?dlna</location>
<title class="SD">Song 15</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>15</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v39?dlna</location>
<title class="SD">Song 16</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>16</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v41?dlna</location>
<title class="HD">Song 17 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>17</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v44?dlna</location>
<title class="SD">Song 18</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>18</vlc:id>
</extension>
</track>
</trackList>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:item tid="1"/>
<vlc:item tid="2"/>
<vlc:item tid="3"/>
<vlc:item tid="4"/>
<vlc:item tid="5"/>
<vlc:item tid="6"/>
<vlc:item tid="7"/>
<vlc:item tid="8"/>
<vlc:item tid="9"/>
<vlc:item tid="10"/>
<vlc:item tid="11"/>
<vlc:item tid="12"/>
<vlc:item tid="13"/>
<vlc:item tid="14"/>
<vlc:item tid="15"/>
<vlc:item tid="16"/>
<vlc:item tid="17"/>
<vlc:item tid="18"/>
</extension>
</playlist>
__________________
Martin Honnen
Microsoft MVP (XML, Data Platform Development) 2005/04 - 2013/03
My blog
|
|
The Following User Says Thank You to Martin Honnen For This Useful Post:
|
|
|

July 23rd, 2013, 09:37 AM
|
|
Registered User
|
|
Join Date: Jun 2013
Posts: 5
Thanks: 2
Thanked 0 Times in 0 Posts
|
|
XSLT transform source file while ordering based on class and apply xsl number
Thanks Martin,
The code you provided helped fix my problem. Thanks for cleaning my code also. You asked regarding the presence of only some HD songs in the source file which is true, but what I do is generate a SD class for anything that does not have a HD, (HD), or -DTV in its title.
Code:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xspf="http://xspf.org/ns/0/"
xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="2">
<xsl:output method="xml" omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- It is very important to add the prefix xspf to the xmlns for xspf otherwise the sorting does not work-->
<!--This identity transform template allows to copy the whole document and then drop all the parts that we don't want to keep-->
<!-- Drop the content of the head, hr, and h1 elements -->
<xsl:template match="head|hr|h1"/>
<!--Copy the content of <ol> and its children-->
<xsl:template match="ol">
<!-- TrackList is case sensitive and it was not working without the proper-->
<xsl:variable name="tl">
<trackList>
<xsl:apply-templates select="li">
<xsl:sort select="if (matches(., 'HD|\(HD\)|-DTV')) then 'HD' else 'SD'"/>
</xsl:apply-templates>
</trackList>
</xsl:variable>
<xsl:copy-of select="$tl"/>
<!-- I did not need this portion of the code. The code works perfectly without it-->
<!-- <xsl:apply-templates select="$tl/trackList"/>-->
</xsl:template>
<!--Copy the content of <li> and its content-->
<xsl:template name="mylist" match="li">
<!-- Create new elements track and title as its child and grab the current content of li text, then use the second group of string using tokenize() -->
<track>
<location>
<!-- The substring-before functionality allows to grab the first set of characters/word/number before the provided arg$, in this case space ' '-->
<xsl:value-of select="concat('http://localhost/auto/v',substring-before(., ' '),'?dlna')"
/>
</location>
<title>
<xsl:variable name="cleaned" select="replace(.,'\(HD\)|-DTV',' HD')"/>
<!-- Check if track title contains HD create a class for SD or HD for it -->
<xsl:choose>
<xsl:when test="contains($cleaned, 'HD')">
<xsl:attribute name="class">
<xsl:text>HD</xsl:text>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="class">
<xsl:text>SD</xsl:text>
</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<!-- Create a variable to hold the cleaned title for every track -->
<!--<xsl:value-of select="replace(.,'(HD)','HD',substring-after(., ' '))" />-->
<xsl:value-of select="substring-after($cleaned, ' ')"/>
</title>
<!-- <extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>
<!-\- Count the number of <li> as they represent a single track -\->
<xsl:number count="li"/>
<!-\-<xsl:value-of select="substring-before(., ' ')"/>-\->
</vlc:id>
</extension>-->
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>
<xsl:value-of select="position()"/>
</vlc:id>
</extension>
</track>
</xsl:template>
<!--Copy the content of <body> and its children. This snippet was at the beginning of the document, but then I moved it to the end of the XSLT-->
<xsl:template match="body">
<playlist>
<title>Playlist</title>
<xsl:apply-templates/>
<!-- By putting the apply-templates above this snippet it makes it generate after the whole document, which is what I wanted to achieve. -->
<!-- For every substring-before create a list of vlc:item as found in the automatically created VLC playlist-->
<extension application="http://www.videolan.org/vlc/playlist/0">
<xsl:for-each select="(ol/li/text())">
<!-- This allows to create self-closing attribute tag for vlc:id tid-->
<xsl:variable name="vlcname">
<xsl:value-of select="substring-before(., ' ')"/>
</xsl:variable>
<xsl:element name="vlc:item">
<xsl:attribute name="tid">
<!-- Count the number of <li> as they represent a single track -->
<xsl:number count="li" format="0"/>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</extension>
</playlist>
</xsl:template>
</xsl:stylesheet>
and the resulting file in the format I want looks like:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<playlist xmlns:xspf="http://xspf.org/ns/0/"
xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/">
<title>Playlist</title>
<trackList>
<track>
<location>http://localhost/auto/v7?dlna</location>
<title class="HD">Song 4 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>1</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v19?dlna</location>
<title class="HD">Song 10 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>2</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v34?dlna</location>
<title class="HD">Song 14 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>3</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v44?dlna</location>
<title class="HD">Song 18 HD</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>4</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v3?dlna</location>
<title class="SD">Song 1</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>5</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v4?dlna</location>
<title class="SD">Song 2</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>6</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v5?dlna</location>
<title class="SD">Song 3</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>7</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v8?dlna</location>
<title class="SD">Song 5</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>8</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v10?dlna</location>
<title class="SD">Song 6</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>9</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v14?dlna</location>
<title class="SD">Song 7</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>10</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v16?dlna</location>
<title class="SD">Song 8</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>11</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v18?dlna</location>
<title class="SD">Song 9</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>12</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v26?dlna</location>
<title class="SD">Song 11</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>13</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v29?dlna</location>
<title class="SD">Song 12</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>14</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v31?dlna</location>
<title class="SD">Song 13</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>15</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v37?dlna</location>
<title class="SD">Song 15</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>16</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v39?dlna</location>
<title class="SD">Song 16</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>17</vlc:id>
</extension>
</track>
<track>
<location>http://localhost/auto/v41?dlna</location>
<title class="SD">Song 17</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>18</vlc:id>
</extension>
</track>
</trackList>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:item tid="1"/>
<vlc:item tid="2"/>
<vlc:item tid="3"/>
<vlc:item tid="4"/>
<vlc:item tid="5"/>
<vlc:item tid="6"/>
<vlc:item tid="7"/>
<vlc:item tid="8"/>
<vlc:item tid="9"/>
<vlc:item tid="10"/>
<vlc:item tid="11"/>
<vlc:item tid="12"/>
<vlc:item tid="13"/>
<vlc:item tid="14"/>
<vlc:item tid="15"/>
<vlc:item tid="16"/>
<vlc:item tid="17"/>
<vlc:item tid="18"/>
</extension>
</playlist>
|
|
 |