2016-04-12 13 views
0

1/Ich habe eine Liste von Ereignissen mit einem Datum in einem XML. Ich möchte jede Veranstaltung mit ihrem Datum in einem CSV-Formular drucken. Wenn das Datum 01/01/1900 ist, suchen Sie dann den letzten vorherigen Geschwister unterschiedlich von 01/01/1900Wie findet man das letzte vorherige Geschwister gleich und das erste nächste Geschwister gleich?

Zum Beispiel:

<Events> 
<Event> 
    <Date>17/01/2012</Date> 
    <Description>Event 1</Description> 
</Event> 
<Event> 
    <Date>01/01/1900</Date> 
    <Description>Event 2</Description> 
</Event> 
<Event> 
    <Date>01/01/1900</Date> 
    <Description>Event 3</Description> 
</Event> 
<Event> 
    <Date>20/02/2012</Date> 
    <Description>Event 4</Description> 
</Event> 
<Event> 
    <Date>01/01/1900</Date> 
    <Description>Event 5</Description> 
</Event> 
<Event> 
    <Date>01/01/1900</Date> 
    <Description>Event 6</Description> 
</Event> 
</Events> 

Ergebnisse in:

17/01/2012;Event 1 
17/01/2012;Event 2 
17/01/2012;Event 3 
20/02/2012;Event 4 
20/02/2012;Event 5 
20/02/2012;Event 6 

2/I habe eine Liste von Ereignissen mit einem Datum in einem XML. Ich möchte jede Veranstaltung mit ihrem Datum in einem CSV-Formular drucken. Wenn das Datum 01/01/1900 ist, suchen Sie dann den ersten nächsten Geschwister unterschiedlich von 01/01/1900

Zum Beispiel:

<Events> 
<Event> 
    <Date>17/01/2012</Date> 
    <Description>Event 1</Description> 
</Event> 
<Event> 
    <Date>01/01/1900</Date> 
    <Description>Event 2</Description> 
</Event> 
<Event> 
    <Date>01/01/1900</Date> 
    <Description>Event 3</Description> 
</Event> 
<Event> 
    <Date>20/02/2012</Date> 
    <Description>Event 4</Description> 
</Event> 
<Event> 
    <Date>01/01/1900</Date> 
    <Description>Event 5</Description> 
</Event> 
<Event> 
    <Date>01/01/1900</Date> 
    <Description>Event 6</Description> 
</Event> 
<Event> 
    <Date>30/03/2012</Date> 
    <Description>Event 7</Description> 
</Event> 
</Events> 

Ergebnisse in:

17/01/2012;Event 1 
20/02/2012;Event 2 
20/02/2012;Event 3 
20/02/2012;Event 4 
30/03/2012;Event 5 
30/03/2012;Event 6 
30/03/2012;Event 7 

I don‘ t den Weg finden, eine Suche nach dem nächsten oder vorherigen Element durchzuführen, die einem Wert entspricht. Danke für Ihre Hilfe.

+0

Wird Ihre Frage nicht beantwortet? –

Antwort

0

Für den ersten Fall versuchen:

<xsl:template match="/Events"> 
    <xsl:for-each select="Event"> 
     <xsl:choose> 
      <xsl:when test="Date='01/01/1900'"> 
       <xsl:value-of select="preceding-sibling::Event[Date!='01/01/1900'][1]/Date" /> 
      </xsl:when> 
      <xsl:otherwise> 
       <xsl:value-of select="Date" /> 
      </xsl:otherwise> 
     </xsl:choose> 
     <xsl:text>;</xsl:text> 
     <xsl:value-of select="Description" /> 
     <xsl:text>&#10;</xsl:text> 
    </xsl:for-each> 
</xsl:template> 

Beachten Sie, dass preceding-sibling ist ein reverse axis: in der Nähe preceding-sibling ist die erste, nicht der letzte.

Verwandte Themen