ulli: - xpath / document()

hi euch all

wie kann ich aus xsl mittels document auf andere xml documente zugreifen und aus diesen bestimmte inhalte auslesen ...

zB ich hab eine xsl datei, die mir eine tabelle zusammenbastelt und möchte bei der abarbeitung auf eine andere xml quelle (wo zB informationen über die styles, die verwendet werden sollen stehen) zugreifen ... die auswahl treffe ich über xsl:choose

xsl:choose
  <xsl:when test="$layout=1">
    <xsl:variable name="layout1" select="document(...)" /> <- hier brauch ich hilfe
  </xsl:when>
  <xsl:when test="$layout=2">
  .
  .
  .
</xsl:choose>

... und die variable layout1 wird dann zB dafür genommen, um die bgcolor einer tabelle anzupassen ...

danke für eure antworten

ulli

  1. Hallo,

    <xsl:variable name="layout1" select="document(...)" /> <- hier

    select="document(../pfad/datei.xml)/root/element/element"
    Mit document(datei.xml) erhältst du einen Knoten zurück: nämlich das Wurzelelement der XML-Datei das dann alle anderen Elemente beinhaltet, so kannst du dann normal mit XPaht in der Hierarchie weitergehen.

    Grüße
    Thomas

    PS: im Archiv gibts auch schon viele Beispile mit document()

    1. Hallo,

      hi thomas

      danke für die antwort ...

      Grüße
      Thomas

      PS: im Archiv gibts auch schon viele Beispile mit document()

      echt? dann muss ich mir eingestehen, dass ich nicht suchen kann ... hab nämlich vorher (so wie es sich gehört :) ) im archiv gesucht aber nichts gefunden ... naja wie auch immer ... bis dann

      ulli

      1. Hallo ulli,

        PS: im Archiv gibts auch schon viele Beispile mit document()

        echt? dann muss ich mir eingestehen, dass ich nicht suchen kann ... hab nämlich vorher (so wie es sich gehört :) ) im archiv gesucht aber nichts gefunden ... naja wie auch immer ... bis dann

        schau dir die Quellcodes in den Beiträgen an:
        http://forum.de.selfhtml.org/archiv/2002/3/7685/#m42840
        http://forum.de.selfhtml.org/archiv/2002/5/11707/#m64889
        http://forum.de.selfhtml.org/archiv/2002/6/14025/
        http://forum.de.selfhtml.org/archiv/2002/9/23078/#m128368
        http://forum.de.selfhtml.org/archiv/2003/4/42754/#m234715 etc.

        Grüße
        Thomas

        1. Hallo ulli,

          re hi

          danke für die links ... hab schon gefunden, was mir gefehlt hat ... nämlich: die '' um den link also ...document('../xml/layout.xml')/...

          Grüße
          Thomas

          cya ulli

    2. Hallo,

      hi

      es scheint aber nicht zu funzen ..
      die xml datei(die, die eingebunden werden soll):

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

      <DATA>
        <LAYOUT id="0">
          <TABELLE>
            <tabBg>#99cc99</tabBg>
          </TABELLE>
        </LAYOUT>
        <LAYOUT id="1">
        </LAYOUT>
      </DATA>

      ... ich möchte zB an tabBg ran ...

      und das xsl sheet:

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="html" encoding="iso-8859-1" />

      <xsl:param name="layout" />

      <xsl:template match="/">

      <table style="position:relative;top:0px;left:0px" height="135px" cellpadding="30" cellspacing="0" width="100%" border="0">
            <xsl:attribute name="bgcolor">
              <xsl:value-of select="document(../xml/layout.xml)/DATA/LAYOUT[@id=$layout]/TABELLE/tabBg" />
            </xsl:attribute>
            <tr><td valign="bottom">

      </td></tr>
            </table>

      aber es steht nichts im bgcolor attribut drin ...

      1. Hallo,

        es scheint aber nicht zu funzen ..

        <xsl:param name="layout" />

        <xsl:value-of select="document(../xml/layout.xml)/DATA/LAYOUT[@id=$layout]/TABELLE/tabBg" />

        Wie hast du denn den Paramter übergegeben? Wie machst du die Verarbeitung? Normalerweise übergibt man den Paramter in der URL (z.B. http://domain.de/transformierexml.jsp?layout=0 jsp ist hier nur als Beispiel genannt), aber wenn du deine XML/XSL Transformation clientseitig machst, kannst du das leider vergessen, denn die Browser selbst können das nicht.

        Grüße
        Thomas