how get a value from xml tag to hand over to a variable and to compare the value in a for-each loop

二次信任 提交于 2019-12-25 18:44:34

问题


i would like to get a value from certain xml tag and hand over to a variable for compare the same value in for-each loop.

I make a screenshot for the xsl code understanding:

And i make a screenshot for the xml code understanding:

Here is my xsltransform code example.

Here my XML Code:

<?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 veranstaltungsnummer="754125">1.7</note>
                <note veranstaltungsnummer="452781">2.7</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 veranstaltungsnummer="754125">1.0</note>
                <note veranstaltungsnummer="452781">1.7</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>

Here is my XSL code:

    <?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:output method="text"/>
    <xsl:template match="/unidatenbank">
      <xsl:for-each select="//veranstaltungen/veranstaltung">
          <xsl:sort lang="de" select="veranstaltungsnummer"/> 
          <xsl:text>Veranstaltungsnummer: </xsl:text>
          <xsl:value-of select="./veranstaltungsnummer"/>
          <xsl:variable name="veranstaltungsnummer" select="./veranstaltungsnummer"/>
          <xsl:text>&#xA;</xsl:text>
          <ul>
              <xsl:for-each select="//studenten/student">
                  <xsl:sort lang="de" case-order="upper-first" select="./daten/matrikelnummer"/>
                  <li>
                      <xsl:text>Matrikelnummer: </xsl:text>
                      <xsl:value-of select="./daten/matrikelnummer"/>
                      <xsl:text>&#xA;</xsl:text>
                      <xsl:text>Note: </xsl:text>
                      <xsl:value-of select="./leistungen/[noten/note=$veranstaltungsnummer]"/>
                      <xsl:text>&#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')"/>-->
                  </li>
              </xsl:for-each>
          </ul>
          <xsl:text>&#xA;</xsl:text>
      </xsl:for-each>
       </xsl:template> 
</xsl:stylesheet>

hope someone understanding me :)


回答1:


I would suggest to define a key <xsl:key name="vnr" match="studenten/student" use="leistungen/noten/note/@veranstaltungsnummer""/> then use <xsl:for-each select="key('vnr', veranstaltungsnummer)">... </xsl:for-each> to process the students.

`



来源:https://stackoverflow.com/questions/29199680/how-get-a-value-from-xml-tag-to-hand-over-to-a-variable-and-to-compare-the-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!