[xml, xslt] Conditionele opmaak d.m.v. variabelen ofzo

Pagina: 1
Acties:

  • seweso
  • Registratie: Augustus 2003
  • Laatst online: 04-04-2018

seweso

de mouw is uit de aap

Topicstarter
Als ik de volgende xml heb:

code:
1
2
3
4
5
6
7
8
9
10
11
12
  <someroot>
    <personen>
       <persoon><id>4532</id><naam>Oebiedoebie</naam></persoon>
       <persoon><id>2132</id><naam>Kanarie</naam></persoon>
       <persoon><id>7644</id><naam>Sweet</naam></persoon>
       <persoon><id>7621</id><naam>Seweso</naam></persoon>
       <persoon><id>3456</id><naam>Bla</naam></persoon>
    </personen>
    <status>
        <geselecteerde_persoon>7621</geselecteerde_persoon>
    </status>
  </someroot>
Is het dan mogelijk om de geselecteerde persoon nu een andere opmaak te geven met behulp van een xslt?

Misschien de waarde "someroot/status/geselecteerde_persoon" in een variabele laden en dan <xsl:if /> gebruiken?

seweso's blog


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Je hebt geeneens een xsl:if nodig. Het is veel mooier om je aan het model van XSLT te houden: templates die bepaalde punten in je XML document herschrijven. Je kan twee templates maken: 1 voor 'normale' personen en 1 voor geselecteerde personen. In de match voorwaarde van het twee template moet je dan met een XPath expressie aanduiden wanneer een persoon geselecteerd is. Dat is verder niet zo lastig.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Waarom maak je geen attribute om aan te duiden of een persoon geselecteerd is of niet?
Ik denk dat het dan wat makkelijker is om 'm een andere opmaak te geven.

https://fgheysels.github.io/


  • seweso
  • Registratie: Augustus 2003
  • Laatst online: 04-04-2018

seweso

de mouw is uit de aap

Topicstarter
mbravenboer schreef op 15 januari 2004 @ 13:35:
Je hebt geeneens een xsl:if nodig. Het is veel mooier om je aan het model van XSLT te houden: templates die bepaalde punten in je XML document herschrijven. Je kan twee templates maken: 1 voor 'normale' personen en 1 voor geselecteerde personen. In de match voorwaarde van het twee template moet je dan met een XPath expressie aanduiden wanneer een persoon geselecteerd is. Dat is verder niet zo lastig.
Als je twee templates maakt voor dezelfde tag dan doe je toch heel veel dubbel! Dus als je dan de opmaak van persoon wil wijzigen dan moet je dat voor de geselecteerde persoon ook wijzigen. Dat is denk ik alleen handig als de opmaak voor beide soorten personen heel erg verschild.
whoami schreef op 15 januari 2004 @ 13:35:
Waarom maak je geen attribute om aan te duiden of een persoon geselecteerd is of niet?
Ik denk dat het dan wat makkelijker is om 'm een andere opmaak te geven.
Is het netjes als ik het object wat een persoon uitpoep op de volgende manier wijzig?
code:
1
2
3
4
5
6
7
8
9
  <someroot>
    <personen>
       <persoon><id>4532</id><naam>Oebiedoebie</naam></persoon>
       <persoon><id>2132</id><naam>Kanarie</naam></persoon>
       <persoon><id>7644</id><naam>Sweet</naam></persoon>
       <persoon geselecteerd="true"><id>7621</id><naam>Seweso</naam></persoon>
       <persoon><id>3456</id><naam>Bla</naam></persoon>
    </personen>
  </someroot>
Voor de beeldvorming bij dit probleem moet je misschien bedenken dat bedrijf X de tag personen levert én de xslt die daarbij hoort. Bedrijf X kan zowel de data (niet de structuur) én de xstl wijzigen.

Vervolgens wil ik dus de mogelijkheid geven om geselecteerde personen ietwat anders te presenteren (zodat het voor de gebruiker duidelijk is welke persoon is geselecteerd).

Snap? :9

seweso's blog


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
seweso: Als je twee templates maakt voor dezelfde tag dan doe je toch heel veel dubbel! Dus als je dan de opmaak van persoon wil wijzigen dan moet je dat voor de geselecteerde persoon ook wijzigen. Dat is denk ik alleen handig als de opmaak voor beide soorten personen heel erg verschild.
Je moet het conditioneel herschrijven van XML scheiden van hergebruik. Wat jij hier wilt is typisch iets wat je met verschillende templates moet oplossen. Als je daarna een probleem van duplicatie van layout hebt, moet je die gemeenschappelijke elementen hergebruiken vanuit die templates. Dit kan je doen door bijvoorbeeld een standaard template aan te roepen die in beide gevallen opgaat en de bijzondere situaties af te handelen in de templates voor de speciale gevallen.
Is het netjes als ik het object wat een persoon uitpoep op de volgende manier wijzig?
Je moet het ontwerp van de structuur van je data scheiden van de tools die op die data werken. Applicaties mogen geen invloed hebben op de structuur van de data. De data structuur moet natuurlijk wel goed in de gaten zetten, dus zou je het best kunnen veranderen, maar niet omdat deze transformatie lastig zou zijn (wattie niet is overigens).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • seweso
  • Registratie: Augustus 2003
  • Laatst online: 04-04-2018

seweso

de mouw is uit de aap

Topicstarter
Oeps typefoutje...

"Is het netjes als ik het object wat een persoon uitpoep op de volgende manier wijzig?"

moest eigenlijk dit zijn:

"Is het netjes als ik de uitvoer van het object (wat een persoon uitpoept) op de volgende manier wijzig?"


Maar ja ik denk dat ik er nu wel uitkom, thanx :)

seweso's blog

Pagina: 1