Zum neuen Informatik-Forum >>
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

XSLT - Template aufrufen und Wert zurückgeben?

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> XML/XSD/XSL/XSLT
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Spitzel



Anmeldungsdatum: 14.11.2005
Beiträge: 1

BeitragVerfasst am: 14. Nov 2005 15:21    Titel: XSLT - Template aufrufen und Wert zurückgeben? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
kurellajunior
Administrator


Anmeldungsdatum: 14.02.2005
Beiträge: 214
Wohnort: Berlin-Pankow

BeitragVerfasst am: 14. Nov 2005 22:47    Titel: Antworten mit Zitat

Beschreib mal das Problem etwas umfassender (xml, xsl und Ziel)
Ich vermute, dass Dein Lösungsansatz nicht wirklich XSL-Philosophie ist.

Jan

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gast






BeitragVerfasst am: 15. Nov 2005 09:50    Titel: Antworten mit Zitat

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

BeitragVerfasst am: 15. Nov 2005 12:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> XML/XSD/XSL/XSLT Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen