Rod*_*dez 1 xml xslt datetime extract xslt-1.0
我有一个充满这些节点的 xml 文件:
<FlightSegment DepartureDateTime="2014-05-02T14:24:00" ArrivalDateTime="2014-05-02T15:42:00"/>
<FlightSegment DepartureDateTime="2014-05-02T16:24:00" ArrivalDateTime="2014-05-02T17:42:00"/>
Run Code Online (Sandbox Code Playgroud)
我只需要在 html 输出中提取 @DepartureDateTime 和 @ArrivalDateTime 的时间。到目前为止,我制作了一个 xsl:for-each 和一个返回完整字符串的 xsl:value-of,但我尝试使用 fn:hours-from-dateTime 并且它不起作用。要么我做错了什么,要么只在 2.0 中有效。我怎样才能从这个字符串中获得时间?
这是我的代码:
<table>
<xsl:for-each select="FlightSegment">
<tr>
<td>
Departure:
</td>
<td>
<fn:hours-from-dateTime(xsl:value-of select="@DepartureDateTime")/>:<fn:minutes-from-dateTime(xsl:value-of select="@DepartureDateTime")/>:<fn:seconds-from-dateTime(xsl:value-of select="@DepartureDateTime")/>
</td>
</tr>
<tr>
<td>
Arrival:
</td>
<td>
<fn:hours-from-dateTime(xsl:value-of select="@ArrivalDateTime")/>:<fn:minutes-from-dateTime(xsl:value-of select="@ArrivalDateTime")/>:<fn:seconds-from-dateTime(xsl:value-of select="@ArrivalDateTime")/>
</td>
</tr>
</xsl:for-each>
</table>
Run Code Online (Sandbox Code Playgroud)
提前致谢。
小智 5
用于从以下内容中提取日期和时间:
<Root>
<myDate>2014-05-01T07:24:00</myDate>
</Root>
Run Code Online (Sandbox Code Playgroud)
我使用以下函数来获取数据或转换为其他格式:
<p>
Extract just the date: <br />
<xsl:value-of select="substring(/Root/myDate, 1, 10)" />
</p>
<p>
Extract just the time: <br />
<xsl:value-of select="substring(/Root/myDate, 12, 5)" />
</p>
<p>Convert to Short date format dd-MM-yyyy: <br />
<xsl:value-of select="concat(substring(/Root/myDate, 9, 2), '-', substring(/Root/myDate, 6, 2), '-', substring(/Root/myDate, 1, 4))" />
</p>
Run Code Online (Sandbox Code Playgroud)
我需要在日期字符串中使用完整的月份名称,因此请使用以下样式表进行查找。尽管我从未设法让月份值的子字符串函数在查找 xpath 中的 [ ] 内工作,但它从未对我使用变量产生的结果的性能产生影响。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:lookup="http://any.com/lookup" exclude-result-prefixes="lookup">
<xsl:output method="html" indent="yes" encoding="UTF-8" />
<xsl:decimal-format name="NN" NaN="-" />
<lookup:Months>
<Month index="01" string="January" />
<Month index="02" string="February" />
<Month index="03" string="March" />
<Month index="04" string="April" />
<Month index="05" string="May" />
<Month index="06" string="June" />
<Month index="07" string="July" />
<Month index="08" string="August" />
<Month index="09" string="September" />
<Month index="10" string="October" />
<Month index="11" string="November" />
<Month index="12" string="December" />
</lookup:Months>
<xsl:template match="/">
<html>
<body>
<p>
Convert to Long date format dd-MMM-yyyy: <br />
<xsl:variable name="myMonth" select="substring(/Root/myDate, 6, 2)" />
<xsl:value-of select="concat(substring(/Root/myDate, 9, 2), ' ', document('')/*/lookup:Months/Month[@index=$myMonth]/@string, ' ', substring(/Root/myDate, 1, 4))" />
</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)