Ben: access denied

hallo,

ihr kennt mich vielleicht noch aus fragen wie "stringvergleich mit xsl:if" oder "ungewollter line break"

jetzt habe ich aber ein problem, das mir wirklich sorge macht.

ich habe jetzt mein xsl file fertig, es liegt auf einem webserver und is glücklich dort.

ACHTUNG FOLGENDER TEXT KÖNNTE ETWAS VERWIRREND SEIN! ;)

dazu habe ich jetzt die xml files erstellt ... die dann ja aufgerufen werden und auf das xsl verlinkt sind (asoluter pfad: http://...)

wenn ich jetzt ein xml file bei mir lokal öffne mit dem IE zeigt er mir all das was es soll, also was das xsl file tun soll.

wenn ich des xml auf den webserver lege und über www.boandlkramer.de/03chars/char_06/Rowin.xml aufrufe bekomme ich ein access denied.
Die webmasterin der ich die files zuerst geschickt habe, kann sie bei sich nichtmal lokal ausführen, ...
Dann hab ichs nochmal in der Uni auf Linux-Rechnern probiert, da geschah folgendes ...
Netscape und Opera zeigten nur Quellcode des xml's an
Mozilla hat auch quellcode angezeigt wenn die verlinkung auf die HP im xml stand, wenn ich das xsl in das selbe directory wie das xml (uni-rechner) kopiert habe und die href im xml geändert habe ging es.

Ich weiss echt nicht woran das liegen kann?! Dass es bei mir geht nur bei allen anderen nicht.

Bin am Ende mit meinem Latein.

Gruss Ben

  1. Hallo,

    ich habe jetzt mein xsl file fertig, es liegt auf einem webserver und is glücklich dort.

    ACHTUNG FOLGENDER TEXT KÖNNTE ETWAS VERWIRREND SEIN! ;)

    dazu habe ich jetzt die xml files erstellt ... die dann ja aufgerufen werden und auf das xsl verlinkt sind (asoluter pfad: http://...)

    wenn ich jetzt ein xml file bei mir lokal öffne mit dem IE zeigt er mir all das was es soll, also was das xsl file tun soll.

    Aktiviere mal fuer die Internet-Zone unter "Verschiedenes" "Auf Datenquellen über Domänengrenzen hinweg zugreifen".

    MfG, Thomas

    1. Oh Leck,

      ich danke Dir ... da ich das ja schon nicht anhatte muss ich jawohl damit rechnen dass es so gut wie keiner anhat ;(( das heisst des muss als "Tipp" mit auf die HP drauf ... naja hauptsache die arbeit war nicht umsonst.

      hab jetzt aber noch ein andres problem ... und zwar habe ich in dem XSL file eine reihe von "xsl:if"'s bei mir sucht er sich das richtige heraus ... wenn ich nem kumpel das xml gebe, dann werden ihm alle ausgaben die hinter sämtlichen xsl:if stehen ausgeben, also auch die die gar nicht erscheinen sollten.

      woran kann das liegen? zu alter IE?!

      Danke Ben

      Hallo,

      ich habe jetzt mein xsl file fertig, es liegt auf einem webserver und is glücklich dort.

      ACHTUNG FOLGENDER TEXT KÖNNTE ETWAS VERWIRREND SEIN! ;)

      dazu habe ich jetzt die xml files erstellt ... die dann ja aufgerufen werden und auf das xsl verlinkt sind (asoluter pfad: http://...)

      wenn ich jetzt ein xml file bei mir lokal öffne mit dem IE zeigt er mir all das was es soll, also was das xsl file tun soll.

      Aktiviere mal fuer die Internet-Zone unter "Verschiedenes" "Auf Datenquellen über Domänengrenzen hinweg zugreifen".

      MfG, Thomas

      1. hallo ben,

        hab jetzt aber noch ein andres problem ... und zwar habe ich in dem XSL file eine reihe von "xsl:if"'s bei mir sucht er sich das richtige heraus ... wenn ich nem kumpel das xml gebe, dann werden ihm alle ausgaben die hinter sämtlichen xsl:if stehen ausgeben, also auch die die gar nicht erscheinen sollten.

        deine xsl file ist ziemlich durcheinander geraten:

        mache es so:
          <xsl:template match="/auswertung">
              <html>
        <body style="background-color:#093A7D; font-family:Arial, Helvetica; font-size:20px; color:#FFFFFF">
                 <xsl:apply-templates select="document('http://www.camelot-europe.com/herald/servers/Avalon/guilds/588.xml')"/>
        </body>
              </html>
           </xsl:template>

        und entferne alle anderen <body style="background-color:#093A7D; font-family:Arial, Helvetica; font-size:20px; color:#FFFFFF"> und die dazugehörigen </body> aus der file.

        schreib im image auch im alt-tag den namen der richtigen:
        <img src="http://www.boandlkramer.de/03chars/pictures/{$name_short}.jpg" width="160" height="310" ALT="Rowin"></img>

        alt="{@name}"

        du muss dann einiges umschreiben, sonst bekommt du keine ausgabe:

        <xsl:value-of select="totalrp" /><BR/><BR/>
                    <xsl:value-of select="lastweekrp" /><BR/>
        <!-- filgende zeile muss du umschreiben -->
                    <xsl:apply-templates select="../top"/>
                    </td>
                 </tr>
              </table>
           </xsl:template>

        dann so weiter:
           <xsl:template match="top">
               <xsl:apply-templates select="top_char" />
           </xsl:template>

        <xsl:template match="top_char">
        <xsl:if test="@name = $name">
               xsl:choose
               <xsl:when test="../@type = 'fletching'">
                 Bogenmacher
                 <xsl:value-of select="@point" />
               </xsl:when>
               <xsl:when test="../@type = 'weaponcraft'"> Waffenschmied <xsl:value-of select="@point" /></xsl:when>
               <xsl:when test="../@type = 'armorcraft'"> Rüstungsschmied <xsl:value-of select="@point" /></xsl:when>
               <xsl:when test="../@type = 'tailoring'"> Schneiderei <xsl:value-of select="@point" /></xsl:when>
               xsl:otherwise<xsl:value-of select="../@type" /> <xsl:value-of select="@point" /></xsl:otherwise>
               </xsl:choose>
        </xsl:if>
        </xsl:template>

        --

        wenn ich nem kumpel das xml gebe, dann werden ihm alle ausgaben die hinter sämtlichen xsl:if stehen ausgeben, also auch die die gar nicht erscheinen sollten.
        woran kann das liegen? zu alter IE?!

        keine ahung, was für einen IE hat er?

        grüße
        thomas

  2. Hi Ben,

    ACHTUNG FOLGENDER TEXT KÖNNTE ETWAS VERWIRREND SEIN! ;)

    Nicht so verwirrend wie dein XML samt XSL.

    Also erstmal, stell beide Dateien in das gleiche Verzeichnis. Das könnte gegen das Access Denied helfen. Und was soll diese Zeile bedeuten in dem XSL?

    <xsl:apply-templates select="document('http://www.camelot-europe.com/herald/servers/Avalon/guilds/588.xml')" />

    Das select-Attribut von xsl:apply-templates erwartet einen QName, keine Funktion, die ein Nodeset zurückliefert. Was erwartest du dir von der Konstruktion?

    Netscape und Opera zeigten nur Quellcode des xml's an

    Können die überhaupt mit XML/XSL umgehen? Welcher Netscape war's überhaupt?

    Mozilla hat auch quellcode angezeigt wenn die verlinkung auf die HP im xml stand, wenn ich das xsl in das selbe directory wie das xml (uni-rechner) kopiert habe und die href im xml geändert habe ging es.

    Klingt nach Problem mit den Zugriffsrechten, wie oben beim IE

    Grundsätzlich solltest du dich nicht darauf verlassen, dass deine Besucher mit einem Browser kommen, der XML und XSL versteht, und das auch noch in der richtigen Version. Die Transformation sollte auf dem Server laufen, nicht auf dem Client. Der kriegt nur das Ergebnis geliefert, also HTML.

    Gruß,
    Martin

    1. Das select-Attribut von xsl:apply-templates erwartet einen QName, keine Funktion, die ein Nodeset zurückliefert. Was erwartest du dir von der Konstruktion?

      Sorry, mein Fehler, da wird tatsächlich ein Nodeset akzeptiert. Ich war in der Zeile verrutscht in der Doku. Aber trotzdem versteh ich nicht ganz, was da passieren soll.

      Gruß,
      Martin

      1. Da passiert folgendes, der Link dort ist ein XML file auf das ich keinen Einfluss habe, das will ich abfragen.
        Und die Ergebnisse ausgeben, ... wüsste nicht wie ich es sonst machen könnte?!
        Bin completely new auf diesem Gebiet ... hab vor 4 tagen angefangen damit.

        Wie soll denn die transformation anders laufen?
        Des xml file aus dem link wird ständig upgedatet und ich möchte ständig auf dem neuesten stand sein ...

        Gruss,
                Ben

        Das select-Attribut von xsl:apply-templates erwartet einen QName, keine Funktion, die ein Nodeset zurückliefert. Was erwartest du dir von der Konstruktion?

        Sorry, mein Fehler, da wird tatsächlich ein Nodeset akzeptiert. Ich war in der Zeile verrutscht in der Doku. Aber trotzdem versteh ich nicht ganz, was da passieren soll.

        Gruß,
        Martin

        1. Hi Ben,

          eins vorweg: TOFU und Full Quotes sind bäääh :-)

          Wie soll denn die transformation anders laufen?
          Des xml file aus dem link wird ständig upgedatet und ich möchte ständig auf dem neuesten stand sein ...

          Mit ner Transformation auf dem Server, das geht, wenn du Zugriff auf PHP oder ASP hast. Natürlich samt dem zugehörigen XML-Parser und der Transformation Engine. Also z.B. MSXML4 oder Xerces/Xalan.

          Gruß,
          Martin

          1. OK Kein FULLQUOTE ;) aber was ist TOFU?

            naja und die domain die wir haben kann kein PHP ;( zu billig ... und von dem andern krams hab ich gar kein plan *heul*

            Danke Ben

            1. Hi Ben,

              OK Kein FULLQUOTE ;) aber was ist TOFU?

              reicht ja, das zu quoten, worauf man sich bezieht :-) TOFU steht für Text Oben, Fullquote Unten.

              naja und die domain die wir haben kann kein PHP ;( zu billig ... und von dem andern krams hab ich gar kein plan *heul*

              Vom anderen Kram? Also habt ihr ASP? Da geht's ziemlich einfach, unter http://msdn.microsoft.com/library/en-us/xmlsdk/htm/sdk_intro_6g53.asp ff. findest du die komplette Doku mit Beispielen.

              Gruß,
              Martin

    2. Naja oder Du schreibst Deinen Gildenmitgliedern einfach vor das sie einen Browser nutzen der XML kann (wie den IE 6.0, ...)

      Daran könnte es gelegen haben.

      1. Ja naja ;)

        die seite soll ja nicht nur für Gildenmitglieder sein ;)
        da sollen ja auch andere interessierte Spieler anderer Gilden draufschaun, ... man könnte ja zwei varianten machen, über eine abfrage, haben sie den IE 6.0 und haben sie "Auf Datenquellen über Domänengrenzen hinweg zugreifen" eingeschaltet? wenn nein dann gehts auf eine natürlich nicht so aktuelle seite die per hand upgedatet wird.
        Ich mach bei der Seite eigentlich nur des design ;) aber unsre webmasterin hat keine zeit sich in xsl einzuarbeiten, deshalb habe ich gesagt dass ich des mach. oder versuch ...

        Gruss Ben

        Naja oder Du schreibst Deinen Gildenmitgliedern einfach vor das sie einen Browser nutzen der XML kann (wie den IE 6.0, ...)

        Daran könnte es gelegen haben.

      2. Hi Marco,

        Naja oder Du schreibst Deinen Gildenmitgliedern einfach vor das sie einen Browser nutzen der XML kann (wie den IE 6.0, ...)

        Daran könnte es gelegen haben.

        ich schreib nix vor :-) Isch abe gar keine Gildemitglieder *g*

        Gruß,
        Martin

        1. Da ich nur Gildenmitglied bin kann ich meinen Mitstreitern beizeiten gar nix vorschreiben ;))

          Nein mal im ernst ... wie würde es denn gehen so eine auswertung serverseitig stattfinden zu lassen? Ist das sehr kompliziert?

          Gruss Ben

          Hi Marco,

          Naja oder Du schreibst Deinen Gildenmitgliedern einfach vor das sie einen Browser nutzen der XML kann (wie den IE 6.0, ...)

          Daran könnte es gelegen haben.

          ich schreib nix vor :-) Isch abe gar keine Gildemitglieder *g*

          Gruß,
          Martin

    3. Hallo Martin,

      Und was soll diese Zeile bedeuten in dem XSL?

      <xsl:apply-templates select="document('http://www.camelot-europe.com/herald/servers/Avalon/guilds/588.xml')" />

      Das select-Attribut von xsl:apply-templates erwartet einen QName, keine Funktion, die ein Nodeset zurückliefert.

      Das stimmt so nicht. Das select-Attribut des xsl:apply-templates-Elements erwartet einen XPath-Ausdruck (expression), der ein Node-Set zurückliefert. Über das Attribut wird festgelegt, für welche Knoten im Stylesheet eine Template Rule gesucht und auf die Knoten angewendet werden soll.

      Was erwartest du dir von der Konstruktion?

      Ich nehme mir mal die Freiheit, für Ben zu antworten ;-)
      Da die document()-Funktion ein Node-Set zurückliefert, ist dies durchaus ein legitimer Ausdruck innerhalb eines select-Ausdrucks. In diesem Falle liefert die document()-Funktion das Wurzelelement des als Arguments übergebenen Dokuments zurück (eine Knotenmenge also, die nur einen Knoten enthält). Der XSLT-Prozessor sieht daraufhin nach, ob es im Stylesheet eine Template Rule für diesen Knoten gibt und führt Sie aus, wenn es Sie gibt.

      Grundsätzlich solltest du dich nicht darauf verlassen, dass deine Besucher mit einem Browser kommen, der XML und XSL versteht, und das auch noch in der richtigen Version. Die Transformation sollte auf dem Server laufen, nicht auf dem Client. Der kriegt nur das Ergebnis geliefert, also HTML.

      Meine volle Zustimmung....

      Gruß
      Franz

      1. Hallo nochmal,

        In diesem Falle liefert die document()-Funktion das Wurzelelement des als Arguments übergebenen Dokuments zurück (eine Knotenmenge also, die nur einen Knoten enthält).

        gemeint ist natürlich der Wurzelknoten.

        Daher ist Vorsicht geboten bei sowas:

        <xsl:template match="/">
              <html>
                 <xsl:apply-templates select="document('http://www.camelot-europe.com/herald/servers/Avalon/guilds/588.xml')"/>

        </html>
           </xsl:template>

        was zu einer endlosen Rekursion führt.

        Gruß
        Franz

    4. hallo Martin,

      Und was soll diese Zeile bedeuten in dem XSL?
      <xsl:apply-templates select="document('http://www.camelot-europe.com/herald/servers/Avalon/guilds/588.xml')" />

      Das select-Attribut von xsl:apply-templates erwartet einen QName, keine Funktion, die ein Nodeset zurückliefert. Was erwartest du dir von der Konstruktion?

      http://www.w3.org/TR/xslt#document

      er erwartet von dieser funktion, dass er den wurzelknoten der verlinkten xml datei bekommt und dann so die (verlinkte) xml datei darstellen kann. sowas ist z.b. dann nützlich, wenn er nicht direkt in der (verlinkten) xml datei schreiben kann und/oder diese immer wieder überschrieben/aktualisiert wird.

      Grüße
      Thomas

      1. Hi Thomas,

        http://www.w3.org/TR/xslt#document

        hab die MSDN zu Rate gezogen *g*

        er erwartet von dieser funktion, dass er den wurzelknoten der verlinkten xml datei bekommt und dann so die (verlinkte) xml datei darstellen kann. sowas ist z.b. dann nützlich, wenn er nicht direkt in der (verlinkten) xml datei schreiben kann und/oder diese immer wieder überschrieben/aktualisiert wird.

        Ist aber IMO etwas komisch. Naja, ich lass sowas halt immer auf dem Server durch den Prozessor laufen. <?xml-stylesheet?> ist ziemlich nutzlos, wenn man dem User nicht vorschreiben kann, mit welchem Browser er kommt. Ist halt eher was für's Intranet.

        Gruß,
        Martin