XSLT가 현재 날짜를 삽입 할 수 있습니까?
내 사무실에서 사용하는 프로그램은 XSLT 파일과 함께 내보내는 XML 파일을 XHTML로 변환하여 보고서를 내 보냅니다. XSLT를 다시 작성하여 서식을 변경하고 소스 XML 파일에서 더 많은 정보를 추가합니다.
최종 보고서에 파일이 생성 된 날짜를 포함하고 싶습니다. 그러나 현재 날짜 / 시간은 원본 XML 파일에 포함되어 있지 않으며 XML 파일 생성 방법을 제어 할 수 없습니다. 현재 날짜를 반환하는 XSLT에 빌드되는 날짜 함수가없는 것 같습니다.
XSLT 변환 중에 현재 날짜를 포함 할 수있는 방법을 아는 사람이 있습니까?
XSLT 2
날짜 함수는 다음과 같이 기본적으로 사용할 수 있습니다.
<xsl:value-of select="current-dateTime()"/>
이 또한 current-date()
및 current-time()
.
XSLT 1
EXSLT 날짜 및 시간 확장 패키지를 사용하십시오.
예를 들면 :
<xsl:stylesheet version="1.0"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date"
...>
<xsl:import href="date.xsl" />
<xsl:template match="//root">
<xsl:value-of select="date:date-time()"/>
</xsl:template>
</xsl:stylesheet>
MSXML 파서의 경우 다음을 시도하십시오.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:my="urn:sample" extension-element-prefixes="msxml">
<msxsl:script language="JScript" implements-prefix="my">
function today()
{
return new Date();
}
</msxsl:script>
<xsl:template match="/">
Today = <xsl:value-of select="my:today()"/>
</xsl:template>
</xsl:stylesheet>
msxsl : script를 사용한 XSLT 스타일 시트 스크립팅 및 JScript, C # 및 Visual Basic .NET으로 XSLT 확장 도 읽어보십시오 .
변환 실행을 제어 할 수 있습니까? 그렇다면 현재 날짜를 XSL에 전달하고 XSL 내부에서 $ current-date를 사용할 수 있습니다. 다음은 들어오는 매개 변수를 선언하는 방법이지만 변환을 실행하는 방법을 알기 때문에 값을 전달하는 방법을 말할 수 없습니다.
<xsl:param name="current-date" />
예를 들어, bash 스크립트에서 다음을 사용하십시오.
xsltproc --stringparam current-date `date +%Y-%m-%d` -o output.html path-to.xsl path-to.xml
그런 다음 xsl에서 다음을 사용할 수 있습니다.
<xsl:value-of select="$current-date"/>
...
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:local="urn:local" extension-element-prefixes="msxsl">
<msxsl:script language="CSharp" implements-prefix="local">
public string dateTimeNow()
{
return DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ");
}
</msxsl:script>
...
<xsl:value-of select="local:dateTimeNow()"/>
Late answer, but my solution works in Eclipse XSLT. Eclipse uses XSLT 1 at time of this writing. You can install an XSLT 2 engine like Saxon. Or you can use the XSLT 1 solution below to insert current date and time.
<xsl:value-of select="java:util.Date.new()"/>
This will call Java's Data class to output the date. It will not work unless you also put the following "java:" definition in your <xsl:stylesheet>
tag.
<xsl:stylesheet [...snip...]
xmlns:java="java"
[...snip...]>
I hope that helps someone. This simple answer was difficult to find for me.
format-date(current-date(), '[M01]/[D01]/[Y0001]') = 09/19/2013
format-time(current-time(), '[H01]:[m01] [z]') = 09:26 GMT+10
format-dateTime(current-dateTime(), '[h1]:[m01] [P] on [MNn] [D].') = 9:26 a.m. on September 19.
reference: Formatting Dates and Times using XSLT 2.0 and XPath
참고URL : https://stackoverflow.com/questions/1575111/can-an-xslt-insert-the-current-date
'Programing' 카테고리의 다른 글
C #에서 메서드 내에서 전달 된 제네릭 형식을 인스턴스화하는 방법은 무엇입니까? (0) | 2020.09.09 |
---|---|
JVM 용 C # 구현 (0) | 2020.09.09 |
장기 실행 작업을위한 Android AsyncTask (0) | 2020.09.09 |
PHP의 함수에서 반환 된 배열에 액세스 (0) | 2020.09.09 |
GitHub에서 한 파일에 대한 변경 내역을 패치 형식으로 표시 할 수 있습니까? (0) | 2020.09.09 |