Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Spitzel
Anmeldungsdatum: 14.11.2005 Beiträge: 1
|
Verfasst am: 14. Nov 2005 15:21 Titel: XSLT - Template aufrufen und Wert zurückgeben? |
|
|
Hallo Leute,
ich habe eine Frage, besser gesagt ein Problem. Ich möchte ein template aufrufen:
<xsl:call-template...
das ganze mit parametern ist mir auch klar:
<xsl:call-template...
<xsl:with-param name="combi_is_legal" select="true()"/>
</xsl:call-templata>
nun möchte ich aber in dem template (eventuell) den wert des parameters "combi_is_legal" auf false setzen und zurückgeben. wie macht man sowas? oder welche möglichkeiten gibt es, wenn das nicht funktioniert?
ich brauche die geänderte variable (also den param) an der stelle, wo ich das template aufgerufen habe...
ich hoffe, ihr könnt mir helfen...
mfg Spitzel |
|
Nach oben |
|
|
|
kurellajunior Administrator
Anmeldungsdatum: 14.02.2005 Beiträge: 214 Wohnort: Berlin-Pankow
|
Verfasst am: 14. Nov 2005 22:47 Titel: |
|
|
Beschreib mal das Problem etwas umfassender (xml, xsl und Ziel)
Ich vermute, dass Dein Lösungsansatz nicht wirklich XSL-Philosophie ist.
Jan _________________
|
|
Nach oben |
|
|
Gast
|
Verfasst am: 15. Nov 2005 09:50 Titel: |
|
|
Also, die Situation ist folgende. Ich habe eine XML-Datei, in der habe ich verschiedene Gültigkeiten gespeichert, z.b.:
NAME auto bleibe
hans 010 100
herbert 001 010
hubert 101 111
AUTO name bleibe
bmw 001 100
opel 100 010
audi 010 001
BLEIBE name auto
haus 001 001
wohng. 010 100
ferienh. 111 001
zu den gültigkeiten gibt es jedoch möglichkeiten, die ich explizit ausschließen möchte!
bsp.: name 100 - auto 001 - bleibe 010 (also hans darf zwar audi fahren, aber nicht wenn er in ner wohnung wohnt)
(beispiele sind erfunden, würde zu komplex - und intern - werden)
so siehts im xml aus:
Code: |
<name>
<item name="hans">
<auto>101</auto>
<bleibe>101</bleibe>
</item>
<item name="herbert">
<auto>101</auto>
<bleibe>101</bleibe>
</item>
<item name="hubert">
<auto>101</auto>
<bleibe>101</bleibe>
</item>
</name>
<auto>
<item name="bmw">
<name>101</name>
<bleibe>101</bleibe>
</item>
<item name="opel">
<name>101</name>
<bleibe>101</bleibe>
</item>
<item name="audi">
<name>101</name>
<bleibe>101</bleibe>
</item>
</auto>
<bleibe>
<item name="haus">
<name>101</name>
<auto>101</auto>
</item>
<item name="haus">
<name>101</name>
<auto>101</auto>
</item>
<item name="haus">
<name>101</name>
<auto>101</auto>
</item>
</bleibe>
|
(zahlen könnten inconsistent sein)
und nun noch der filter:
Code: |
<illegal>
<combi name="010" auto="100" bleibe="011"/>
</illegal>
|
jetzt muss ich zu jeder illegal-combi durchgehen, und prüfen. dazu hab ich ein template gebastelt. dieses template soll nun !!!ZURÜCKGEBEN!!! ob die angesprochene combination illegal ist, oder nicht (is_illagel = [true()/false()])
und da weiß ich nicht, wie eine funktion einen wert zurückgeben kann...
mfg Spitzel |
|
Nach oben |
|
|
kurellajunior Administrator
Anmeldungsdatum: 14.02.2005 Beiträge: 214 Wohnort: Berlin-Pankow
|
Verfasst am: 15. Nov 2005 12:55 Titel: |
|
|
Hatte ich doch richtig vermutet.
Mmh, Also xsl ist eine Style language und keine Programmiersprache. Natürlich geht einiges aber so wird das nix.
1. In der XML-Datei fehlt jede Zuordnung welche Zahl denn eigentlich für welchen Namen, Automarke, Wohnobjekt steht. Sieh Dir mal das Konzeot von ids und ID-Referenzen in XML an.
2. Mit XSL kann wunderbar transformiert werden und das auch bedingt. Du kannst also in Abhängigkeit Deiner Kombis eine Ausgabe / Ersetzung erzeugen, die entweder nix (invalide) oder den entsprechenden Knoten enthält. Soll heißen:
Code: | Für jeden Combiknoten
when (bedingung nicht verletzt)
Mach schöne Ausgabe
end if
end for-each |
Hilft das als Ansatz?
Es gibt auch workarounds: Du kannst zu beginn Deines XSL eine Variable definieren, die im gesamten Dokmunet gilt und diese als "Rückgabewert missbrauchen, aber wie gesagt, dafür ist XML/XSL nicht gedacht.
Jan _________________
|
|
Nach oben |
|
|
|