[xml] en [xsl] data uitlezen

Pagina: 1
Acties:
  • 114 views sinds 30-01-2008
  • Reageer

  • maxtz0r
  • Registratie: Februari 2007
  • Laatst online: 17-12-2022
Hey

Ik ben bezig met een klein opdrachtje. Ik heb een xml document gekregen van iemand met hierin data. Nou wil ik alleen de naam van die data met xsl laten zien. En dan wil ik dat je 1 van deze naam kan selecteren door middel van een radio button en dat je dan de overige informatie krijgt te zien.

Dus:
eerst lees ik het xml bestand uit met alleen de namen. Dit is geen probleem alleen nu heb ik geen idee hoe ik het zo kan krijgen dat je 1 van deze namen kan selecteren om zo meer informatie te krijgen.

Is het bijvoorbeeld mogelijk om id's te geven aan de data die in xml staan om zo bijvoorbeeld een link te maken met id=3 en dat je dan die info krijgt?

Misschien kan iemand me een beetje op weg helpen?

greetz

Dying is God's way of telling you, you've been FIRED.


  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Maak je zelf de html of laat je het aan de browser over? Als je het zelf doet wat gebruik je dan?

Skill is when luck becomes a habit.


  • maxtz0r
  • Registratie: Februari 2007
  • Laatst online: 17-12-2022
eek schreef op maandag 26 februari 2007 @ 13:00:
Maak je zelf de html of laat je het aan de browser over? Als je het zelf doet wat gebruik je dan?
Ik laat de html aan browser over omdat het systeem wat ik ga maken geintergreerd wordt in sharepoint.
Op dit moment gebruik ik alleen een input radio button als html maar dat is puur om te testen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/">

    <xsl:for-each select="ckv/course">
<script type="text/javascript">

function coursename()
{
    var coursenaam = "<xsl:value-of select="coursname"/>"
    document.write("coursename is: " +coursenaam);
}
</script>

<input type="radio" name="id" onClick="coursename();" />

      <xsl:value-of select="coursname"/><br />
    </xsl:for-each>

</xsl:template></xsl:stylesheet>


edit:
Heb even de xsl code neergezet om te laten zien wat ik op dit moment doe

[ Voor 44% gewijzigd door maxtz0r op 26-02-2007 13:09 ]

Dying is God's way of telling you, you've been FIRED.


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Kijk eens naar het ID-element :)
code:
1
<xsl:value-of select="@id"/>

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • maxtz0r
  • Registratie: Februari 2007
  • Laatst online: 17-12-2022
DeverauX schreef op maandag 26 februari 2007 @ 13:11:
Kijk eens naar het ID-element :)
code:
1
<xsl:value-of select="@id"/>
Ik heb toch nog even wat meer hulp nodig. Het id verhaal is me wel duidelijk alleen het lukt me niet om een dynamische pagina te maken waar dus de rest van de info komt.

iemand een idee?

edit:
aangepast

[ Voor 28% gewijzigd door maxtz0r op 26-02-2007 14:44 ]

Dying is God's way of telling you, you've been FIRED.


  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Bedoel je zoiets? Is uit me hoofd, maar misschien moet je je eens gaan verdiepen in javascript. Ik zou niet weten hoe je dit soort trucken met xsl zelf uithaalt.

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:for-each select="ckv/course">
      <script type="text/javascript">
        function showcourse(aId)
        {
          var vCourse = document.getElementById(aId);
          vCourse.style.display = 'block';
        }
      </script>
      <input type="radio" name="id" onClick="showcourse('course<xsl:value-of select="courseid"/>');" />
      <div id="course<xsl:value-of select="courseid"/>" style="display:none"><xsl:value-of select="coursename);"/></div><br />
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

Skill is when luck becomes a habit.


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Misschien kan je het probleem eens omschrijven? Wat lukt je niet precies?

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • maxtz0r
  • Registratie: Februari 2007
  • Laatst online: 17-12-2022
DeverauX schreef op maandag 26 februari 2007 @ 17:22:
Misschien kan je het probleem eens omschrijven? Wat lukt je niet precies?
Ik probeer dus van de data die ik uit het xml bestand lees eerst te sorteren op naam alleen. Wanneer je dan op 1 van die namen klikt moet de rest van de info op de pagina komen. Met php deed ik dit altijd met $GET_['id'] etc...

Probleem is dus dat ik nu niet genoeg kennis van xml heb om dit te realiseren.

Dying is God's way of telling you, you've been FIRED.


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

En wat is er nu anders? Je zal nog steeds de ID uit de querystring moeten halen en deze vervolgens in je xslt verwerken...en dat doe je niet met xml...

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • maxtz0r
  • Registratie: Februari 2007
  • Laatst online: 17-12-2022
DeverauX schreef op dinsdag 27 februari 2007 @ 14:04:
En wat is er nu anders? Je zal nog steeds de ID uit de querystring moeten halen en deze vervolgens in je xslt verwerken...en dat doe je niet met xml...
Ik heb het zo gedaan:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<xsl:for-each select="ckv/course">
     <script language="javascript">

var vcourseid = "<xsl:value-of select="courseid"/>";  
   


function showcourse(aId)

        {
          var vCourse = document.getElementById(aId);
          vCourse.style.display = 'block';

        }

function closecourse(aId)

        {
          var vCourse = document.getElementById(aId);
          vCourse.style.display = 'none';

        }
      </script>
      <a href="#" onClick="showcourse('{courseid}')"><xsl:value-of select="coursname"/></a>
      
<div id="{courseid}" style="display:none">

<table border="0" cellspacing="0" celpadding="0">
    <tr><td width="150">Adresgegevens:</td><td><xsl:value-of select="location/streetname"/> <xsl:value-of 

select="location/housnr"/></td></tr>
    <tr><td width="150"> </td><td><xsl:value-of select="location/postalcode"/></td></tr>
    <tr><td width="150"> </td><td><xsl:value-of select="location/city"/></td></tr>
    <tr><td width="150"> </td><td><xsl:value-of select="location/country"/></td></tr>
</table>


De code loopt nog verder maar het belangrijkste staat erin werkt goed in iedergeval

[ Voor 3% gewijzigd door maxtz0r op 27-02-2007 14:26 ]

Dying is God's way of telling you, you've been FIRED.


  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Volgens mij heb je nu te vaak dezelfde javascript functies in het resultaat? En is je div id niet uniek?

[ Voor 15% gewijzigd door eek op 27-02-2007 15:27 ]

Skill is when luck becomes a habit.


  • maxtz0r
  • Registratie: Februari 2007
  • Laatst online: 17-12-2022
eek schreef op dinsdag 27 februari 2007 @ 15:25:
Volgens mij heb je nu te vaak dezelfde javascript functies in het resultaat? En is je div id niet uniek?
javascript heb je gelijk die moet ik even buiten de loop zetten maar id is wel uniek tenminste mijn data verschild gewoon per item...

Hmmz gaat denk ik inderdaad niet pcies zoals ik het dacht maar het werkt wel. Door de loop haalt hij gewoon 1 voor 1 alles eruit en omdat ik in de xml een veld heb met <courseid></courseid> pakt hij gewoon goede courseid voor de juiste record....

[ Voor 26% gewijzigd door maxtz0r op 27-02-2007 16:04 ]

Dying is God's way of telling you, you've been FIRED.

Pagina: 1