2012-03-14 1 views
2

안녕하세요! 나는 Altova XMLSpy 시험판을 다운로드하여 FOP 0.95를 설치하고 XSLT (버전 1.0) 변환을 시도했다. 내 템플릿은 유효하지만 변환시는 "날짜 - 시간()"기능이 포함 된 행에 실패ALTOVA XmlSpy에서 XSLT date-time() 함수를 알 수 없음

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:dt="http://exslt.org/dates-and-times" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="dt exsl"> 
<xsl:output method="html" encoding="utf-8" indent="yes"/> 

<xsl:template match="/"> 
    <html> 
     <body> 
      <xsl:value-of select="dt:date-time()"/> 
     </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 

오류 메시지가이 :

Error in XPath expression 
Unknown function - Name and number of arguments do not match any function signature in 
the static context - 'http://exslt.org/dates-and-times:date-time' 

방법이 기능을 사용할 수 있도록하세요? 나는이 기능이 존재한다고 확신한다. 이 템플릿은 예를 들어 온라인 XSLT 테스터에서 작동합니다. http://markbucayan.appspot.com/xslt/index.html

감사합니다. Vojtech

업데이트 : SAXON 9 (HE와 EE 모두)를 설치했으며 ALTOVA를 사용하여 구성했지만 동일한 오류가 발생했습니다.

+0

당신이 말하는 "같은 오류가"당신은 동일한 표현을 의미합니까? 이 메시지는 Altova 오류 메시지이므로이 메시지가 표시되면 Saxon을 실행하지 않는 것입니다. system-property ('xsl : vendor')를 사용하여 실행중인 XSLT 프로세서를 알려줍니다. –

+0

마이클 감사합니다. 벤더와 버전을 쿼리 할 때 벤더 Saxonica 버전 2.0이 있습니다. "같은 오류"로 내 질문에 작성된 것과 같은 오류 메시지를 의미합니다. – Vojtech

답변

4

당신이 Altova을 사용하거나 오히려 XSLT1보다 XSLT2을 사용할 수 있습니다 색슨 그래서 EXSLT 확장을로드 할 필요가없는 경우는, xpath2는

select="current-dateTime()" 

http://www.w3.org/TR/xpath-functions/#func-current-dateTime

+0

불행히도 저는 Altova를 사용하여 XSLT1 만 지원하는 웹 응용 프로그램에서 사용할 템플릿을 개발했습니다. 그래서 나는 XSLT2를 사용할 수 없다. – Vojtech

+0

그런 경우에는 웹 애플리케이션이 exslt 확장 (xslt의 표준 부분이 아닌)을 지원하는지 또는이 경우 간단하게 현재 날짜를 스타일 시트 매개 변수로 선언하고 스타일 시트에 다음과 같이 전달해야하는지 확인해야합니다. 외부 호스팅 언어로 계산 된 문자열 –

+0

데이비드 감사합니다. 예, 웹 응용 프로그램은 EXSLT를 지원합니다. 나는 응용 프로그램의 소유자가 아니에요, 그냥 템플릿을 개발해야합니다. 웹 응용 프로그램과 함께 제공되는 도구를 사용하기가 어렵 기 때문에 내 컴퓨터에서 로컬로 개발하고 싶습니다. 불행히도 EXSLT가 내 컴퓨터에서 작동하지 않는 것 같아요. 왜 그런지 모르겠습니다. 내가 벤더와 버전에 관한 정보를 출력 할 때 벤더 Saxonica 버전 2.0이 나온다. – Vojtech

0
`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" extension-element-prefixes="msxsl" xmlns:local="urn:local> 
<msxsl:script language="CSharp" implements-prefix="local"> 


public string dateTimeNow() 
    {  
     return DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ"); 
    } 

</msxsl:script> </xsl:stylesheet>` 

와 내장이 기능을 가지고있다 그런 다음 사용하십시오 <xsl:param name="dnes" select="local:dateTimeNow()"/>

0

XSL 2.0을 지원하는 Altova xml spy 9 버전을 사용하십시오.

감사 아 디트

+1

이미 답변 한 내용을 읽어 보시고 의견을 게시하기 전에 그것을 읽으십시오 ... 질문을 게시 한 사람이 XSL 2.0을 사용할 수 없다는 것을 알게 될 것입니다 – NREZ

+0

질문에 버전의 정보가 포함되어있어서 그 이유를 제안했습니다. – Aditya

관련 문제