2010-02-23 4 views
1

지수 (지수) 표기법으로 숫자가 포함 된 XML을 변환해야합니다 (예 : ). XSLT 파서 숫자 소수점 형식으로 기대 때문에XSLT : 지수 표기법을 사용하는 숫자 값 처리

 
    <Value>12.34e12</Value> 
    <Value>-12.34e-12</Value> 

오히려 초조, 우리는 합계() 함수 등을 사용할 수 없습니다.

우리가 지금까지 문자열 값을 변환하는 한이 문제에 대한 유일한 해결책 [우리는 변화하지만이 문제는 모든 XSLT 구현에 공통적으로 생각해야 할 닷넷 XslCompiledTransform 클래스를 사용] javascript 함수 (아래 참조)를 사용하여 숫자로 변환 한 다음이 함수를 호출하는 자체 sum 템플릿을 작성합니다.

나는 더 나은 방법이 있어야한다고 생각합니다 - 거기 있습니까?

 
/* 
This function attempts to coerce the input into a number. 
*/ 
function toNumber(x) { 
if(!x) { 
    return Number.NaN; 
} 
if(typeof x === 'number') { 
    return x; 
} 
return parseFloat(x); 
}; 

답변

-1

여기에서 잘 작동합니다. 출력 0

EDIT : 이제 Saxon 6 (xslt 1.0 용 프로세서)은 NaN을 반환합니다. 그러나 xslt 2.0을 사용하면 다른 것을 원할 수 없습니다. :-)

XML :

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <Value>12.34e12</Value> 
    <Value>-12.34e12</Value> 
</root> 

XSLT : 응답에 대한

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:template match="root"> 
    <xsl:value-of select="sum(Value)"/> 
</xsl:template> 
</xsl:stylesheet> 
+0

감사합니다. 불행히도 나는 .NET 변형 클래스가 붙어있다. (나는 알고있는 한) XSLT 1.0이다. :-( –

+0

자바 버전 만 사용했지만 Saxon은 .net에서 실행되어야합니다. – Krab

+0

잘란 2.7은 잘 작동합니다. – Erlock