Announcement

Collapse
No announcement yet.

document('') Pfad mit Variable?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • document('') Pfad mit Variable?

    Hallo,

    ist nicht gerade der beste Titel aber mir ist für das Thema kein besserer eingefallen.

    Aber egal, kommen wir zu meiner Frage:

    Es gibt in meinem xslt Stylesheet eine Varable THEME:
    HTML Code:
    <xsl:variable name="THEME" select="/document/parameters/theme" />
    Die funktioniert auch ohne Probleme und beinhaltet z.B. "default".

    Jetzt habe ich in dem Theme Ordner eine layout.xml, welche ich dynamisch, also von der THEME Variable abhängig, laden möchte.

    Mal zur Verdeutlichung meine Ordnerstruktur:
    Code:
    themes/
    	default/
    		layout.xml
    	default.xsl << in diesem XSL File bin ich
    Angenommen die layout.xml würde jetzt direkt im themes Ordner liegen funktioniert folgendes:
    HTML Code:
    <xsl:variable name="LAYOUT" select="document('layout.xml')/layout" />
    Mein Ziel ist aber etwas in dieser Art:
    HTML Code:
    <xsl:variable name="LAYOUT" select="document('$THEME/layout.xml')/layout" />
    Jedoch funktioniert das so nicht und ich bekomme vom IE folgendes gesagt:
    Die angegebene Ressource konnte nicht gefunden werden.
    Der wird also das $THEME nicht als Variable ansehen, sondern als Ordner.

    Ich habe auch schon einige andere Möglichkeiten ausprobiert, jedoch bisher keinen Erfolg gehabt.

    Jemand eine Idee wie ich mein Ziel erreichen könnte?

    Danke im voraus,
    Markus

  • #2
    Werte den String in $THEME zunächst aus:
    Code:
    <xsl:variable name="LAYOUT" select="document(concat($THEME,'/layout.xml'))/layout" />

    Comment


    • #3
      Super funktioniert,
      Danke!

      Comment


      • #4
        Hi zusammen.

        Hab mal wieder ein ähnliches Problem und versucht das oben umzusetzen. Leider geht das bei mir so nicht, da er Probleme hat den String in einen Pfad umzusetzen.
        TypeVars beinhaltet einige Elemente wie zB <function bez="Function".../>
        Ziel wäre es die Elemente dynamisch anzusprechen und eine Ausgabe wie in test 3 zu bekommen.
        Weiß jemand was ich hier falsch mache?

        Code:
        <xsl:param name="type"/>
        <xsl:variable name="test" select="concat('$TypeVars/',$type,'/@bez')"/>
        <test1><xsl:value-of select="$type"/></test1>
        <test2><xsl:value-of select="$test"/></test2>
        <test3><xsl:value-of select="$TypeVars/function/@bez"/></test3>
        <test4><xsl:value-of select="'$TypeVars/function/@bez'"/></test4>
        Heraus kommt nämlich dann das:
        Code:
        <test1>function</test1>
        <test2>$TypeVars/function/@bez</test2>
        <test3>Function</test3>
        <test4>$TypeVars/function/@bez</test4>

        Comment


        • #5
          In diesem Thread ging es um den dynamisch zusammengesetzten Dokumentnamen, der einen String darstellt. Ein eigentändiger XPath-Ausdruck lässt sich so nicht erzeugen.

          Möglich sind jedoch Konstrukte in der Form element1/child::node()[local-name()='element2'] und hier könnte der String 'element2' auch in einer Variable abgelegt sein, etwa als element1/child::node()[local-name()=$myvar].

          Comment


          • #6
            Konnte das einbauen und funktioniert bestens.
            Danke dir.

            Comment

            Working...
            X