Cześć,
Mam oto taki kod w C++ (jest to kalendarz, wypisany rekurencyjnie, zmienna start_day - odkąd zaczyna się miesiąc, zmienna days - liczba dni w miesiącu):
#include <iostream>
void Calendar(int start_day, int days)
{
if (start_day >= 1 and days > 0)
{
Calendar(start_day, days-1);
std::cout << " " << days;
if ((days+(start_day-1))%7==0)
{
std::cout << "\n";
}
}
else if (start_day-1 > 0 and days == 0)
{
Calendar(start_day-1, 0);
std::cout << " " << "-";
}
}
main()
{
Calendar(2, 28);
//Calendar(3, 31);
}
Teraz muszę to zapisać za pomocą XML + XSLT
Mój plik XML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="application/xml" href="arkusz.xsl"?>
<kal>
<miesiac nazwa="maj" ile="30" pierwszy="2"/>
</kal>
Tutaj plik arkusz.xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="pierwszy" select="kal/miesiac/@pierwszy"/>
<xsl:variable name="ile" select="kal/miesiac/@ile"/>
<xsl:template match="/">
<html>
<body>
<xsl:call-template name="calendar"/>
</body>
</html>
</xsl:template>
<xsl:template name="calendar">
<xsl:param name="index" select="$pierwszy"/>
<xsl:if test="$index < $ile+1">
<span><xsl:value-of select="$index"/></span>
<xsl:text> </xsl:text>
<xsl:if test="$index mod 7=0">
<html><body><br/></body></html>
</xsl:if>
<xsl:call-template name="calendar">
<xsl:with-param name="index" select="$index+1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Niestety efekt nie do końca jest taki jakbym chciał. Nie ma "-" uzupełniających brak dnia w danym miesiącu... Czy ktoś mógłby mi pomóc z tym problemem?