对于我的输出我只需要一个特殊参数(matrikelnummer)
这是我的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>
这就是我的参数:
<xsl:param name="matrikelnummer"
select="2354444"
as="xs:integer"
required="no"/>
这是我的XSL代码:
<?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>
</xsl:text>
<xsl:text>Matrikelnr.: </xsl:text>
<xsl:value-of select="./daten/matrikelnummer" />
<xsl:text>
</xsl:text>
<xsl:text>Studiengang: </xsl:text>
<xsl:value-of select="./daten/studiengang" />
<xsl:text>
</xsl:text>
<xsl:text>Geburtsdatum: </xsl:text>
<xsl:value-of select="./daten/geburtsdatum" />
<xsl:text>

</xsl:text>
<xsl:text>Prüfungsnoten: </xsl:text>
<xsl:value-of select="./leistungen/noten/note" />
<xsl:text>

</xsl:text>
<xsl:text>Leistungspunkte: </xsl:text>
<xsl:value-of select="./leistungen/creditpoints" />
<xsl:text>

</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>

</xsl:text>
</xsl:for-each>
<xsl:for-each select=".//veranstaltungen/veranstaltung">
<xsl:text>Veranstaltungsnummer: </xsl:text>
<xsl:value-of select="./veranstaltungsnummer" />
<xsl:text>
</xsl:text>
<xsl:text>Dozent: </xsl:text>
<xsl:value-of select="./dozent" />
<xsl:text>
</xsl:text>
<xsl:text>Modul: </xsl:text>
<xsl:value-of select="./modul" />
<xsl:text>
</xsl:text>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我的输出必须如下所示:
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
我不知道如何以及在哪里将参数放在foreach循环中。希望可以有人帮帮我。
答案 0 :(得分: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>
</xsl:text>
<xsl:text>Matrikelnr.: </xsl:text>
<xsl:value-of select="daten/matrikelnummer" />
<xsl:text>
</xsl:text>
<xsl:text>Studiengang: </xsl:text>
<xsl:value-of select="daten/studiengang" />
<xsl:text>
</xsl:text>
<xsl:text>Geburtsdatum: </xsl:text>
<xsl:value-of select="daten/geburtsdatum" />
<xsl:text>

</xsl:text>
<xsl:text>Prüfungsnoten: </xsl:text>
<xsl:value-of select="leistungen/noten/note" />
<xsl:text>

</xsl:text>
<xsl:text>Leistungspunkte: </xsl:text>
<xsl:value-of select="leistungen/creditpoints" />
<xsl:text>

</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>

</xsl:text>
</xsl:for-each>
<xsl:for-each select="veranstaltungen/veranstaltung">
<xsl:text>Veranstaltungsnummer: </xsl:text>
<xsl:value-of select="veranstaltungsnummer" />
<xsl:text>
</xsl:text>
<xsl:text>Dozent: </xsl:text>
<xsl:value-of select="dozent" />
<xsl:text>
</xsl:text>
<xsl:text>Modul: </xsl:text>
<xsl:value-of select="modul" />
<xsl:text>
</xsl:text>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
请注意,这里没有“循环”; xsl:for-each
指令仅用于建立上下文。