我的UI将用户选择的日期(以毫秒为单位)提供给后端休息层。
例如,假设用户从UI中选择“ 07/11/2018”,则它将以毫秒“ 1541509200000”的形式传递到REST层。 REST层将此值映射到我的DTO中的“ XMLGregorianCalendarObject”。
import java.io.Serializable;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.bind.annotation.XmlSchemaType;
public class PersonDetails implements Serializable
{
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar dateOfBirth;
public XMLGregorianCalendar getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(XMLGregorianCalendar value) {
this.dateOfBirth = value;
}
}
此DTO转换为XML并存储。 XML有效负载如下所示:
<personDetails>
<dateOfBirth>2018-11-06Z</dateOfBirth>
</personDetails>
我有下面的XSLT代码,当前仅显示上面的dateOfBirth元素:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<div>
<div> Date of birth: </div>
<div> <xsl:value-of select="//personDetails/dateOfBirth" /> </div>
</div>
</xsl:template>
它会生成输出
Date of birth: 2018-11-06Z
我应该怎么做才能显示dateOfBirth作为原始用户在XSLT转换中选择的2018年11月11日。
答案 0 :(得分:0)
XSLT 1.0没有日期概念。您必须使用字符串函数来操纵输入:
<xsl:template match="personDetails">
<div>
<div> Date of birth: </div>
<div>
<!-- day-->
<xsl:value-of select="substring(dateOfBirth, 9, 2)" />
<xsl:text>/</xsl:text>
<!-- month-->
<xsl:value-of select="substring(dateOfBirth, 6, 2)" />
<xsl:text>/</xsl:text>
<!-- year-->
<xsl:value-of select="substring(dateOfBirth, 1, 4)" />
</div>
</div>
</xsl:template>