XForms/日期格式化
外观
< XForms
XML 以 YYYY-MM-DD 格式存储日期,例如 2007-08-30。不幸的是,这通常不是用户希望查看日期的方式。
此示例 XForms 程序使用 CSS 隐藏输入日期,并使用 XPath 表达式获取日期以美国常用的 MM/DD/YYYY 格式显示。
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:d="http://www.mydata.com/xmlns/data">
<head>
<title>Demo of date formatting using XPath concat and substring.</title>
<style type="text/css"><![CDATA[
@namespace xf url('http://www.w3.org/2002/xforms');
.hidden .xf-value {
display:none;
}
]]>
</style>
<xf:model>
<xf:instance xmlns="">
<MyModel>
<MyDate>2006-09-12</MyDate>
</MyModel>
</xf:instance>
<xf:bind nodeset="/MyModel/MyDate" type="xs:date" />
</xf:model>
</head>
<body>
<xf:input class="hidden" ref="/MyModel/MyDate" incremental="true">
<xf:label>Select Date: </xf:label>
</xf:input>
<!-- get the month (two characters wide starting at character number 6), then the day then the year -->
<xf:output
value="concat(substring(/MyModel/MyDate,6,2),
'/',
substring(/MyModel/MyDate,9,2),
'/',
substring(/MyModel/MyDate,1,4))"
/>
</body>
</html>
CSS 样式表隐藏了输入字段。输入具有 class="hidden" 属性。
输出使用以下 XPath 表达式格式化
concat( substring(/MyModel/MyDate,6,2), '/', substring(/MyModel/MyDate,9,2), '/', substring(/MyModel/MyDate,1,4) )
Concat 是 XPath 连接运算符。输入格式为:"YYYY-MM-DD"。我们只需要找到并获取正确的字符。
- 第一个子字符串到第 6 个字符,并提取两个月份 (MM) 字符。
- 第二个子字符串从第 9 个字符开始,获取两个日期 (DD) 字符。
- 最后一个子字符串返回第 1-4 个字符,它们是四个年份字符 (YYYY)。
您不必显示年份中的所有四个字母。通过将最后一个子字符串从
substring(/MyModel/MyDate,1,4)
更改为
substring(/MyModel/MyDate,3,4)
您将只获得年份的后两位数字。