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>
你能给我一些线索吗?
答案 0 :(得分:2)
我不确定我是否理解你想要的东西,但是为了获得一个带有所有WorkTime节点的变量来自DayType = 1 的变量,你可以将变量声明为
<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"/>
答案 1 :(得分:1)
将select中的变量更改为“ child :: * / WorkingTime ”我建议您使用Altova XMLSpy,这样您就可以使用它具有的众多功能之一(如调试)来查看结果