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]" />

我正在循环Day节点。然后我想将所有WorkingTime节点存储DayType = 1到数组中。不循环它,而是将它存储在数组中,因为我稍后会在正确的 td 标记中打印它

但是是空的,但我希望得到:

<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>

你能给我一些线索吗?

4

2 回答 2

2

我不确定我是否理解您想要的,但是 要从 DayType = 1 中获取所有 WorkingTime 节点的变量,您可以将变量声明为

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

编辑:

上面的代码可以在您的代码中的任何地方使用,并且您可以在所有 Day 元素中获得所有 WorkingTime 元素。

但是,要在您的for-each循环中使用它并且只获取当前日期的工作时间,您可以将其更改为

<xsl:variable name="vTransfers" select="self::Day[DayType=1]/WorkingTimes/WorkingTime"/>
于 2013-08-21T13:28:18.993 回答
1

将 select 中的变量更改为“ child::*/WorkingTime ” 我建议您使用 Altova XMLSpy,这样您就可以使用它具有的众多功能之一(例如调试)来查看结果。

于 2013-08-21T13:04:13.640 回答