2013-03-26 5 views
1

XSLT를 사용하여 일부 테이블을 수정하려고합니다. Colspan 속성을 사용해야하지만 변환 코드는 namestnameend입니다.xslt의 문자열 및 수학 연산

예 :

<entry namest="col1" nameend="col3"> 

내가 <td colspan="3">이 점을 설정해야합니다. 나는 변수를 설정하고 그 다음에 col3/col1의 끝에서 숫자를 얻고 나서 수학적으로 숫자를 얻으려면 substring($var,4,1)을 사용했다. 네임드의 숫자를 네임드에서 빼고 네임드에서 숫자를 뺀 다음 하나를 더하면 작동하지 않는다.

+0

쉽게해야합니다, 당신은 사용하여 속성과 일치해야합니다 "@", 예를 들어, @ col1. 그러나 지금까지 소스 XML과 XSLT를 제공하십시오. 아무도 여기없이 도움을받을 수 있습니다. – Peter

답변

1

entry 컨텍스트 노드 인 경우, 다음과 같은 표현은 당신이 찾고있는 열 병합 값이어야한다 "COL"값을 더한의 차이를 반환

substring(@nameend, 4) - substring(@namest, 4) + 1 

substring(@attr, 4)@attr의 문자열을 반환 네 번째 문자에서 끝까지 시작합니다. 부분 문자열은 빼기 연산자에 의해 암시 적으로 숫자로 변환됩니다. libxslt를의 xmllint와 표현의

테스트 :

$ echo '<entry namest="col1" nameend="col3"/>' >so.xml 
$ xmllint --shell so.xml 
/> cd entry 
entry > xpath substring(@nameend, 4) - substring(@namest, 4) + 1 
Object is a number : 3