Avatar billede tbundgaard Nybegynder
10. oktober 2000 - 11:44 Der er 5 kommentarer og
1 løsning

Hvordan gøres xsl mere fleksibel (variabler)

Hjælp,

Jeg har et ASP document der starter viser en XML side med et XSL stylesheet op. Hvordan kan jeg gøre mit XSL document mere fleksibel?

Jeg vil gerne overføre en variabel til XSL, så jeg kan validere vis de poster jeg ønsker

Her er koden jeg bruger:

<HTML>
<HEAD>
<link rel=\"stylesheet\" type=\"text/css\" href=\"../../css/webteam.css\">
</HEAD>
<BODY LINK=\"#0000ff\" VLINK=\"#800080\">

<script language=\"javascript\">
// Load XML
var xml = new ActiveXObject(\"Microsoft.XMLDOM\")
xml.async = false
xml.load(\"aktier.xml\")

// Load the XSL
var xsl = new ActiveXObject(\"Microsoft.XMLDOM\")
xsl.async = false
xsl.load(\"nyheder.xsl?ID=\'1025848\'\")

// Transform
document.write(xml.transformNode(xsl))
</script>
</HTML>


Den variabel jeg gerne vil overføre er i denne linie
xsl.load(\"nyheder.xsl?ID=\'1025848\'\")

------- oOo --------

I mit XSL forsøger jeg at læse variablen , men det lykkes ikke rigtig....

<xsl:if test=\'@I[text()=$ID]\'>


\\Håber at nogle kan hjælpe mig

  Torben Bundgaard
Avatar billede skovtrold Nybegynder
18. oktober 2000 - 11:21 #1
Først, så længe du bruge ASP, så hent din hhhv. XML og XSL server-side så koden er browseruafhængig:
--
<%
\'Hent XML
set xml = Server.CreateObject(\"Microsoft.XMLDOM\")
xml.async = false
xml.load(Server.MapPath(\"aktier.xml\"))

\'Hent XSL
set xsl = Server.CreateObject(\"Microsoft.XMLDOM\")
xsl.async = false
xsl.load(Server.MapPath(\"nyheder.xslID=\'1025848\'\"))

Response.Write(xml.transformNode(xsl))
%>
--
Beskrivelse/eksempel på dit variable-problem kan du finde på www.vbxml.com
Avatar billede skovtrold Nybegynder
18. oktober 2000 - 11:21 #2
Hov, der mangler lige et \"?\" i mit eksempel hvor du henter XSL-filen...sorry
Avatar billede janegil Nybegynder
19. oktober 2000 - 10:08 #3
Det generelle verktøyet for å overføre variable til XSK/T, er xsl:param.
Men jeg tviler på om det er implementert av Microsoft.

http://www.w3.org/TR/xslt.html#variables
Avatar billede zogu Nybegynder
08. november 2000 - 10:12 #4
Min eneste løsning var at generer variablerne ud i VB eller Java script functioner fra ASP til HTML siden og så lægge kald til disse ind i min XSL kode.
Så det parsede html dokument selv kaldte funktionen.

Måske kan det hjælpe dig.

Med venlig hilsen
Zogu
Avatar billede janegil Nybegynder
21. november 2000 - 12:53 #5
Nå har Microsoft en oppdatering av XSL som støtter <xsl:param> og <xsl:variable>

http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/001/469/msdncompositedoc.xml

Jeg har et eksempel på bruk av begge i
http://heima.olivant.fo/~styrheim/xml/prisliste/prisliste.xml
Siden skal vises i gulbrunt/rødbrunt, og med overskriften «Prisliste», hvis du ser den med en browser som forstår XSL-sheetet mitt.

For å endre verdien av en variabel, skal du nok POSTe den opp til serveren, og bruke ASP for å skrive den konkrete verdien o <xsl:param>. Det finnes også løsninger med javascript og DOM-programmering i klienten, men disse vil være bundet til Internet Explorer. Løsningen min virker godt nok også bare i IE – men det vil endre seg, jeg er helt sikker på at Netscape også vil komme til å fungere på eksemplet mitt.
Avatar billede janegil Nybegynder
12. december 2000 - 10:01 #6
PS: Årsaken til at jeg anbefaler at ASP skal skrive i <xsl:param>-elementene, og ikke hvor som helst ellers, er at param er beregnet til å overstyre verdier fra utsiden.

Jeg forventer at det vil komme metoder for å sette verdi i et param-element på server-siden, uten bruk av DOM-programmering. Noe i stil med
http:prisliste.xsl?vin=#333333&gull=#444444
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester