Wrox Programmer Forums
Go Back   Wrox Programmer Forums > XML > XSLT
|
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
 
Old July 22nd, 2013, 08:56 AM
Registered User
 
Join Date: Jun 2013
Posts: 5
Thanks: 2
Thanked 0 Times in 0 Posts
Default 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
Code:
<vlc:id>1</vlc:id>
, and the second one has
Code:
<vlc:id>2</vlc:id>
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..
 
Old July 23rd, 2013, 05:19 AM
Friend of Wrox
 
Join Date: Nov 2007
Posts: 1,243
Thanks: 0
Thanked 245 Times in 244 Posts
Default

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:
eloralon (July 23rd, 2013)
 
Old July 23rd, 2013, 09:37 AM
Registered User
 
Join Date: Jun 2013
Posts: 5
Thanks: 2
Thanked 0 Times in 0 Posts
Default 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>





Similar Threads
Thread Thread Starter Forum Replies Last Post
transform target file from 2 source files metinhoclam XSLT 7 September 17th, 2010 07:39 PM
How to apply CSS to XSLT file??? rakesh XSLT 1 July 25th, 2008 03:20 AM
xsl:param and xsl:apply-templates' "select" newbieboobers XSLT 1 March 25th, 2008 07:23 PM
differnce between xsl:apply-templates and xsl:call chandu.mca007 XSLT 2 June 12th, 2007 04:12 AM
XSL Transform with xsl string NOT xsl file skin XSLT 0 June 16th, 2003 07:30 AM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.