내 사무실에서 사용하는 프로그램은 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()"/>
답변
늦은 답변이지만 내 솔루션은 Eclipse XSLT에서 작동합니다. Eclipse는이 글을 쓰는 시점에서 XSLT 1을 사용합니다. Saxon과 같은 XSLT 2 엔진을 설치할 수 있습니다. 또는 아래 XSLT 1 솔루션을 사용하여 현재 날짜와 시간을 삽입 할 수 있습니다.
<xsl:value-of select="java:util.Date.new()"/>
이것은 날짜를 출력하기 위해 Java의 Data 클래스를 호출합니다. <xsl:stylesheet>
태그 에 다음 “java :”정의를 추가하지 않으면 작동하지 않습니다 .
<xsl:stylesheet [...snip...]
xmlns:java="java"
[...snip...]>
누군가에게 도움이되기를 바랍니다. 이 간단한 대답은 저에게 어려웠습니다.
답변
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.
답변
