Moin together,

I am relatively new to the matter and now I am faced with the task to solve the following topic.

This is the source document that I get delivered:

<?xml version="1.0" encoding="UTF-8"?>
<tabelle>
    <vorschaupaarungen>
        <vorschaupaarung>
            <spieldatum>Fr. 27.01.2017</spieldatum>
            <spieluhrzeit>15:30</spieluhrzeit>
            <heimmannschaft>Wesel</heimmannschaft>
            <gastmannschaft>Stuttgart</gastmannschaft>
        </vorschaupaarung>
        <vorschaupaarung>
            <spieldatum>Sa. 28.01.2017</spieldatum>
            <spieluhrzeit>16:30</spieluhrzeit>
            <heimmannschaft>Hannover</heimmannschaft>
            <gastmannschaft>Nürnberg</gastmannschaft>
        </vorschaupaarung>
        <vorschaupaarung>
            <spieldatum>Sa. 28.01.2017</spieldatum>
            <spieluhrzeit>17:30</spieluhrzeit>
            <heimmannschaft>Hamburg</heimmannschaft>
            <gastmannschaft>Berlin</gastmannschaft>
        </vorschaupaarung>
        <vorschaupaarung>
            <spieldatum>Sa. 28.01.2017</spieldatum>
            <spieluhrzeit>17:30</spieluhrzeit>
            <heimmannschaft>Basel</heimmannschaft>
            <gastmannschaft>Wien</gastmannschaft>
        </vorschaupaarung>
        <vorschaupaarung>
            <spieldatum>So. 29.01.2017</spieldatum>
            <spieluhrzeit>17:45</spieluhrzeit>
            <heimmannschaft>Baltrum</heimmannschaft>
            <gastmannschaft>Zypern</gastmannschaft>
        </vorschaupaarung>
        <vorschaupaarung>
            <spieldatum>So. 29.01.2017</spieldatum>
            <spieluhrzeit>12:45</spieluhrzeit>
            <heimmannschaft>Sylt</heimmannschaft>
            <gastmannschaft>Helgoland</gastmannschaft>
        </vorschaupaarung>
    </vorschaupaarungen>
</tabelle>

My XSL :

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
    <xsl:strip-space elements="*"/>
    <xsl:output method="xml" indent="yes" encoding="utf-8"/>
    <xsl:template match="/">
        <doc xml:lang="de">
            <xsl:comment>Termine</xsl:comment>
            <p class="T_termine_fussball">
                <xsl:for-each select="tabelle/vorschaupaarungen/vorschaupaarung">
                    <xsl:if test="spieldatum=spieldatum">
                        <span class="C_termin">
                            <xsl:value-of select="normalize-space(substring(spieldatum,4,7))"/>
                        </span>
                        <span class="C_paarung">
                            <xsl:value-of select="heimmannschaft"/> - <xsl:value-of select="gastmannschaft"/>
                        </span>
                    </xsl:if>
                </xsl:for-each>    
            </p>
        </doc>
    </xsl:template>
</xsl:stylesheet>

Here it is desired that the dates are sorted by date. So the date appears only once. For me, unfortunately, no matter how I try it out:

<?xml version="1.0" encoding="utf-8"?>
<doc xml:lang="de"><!--Termine-->
   <p class="T_termine_fussball">
      <span class="C_termin">27.01.</span>
      <span class="C_paarung">Wesel - Stuttgart</span>
      <span class="C_termin">28.01.</span>
      <span class="C_paarung">Hannover - Nürnberg</span>
      <span class="C_termin">28.01.</span>
      <span class="C_paarung">Hamburg - Berlin</span>
      <span class="C_termin">28.01.</span>
      <span class="C_paarung">Basel - Wien</span>
      <span class="C_termin">29.01.</span>
      <span class="C_paarung">Baltrum - Zypern</span>
      <span class="C_termin">29.01.</span>
      <span class="C_paarung">Sylt - Helgoland</span>
   </p>
</doc>

So SET XML at the end look:

<?xml version="1.0" encoding="utf-8"?>
<doc xml:lang="de">
   <artikel><!--Termine-->
      <p class="T_termine_fussball">
         <span class="C_termin">27.01.</span>
         <span class="C_paarung">Wesel - Stuttgart</span>
         <span class="C_termin">28.01.</span>
         <span class="C_paarung">Hannover - Nürnberg</span>
         <span class="C_paarung">Hamburg - Berlin</span>
         <span class="C_paarung">Basel - Wien</span>
         <span class="C_termin">29.01.</span>
         <span class="C_paarung">Baltrum - Zypern</span>
         <span class="C_paarung">Sylt - Helgoland</span>
      </p>
   </artikel>
</doc>

Can someone give me a hint how to get to my SOLL XML?
I also do not get along great with the search on the web - I probably only have one mistake here.
Maybe someone can help quickly.

Thanks in advance
Marshall

replace XSLT to:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
    <xsl:strip-space elements="*"/>
    <xsl:output method="xml" indent="yes" encoding="utf-8"/>
    <xsl:template match="/">
        <doc xml:lang="de">
            <xsl:comment>Termine</xsl:comment>
            <p class="T_termine_fussball">
                <xsl:variable name="spieldatum" />
                <xsl:for-each select="tabelle/vorschaupaarungen/vorschaupaarung">
                    <xsl:if test="spieldatum != preceding-sibling::vorschaupaarung[1]/spieldatum">
                        <span class="C_termin">
                            <xsl:value-of select="normalize-space(substring(spieldatum,4,7))"/>
                        </span>
                    </xsl:if>
                    <span class="C_paarung">
                        <xsl:value-of select="heimmannschaft"/> - <xsl:value-of select="gastmannschaft"/>
                    </span>
                </xsl:for-each>    
            </p>
        </doc>
    </xsl:template>
</xsl:stylesheet>
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.