Variable im Xml Code verwenden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Variable im Xml Code verwenden

    Hallo Leute,

    ich würde gerne eine Variable in meinem Xml-Quellcode verwenden und diese nur im Stylesheet initieren. D.h. wenn ich z.B. Adressen in meinem Quellcode habe, möchte ich dafür nur einen Platzhalter im Quellcode einsetzen und die tatsächliche addr. im Stylesheet angeben um bei Änderungen nicht in den ganzen Quellcodes die adresse ändern zu müssen.

    Ich verwende XSl-Fo zur Pdf Generierung. Bisher habe ich nur Variablen gefunden die nur innerhalb des Stylesheets Verwendung finden.

    Kann mir jemand dies bezüglich Tipps geben ?

    Gruss
    T.C
  • Es gibt keine Variablen in reinem XML. Maximal in einer Sprache, die auf XML aufsetzt. Diese hast du aber nicht genannt, solltest du eine verwenden.
    Das man Variablen in Stylesheets verwenden kann ist mir auch neu. Höchstens etwas JavaScript, dass man dort integrieren kann. Überhaupt finde ich es extrem bedenklich, dass du DATEN wie Adressen im STYLESheet unterbringen willst. Das ist softwaretechnisch schlicht und einfach falsch.
  • Hallo Hafner,

    es ist mir bewusst das daß Stylesheet eigentlich einem anderem Zweck dient aber ich habe nun mal diese Anforderung meine mit Xml geschriebenen Dokumente flexibler zu gestalten und mir fällt dazu keine andere Lösung ein.

    Ich verwende reines Xml und zur Pdf generierung XSL-FO. Wenn du einen anderen Vorschlag hast bin ich dafür offen.



    Mit freundlichen Grüssen

    T.C
  • @Hafner:
    "Richtig & falsch" ist immer sonne Sache :D solange es seinen Zweck erfüllt...
    @T.C:
    Trotzdem hat der Hafner Recht. Denke nicht, dass Du in reinem XML Variablen unterbringen kansst. Wenn dein XSL-FO soetwas nicht unterstützt, kannst du das vergessen.
    Alternativ könntest Du Dir ein Skript schreiben, welches XML-Dateien generiert. D.h. Du hättest "XML-Rohlinge" in denen Variablen z.B. so: "%%VARIABLE%%" markiert sind. Die Daten wären irgendwo anders (Datenbank, Textdatei,...). Also ich denke das Prinzip ist klar. Sollte auch nicht zu schwer zu realisieren sein.
    Mfg
    Wenn ich jemanden nicht mag, dann verpasse ich ihm nicht einen Schlag, sondern viele viele kleine Schlägchen
  • Also normalerweise generiert man sich die XML-Datei, wenn man sie dynamisch braucht.
    Dafür kann man PHP oder Java oder sonstwas verwenden.

    Zum Beispiel kann man ja JSPs verwenden (Verändertes Beispiel von de.wikipedia.org/wiki/Extensib…0%93_Formatting_Objects):

    Quellcode

    1. <?xml version="1.0"?>
    2. <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    3. <fo:layout-master-set>
    4. <fo:simple-page-master master-name="A4"
    5. page-width="210mm" page-height="297mm">
    6. <fo:region-body region-name="xsl-region-body" margin="2cm"/>
    7. </fo:simple-page-master>
    8. </fo:layout-master-set>
    9. <fo:page-sequence master-reference="A4"> <!-- (in Versionen <2.0 "master-name") -->
    10. <fo:flow flow-name="xsl-region-body">
    11. <fo:block><%=javaObject.gibMirDenTextDenIchBrauche()%></fo:block>
    12. </fo:flow>
    13. </fo:page-sequence>
    14. </fo:root>
    Alles anzeigen


    Hier habe ich einfach den Text "Hallo Welt!" aus den Wikipediabeispiel durch <%=javaObject.gibMirDenTextDenIchBrauche()%> ersetzt. Das XML-Flie ist nun nur noch ein Template. Das bedeutet, ich muss ihm zusätzliche Informationen bereitstellen, damit aus den Template ein fertiges XML wird. In diesem Fall eben "javaObject.gibMirDenTextDenIchBrauche()". Das kann aber je nach Programmiersprache und Programmaufbau auch anders aussehen. Weißt du ungefähr worauf ich hinaus will?

    @Hafner:
    "Richtig & falsch" ist immer sonne Sache :D solange es seinen Zweck erfüllt...

    Damit das richtig wird, benötigt man aber ganz schön viel Zweck... :)
  • Weißt du ungefähr worauf ich hinaus will?

    Meinst Du mich oder ihn? :D
    Damit das richtig wird, benötigt man aber ganz schön viel Zweck... :)

    Mit dem MS Editor erstellte Briefe drucken ist auch unschön, trotzdem ist das weder richtig noch falsch :rolleyes: ... nur nicht unbedingt im Sinne des Erfinders. ( Dafür gibts WordPad)
    Mfg
    Wenn ich jemanden nicht mag, dann verpasse ich ihm nicht einen Schlag, sondern viele viele kleine Schlägchen
  • Hallo,

    ja ich weis ungefähr was Du meinst habe dies bezüglich aber noch fragen. Wenn ich das richtig verstehe bindest du so etwas wie eine Funktion ein "javaObject.gibMirDenTextDenIchBrauche()".
    wohin muss ich den diese Funktion reinstellen damit sie bei der Xml-generierung berücksichtigt wird ? etwa da hin wo die anderen Xml dateien auch stehen ?

    Ich bin noch Anfänger in XML also bitte ich um nachsicht wenn meine Fragen etwas trivial erscheinen.

    Gruss

    T.C
  • Erst einmal brauche ich ein paar Informationen von dir. Mit was machst du denn aus dem XSl-Fo-Dokument ein PDF? Wo verwendest du es? Verwendest du Programmiersprachen (PHP/Java/etc.)? Brauchst du das für das Internet? Ich kann dir keinen Ansatz vorschlagen, wenn ich garnicht weiß welche Möglichkeiten dir zur Verfügung stehen. Das vorhin war ein Beispiel mit einer JSP. Du kannst aber auch das XSl-Fo-Dokument mit PHP erzeugen und so die gewünschten Daten einbinden. Wenn deine Anwendung nix mit dem Web zu tun hat, dann lohnt es sich vielleicht sogar ein kleines C-Programm zu schreiben, dass dir aus den Daten direkt eine XSl-Fo-Datei generiert. Die Lösung hängt stark davon ab, wo du XSl-Fo überhaupt brauchst und wie du daraus ein PDF machst.
  • Hallo,

    es ist so das ich mit einer bestehenden Lösung arbeite. Soweit ich das durchschaut habe wird mit dem XSl-Formatierer Apache.xalan java aus dem xsl-fo ein Pdf generiert. Ich verwende also selber kein Program um aus dem xsl-fo ein Pdf zu generieren. Ich brauche das nicht für das Web (Zur zeit noch nicht).



    Gruss

    T.C