2013-04-25 3 views
1

저는 오늘 처음으로 xsl을 다루었습니다. 내가 가진 XML 파일은 다음과 같습니다xsl의 요소 값 평균을 구하십시오.

<student_course> 
<students> 
    <student num=""> 
    <name gender=""></name> 
    <course cid="1"></course> 
    <course cid="2"></course> 
    <course cid="3"></course> 
    <course cid="4"></course> 
    <comments></comments> 
    </student> 
</students> 
<courses> 
    <course cid="1"></course> 
    <course cid="2"></course> 
    <course cid="3"></course> 
    <course cid="4"></course> 
</courses> 
</student_course> 

10 명 + 학생이있다, 나는 각 학생에 대한 각 과정에 대한 모든 성적을 인쇄 할 필요가있다. 내가 for-each를 사용했다. 제가해야 할 일은 칼럼의 맨 아래에있는 변수 (학생/코스)의 평균 점수를 보여줍니다. 변수가 갈 길이라고 생각했습니다. for-each에서 그것을 증가시키고 나누십시오. 뭔가,하지만 그 작동하지 않는 것, 내가 변수를 만들려고 할 때마다 나는 그것을 설정 한 후에 만 ​​호출 할 수있다. 나는 틀린 일을해야만한다. student_courses/students/student/course[@cid]에서 모든 값의 평균을 얻으려면 어떻게해야합니까?

현재 xsl에는 4 열 11 행 (제목은 1 행, 학생 성적은 10 행)이고 평균은 12 행입니다.

고맙습니다.

+0

예제 데이터에 평균을 내고 싶은 성적 값이 포함되어 있고 출력 결과를 원하는대로 표시하면 도움이됩니다. – JLRishe

+0

좋은 지적, 나는 내가 필요한 것을 알아 냈다. 그래서 나는 내 자신의 대답을 게시 할 것이다. – sharf

답변

3

나는 그것을 알아 냈다. 평균을 얻으려면 가장 쉬운 방법은 for each와 sum() 및 count() 함수를 사용하는 것입니다. 내가 필요한 것은 평균을 표시하고자하는 곳을 추가하는 것이 었습니다 :

<xsl:value-of select="sum(/student_course/students/student/course[@cid='1']) div count(/student_course/students/student/course[@cid='1'])"/> 

그리고 다른 코스의 cid 값을 변경하기 만하면됩니다.

+0

'xsl : for-each' 밖에서도 같은 코드를 사용할 수 있습니다. 이렇게하면 한 번만 표시됩니다. – Elias