2015-01-24 5 views
0

이 난 단지 (matrikelnummer) 특별한 매개 변수를 필요에 매개 변수를 사용하는 방법 여기 는 대한-각 루프 XSL 내 출력

내 XML 코드입니다 : 내 매개 변수의 모습입니다

<?xml version="1.0" encoding="UTF-8"?> 
<unidatenbank> 
    <studenten> 
    <student> 
     <daten> 
      <matrikelnummer>2354444</matrikelnummer> 
      <vorname>Horst</vorname> 
      <nachname>Wallenstein</nachname> 
      <geburtsdatum>09.09.1999</geburtsdatum> 
      <studiengang>Politikwissenschaft</studiengang> 
     </daten> 
     <leistungen> 
      <creditpoints>178</creditpoints> 
      <noten> 
       <note>1.7</note> 
       <note>2.7</note> 
       <note>3.2</note> 
       <note>1.0</note> 
      </noten> 
     </leistungen> 
    </student> 
    <student> 
     <daten> 
      <matrikelnummer>2367897</matrikelnummer> 
      <vorname>Isabella</vorname> 
      <nachname>Gans</nachname> 
      <geburtsdatum>08.08.1988</geburtsdatum> 
      <studiengang>Politikwissenschaft</studiengang> 
     </daten> 
     <leistungen> 
      <creditpoints>190</creditpoints> 
      <noten> 
       <note>1.0</note> 
       <note>1.7</note> 
       <note>1.7</note> 
       <note>1.0</note> 
      </noten> 
     </leistungen> 
    </student> 
    </studenten> 
    <veranstaltungen> 
     <veranstaltung> 
      <veranstaltungsnummer>754125</veranstaltungsnummer> 
      <dozent>Prof. Dr. Schnatterberg</dozent> 
      <modul>EM 1</modul> 
     </veranstaltung> 
     <veranstaltung> 
      <veranstaltungsnummer>452781</veranstaltungsnummer> 
      <dozent>Dr. Hummels</dozent> 
      <modul>EM 2</modul> 
     </veranstaltung> 
    </veranstaltungen> 
</unidatenbank> 

:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    exclude-result-prefixes="xs" 
    version="2.0"> 
    <xsl:decimal-format decimal-separator="," 
     grouping-separator="."/> 
      <xsl:output method="text"/> 
    <xsl:template match="/unidatenbank"> 
     <xsl:for-each select=".//studenten/student"> 
      <xsl:text>Vor- und Nachname: </xsl:text> 
      <xsl:value-of select="./daten/vorname" /> 
       <xsl:text> </xsl:text> 
       <xsl:value-of select="./daten/nachname" /> 
      <xsl:text>&#xA;</xsl:text> 
      <xsl:text>Matrikelnr.: </xsl:text> 
      <xsl:value-of select="./daten/matrikelnummer" /> 
      <xsl:text>&#xA;</xsl:text> 
      <xsl:text>Studiengang: </xsl:text> 
      <xsl:value-of select="./daten/studiengang" /> 
      <xsl:text>&#xA;</xsl:text> 
      <xsl:text>Geburtsdatum: </xsl:text> 
      <xsl:value-of select="./daten/geburtsdatum" /> 
      <xsl:text>&#xA;&#xA;</xsl:text> 
      <xsl:text>Prüfungsnoten: </xsl:text> 
      <xsl:value-of select="./leistungen/noten/note" /> 
      <xsl:text>&#xA;&#xA;</xsl:text> 
      <xsl:text>Leistungspunkte: </xsl:text> 
      <xsl:value-of select="./leistungen/creditpoints" /> 
      <xsl:text>&#xA;&#xA;</xsl:text> 
      <xsl:text>Gesamtdurchschnitt: </xsl:text> 
      <xsl:variable name="leistungen" select="avg(./leistungen/noten/note)" /> 
      <xsl:value-of select="format-number($leistungen, '#.##0,0')"/> 
      <xsl:text>&#xA;&#xA;</xsl:text> 
     </xsl:for-each> 
     <xsl:for-each select=".//veranstaltungen/veranstaltung"> 
      <xsl:text>Veranstaltungsnummer: </xsl:text> 
      <xsl:value-of select="./veranstaltungsnummer" /> 
      <xsl:text>&#xA;</xsl:text> 
      <xsl:text>Dozent: </xsl:text> 
      <xsl:value-of select="./dozent" /> 
      <xsl:text>&#xA;</xsl:text> 
      <xsl:text>Modul: </xsl:text> 
      <xsl:value-of select="./modul" /> 
      <xsl:text>&#xA;</xsl:text> 
      <xsl:text>&#xA;</xsl:text> 
     </xsl:for-each> 
     </xsl:template>  
</xsl:stylesheet> 
0,123,516 :

<xsl:param name="matrikelnummer" 
     select="2354444" 
     as="xs:integer" 
     required="no"/> 

그리고 여기 내 XSL 코드입니다 나는 foreach 루프 내 매개 변수를 배치하는 방법과 위치에 상관하지 않습니다

Vor- und Nachname: Horst Wallenstein 
Matrikelnr.: 2354444 
Studiengang: Politikwissenschaft 
Geburtsdatum: 09.09.1999 

Prüfungsnoten: 1.7 2.7 3.2 1.0 

Leistungspunkte: 178 

Gesamtdurchschnitt: 2,2 

:

내 출력은 다음과 같이한다. 누군가 나를 도울 수 있기를 바랍니다.

+0

정확히 어디 매개 변수가 있습니까? 그리고 XSLT 2.0을 사용하고있을 때 XSLT 1.0으로 태그 된 이유는 무엇입니까? –

+0

나는 xsl 데이터에서 (매개 변수로) matrikelnumber를 설정하고 matrikelnumber를 가진 학생 만 얻고 싶다. – Dave

답변

1

당신은 반드시 여기 xsl:for-each를 사용할 필요가 없습니다,하지만 당신이 원한다면, 당신은 할 수 :

XSLT 여기에는 "루프"가 없다는 것을 2.0

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
exclude-result-prefixes="xs"> 
<xsl:output method="text" encoding="utf-8"/> 

<xsl:decimal-format decimal-separator="," grouping-separator="."/> 

<xsl:param name="matrikelnummer" select="2354444"/> 

<xsl:template match="/unidatenbank"> 
    <xsl:for-each select="studenten/student[daten/matrikelnummer=$matrikelnummer]"> 
     <xsl:text>Vor- und Nachname: </xsl:text> 
     <xsl:value-of select="daten/vorname" /> 
     <xsl:text> </xsl:text> 
     <xsl:value-of select="daten/nachname" /> 
     <xsl:text>&#xA;</xsl:text> 
     <xsl:text>Matrikelnr.: </xsl:text> 
     <xsl:value-of select="daten/matrikelnummer" /> 
     <xsl:text>&#xA;</xsl:text> 
     <xsl:text>Studiengang: </xsl:text> 
     <xsl:value-of select="daten/studiengang" /> 
     <xsl:text>&#xA;</xsl:text> 
     <xsl:text>Geburtsdatum: </xsl:text> 
     <xsl:value-of select="daten/geburtsdatum" /> 
     <xsl:text>&#xA;&#xA;</xsl:text> 
     <xsl:text>Prüfungsnoten: </xsl:text> 
     <xsl:value-of select="leistungen/noten/note" /> 
     <xsl:text>&#xA;&#xA;</xsl:text> 
     <xsl:text>Leistungspunkte: </xsl:text> 
     <xsl:value-of select="leistungen/creditpoints" /> 
     <xsl:text>&#xA;&#xA;</xsl:text> 
     <xsl:text>Gesamtdurchschnitt: </xsl:text> 
     <xsl:variable name="leistungen" select="avg(leistungen/noten/note)" /> 
     <xsl:value-of select="format-number($leistungen, '#.##0,0')"/> 
     <xsl:text>&#xA;&#xA;</xsl:text> 
    </xsl:for-each> 
    <xsl:for-each select="veranstaltungen/veranstaltung"> 
     <xsl:text>Veranstaltungsnummer: </xsl:text> 
     <xsl:value-of select="veranstaltungsnummer" /> 
     <xsl:text>&#xA;</xsl:text> 
     <xsl:text>Dozent: </xsl:text> 
     <xsl:value-of select="dozent" /> 
     <xsl:text>&#xA;</xsl:text> 
     <xsl:text>Modul: </xsl:text> 
     <xsl:value-of select="modul" /> 
     <xsl:text>&#xA;</xsl:text> 
     <xsl:text>&#xA;</xsl:text> 
    </xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 

참고; xsl:for-each 명령은 컨텍스트를 설정하기 위해서만 사용됩니다.

+0

고맙습니다. 나는 이것이 옳다고 생각한다. Vor- 싶게 Nachname : 호르스트 발렌슈타인 Matrikelnr : 2,354,444 Studiengang : Politikwissenschaft Geburtsdatum : 1999년 9월 9일 Prüfungsnoten : 1.7 2.7 3.2 1.0 Leistungspunkte : 178 Gesamtdurchschnitt :하지만이 출력을 얻을 2,2- Vor- 싶게 Nachname : 이자벨 간스 Matrikelnr : 2,367,897 Studiengang : Politikwissenschaft Geburtsdatum : 1988년 8월 8일 Prüfungsnoten : 1.0 1.7 1.7 1.0 Leistungspunkte : 190 Gesamtdurchschnitt : 1,4 Veranstaltungsnummer : 754,125 Dozent : 교수 Schnatterberg MODUL : EM 1 Veranstaltungsnummer : 452,781 Dozent 박사 Hummels MODUL : EM 2 – Dave

+0

는하지만 난 단지 필요 학생과 Matrikelnr .: 2354444. – Dave

+0

아니, 그건 수신 출력되지 않습니다 - 여기를 참조하십시오 : http://xsltransform.net/gWmuiJh –