0

XML:

<Calendars xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Urnik.xsd">
    <Calendar>
        <Name>Marko</Name>
        <Days>
            <Day>
                <Date>2013-05-13</Date>
                <DayType>1</DayType>
                <DayWorking>1</DayWorking>
                <WorkingTimes>
                    <WorkingTime>
                        <FromTime>08:00</FromTime>
                        <ToTime>11:00</ToTime>
                        <Name>Izpit Matematika</Name>
                        <Owner>Marko</Owner>
                        <Category>
                            <School Professor="111" Room="1" Subject="882" />
                        </Category>
                    </WorkingTime>
                    <WorkingTime>
                        <FromTime>13:00</FromTime>
                        <ToTime>17:00</ToTime>
                        <Name>Vaje APZ</Name>
                        <Owner>Marko</Owner>
                        <Category>
                            <School Professor="222" Room="11" Subject="881"/>
                        </Category>
                    </WorkingTime>      
                    <WorkingTime>
                        <FromTime>20:00</FromTime>
                        <ToTime>22:00</ToTime>
                        <Name>Vaje aaaaaa</Name>
                        <Owner>Marko</Owner>
                        <Category>
                            <School Professor="222" Room="11" Subject="881"/>
                        </Category>
                    </WorkingTime>                      
                </WorkingTimes>
            </Day>
            <Day>
                <Date>2013-05-14</Date>
                <DayType>2</DayType>
                ...
            </Day>

XSLT:

<xsl:for-each select="Calendar/Days/Day">   
    <xsl:choose>
        <xsl:when test="DayType = 1">
            <xsl:variable name="vTransfers" select="/*/WorkingTime"/>
            <xsl:value-of select="$vTransfers[1]" />

I am looping Day nodes. And then I want to store all WorkingTime nodes from DayType = 1 to array. Not loop it but store it in array because I will print it later in the correct td tag

But is empty but I expect to get:

<WorkingTime>
                        <FromTime>08:00</FromTime>
                        <ToTime>11:00</ToTime>
                        <Name>Izpit Matematika</Name>
                        <Owner>Marko</Owner>
                        <Category>
                            <School Professor="111" Room="1" Subject="882" />
                        </Category>
                    </WorkingTime>

Can you give me some clue how?

1
  • you may want to look at using msxsl:node-set function. it seems like that would solve your issues. Commented Aug 21, 2013 at 12:51

2 Answers 2

2

I am not sure if I understand what you want, but to get a variable with wall all WorkingTime nodes from DayType = 1 you can declare a variable as this

<xsl:variable name="vTransfers" select="//Day[DayType=1]/WorkingTimes/WorkingTime"/>

Edited:

The above code can be used anywhere in you code and you get all the WorkingTime element in all your Day element.

However, to use it inside your for-each cycle and only get the WorkingTime of the current Day you can change it to

<xsl:variable name="vTransfers" select="self::Day[DayType=1]/WorkingTimes/WorkingTime"/>
Sign up to request clarification or add additional context in comments.

Comments

1

Change the variable in select to "child::*/WorkingTime" I recommend you use Altova XMLSpy and so you can use one of the many features it has such as debugging, to see the results.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.