Ben: XML Abfrage

Hallo,

ich habe sonst eigentlich nichts mit HTML und XML am Hut und will das ganze für eine Online-Rollenspieler Gildenpage machen ...

folgendes Problem, ich habe eine Seite (vom Spieleserver gestellt)

http://www.camelot-europe.com/herald/servers/Avalon//guilds/588.xml

dort stehen alle Informationen zu unserer Gilde ...

was ich machen will ist, eine character-seite auf unserer Homepage erstellen, die immer die aktuellen Daten unserer Charaktere enthält, welche ja in folgendem XML Dokument enthalten sind.

Ich habe in den tutorials hier auf der Seite auch schon gelesen, aber irgendwie ist das ziemlich viel Spanisch für mich ;)

ich habe jetzt angefangen eine Abfrage nach einem Beispiel hier von dieser Seite zu basteln, die sieht folgendermassen aus ...

Abfrage zu einem Char ("Chrisimah Abfrage.xml"):

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="choose.xsl">

<character>
<name>"Chrisimah"</name>
</character>

dazu gehört jetzt ja die wichtigste Sache ;) diese *.xsl Datei:

und damit habe ich Probleme ... :

Könnte mir jemand vielleicht über den Anfang hinweghelfen, und mir ein schnelles Beispiel schreiben, wie ich zu obigen Charakter meinetwegen den <guildrank> abfrage?

wenn ich einmal weiss wie es geht denke ich komme ich weiter ;)

Wäre Euch superdankbar ...

MfG Ben

  1. Schade,

    niemand da der sich damit gut auskennt?

    1. hallo,

      niemand da der sich damit gut auskennt?

      doch.
      aber du bildest dir doch nicht ein, dass hier jeder nur darauf wartet, dass deine hoheit mal sich dazu heablasst hier was zu posten, damit alle experten dieser welt sich alle hände und füße für dich ausreissen können?!?!

      also keep cool und warte mal vielleicht ein wenig. ja?!

      grüße
      thomas

      1. oh mann tut mir leid, ich hatte hier schonmal was gefragt, da kam die antwort ziemlich fix .. so 5 mins später

        1. hallo,

          oh mann tut mir leid, ich hatte hier schonmal was gefragt, da kam die antwort ziemlich fix .. so 5 mins später

          ja, aber bedenke was du fragst: "bastele mal mir schnell eine komplette xsl datei", so flott geht das nun mal nicht, wie eine kleine css frage.

          die frage ist wie und was du machen willst.
          ich gabe davon aus, dass du auf die von der verlinke xml datei "http://www.camelot-europe.com/herald/servers/Avalon//guilds/588.xml"
          keinen enfluss hast und dass du die darstellung clientseitig also vom browser (nur IE und Mozilla) ausführen lassen willst.
          also habe ich dir mal schnell was gebastelt.

          stelle die dateien auswertung.xml und ausvertung.xsl auf dmeinem webspace und dann kannst du direkt auf die auswertung.xml verlinken.
          den rest muss du schon alleine schaffen.

          -------auswertung.xml---------
          <?xml version="1.0" encoding="iso-8859-1"?>
          <?xml-stylesheet type="text/xsl" href="auswertung.xsl"?>
          <auswertung>
          </auswertung>
          -------------------------------

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

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

          <xsl:template match="guild_status">
                <head>
                 <title>Willkommen auf der Homepage der Gilde <xsl:value-of select="guild/@name" /></title>
                </head>
                <body>
                   <h1>Willkommen auf der Homepage der Gilde <xsl:value-of select="guild/@name" /></h1>
                   xsl:apply-templates/
                </body>
             </xsl:template>

          <xsl:template match="guild">
                <table width="100%" cellpadding="2" cellspacing="0" border="1">
                   <tr>
                      <td>
                         <img src="{@sshield}" />
                      </td>
                      <td>Name der Gilde:
                         <a href="{@wesiteurl}"><xsl:value-of select="@name" /></a>
                      </td>
                      <td>Realm: <xsl:value-of select="@realm" /></td>
                      <td>Aktive Charakters: <xsl:value-of select="@activechars" /></td>
                      <td>Aktive Mitglieder: <xsl:value-of select="@activemembers" /></td>
                      <td>guildrp: <xsl:value-of select="@guildrp" /></td>
                      <td>Kontakt:
                         <a href="mailto:{@contacturl}"><xsl:value-of select="@contacturl" /></a>
                      </td>
                      <td>Allianzen: <xsl:value-of select="@alliance" /></td>
                      <td>
                         <img src="{@semblem}" />
                      </td>
                   </tr>
                </table>
               <br />
               <br />

          <xsl:for-each select="character">
                <table width="90%" cellpadding="0" cellspacing="0" border="0">
                   <tr>
                      <th colspan="7" align="left"><xsl:value-of select="@name" /> (zuletzt online: <xsl:value-of select="@laston" />)</th>
                   </tr>
                   <tr>
                      <td>Rasse: <xsl:value-of select="race" /></td>
                      <td>Klasse: <xsl:value-of select="class" /></td>
                      <td>Level: <xsl:value-of select="level" /></td>
                      <td>Ranking: <xsl:value-of select="guildrank" /></td>
                      <td>Total RP: <xsl:value-of select="totalrp" /></td>
                      <td>RP letze Woche: <xsl:value-of select="lastweekrp" /></td>
                      <td>anon: <xsl:value-of select="anon" /></td>
                   </tr>
                </table>
                <br /><hr /><br />
               </xsl:for-each>
               <xsl:apply-templates select="alliancelist"/>

          <h1>Top-Spieler</h1>
               <xsl:apply-templates select="top"/>
             </xsl:template>

          <xsl:template match="alliancelist">
                <h1>Allianzen</h1>
                <xsl:for-each select="alliancemember">
                   <ul>
                   <li>Name: <xsl:value-of select="alname" /></li>
                   <li>ID: <xsl:value-of select="alguildid" /></li>
                   <li>RP: <xsl:value-of select="altotalrp" /></li>
                   </ul>
                </xsl:for-each>
             </xsl:template>

          <xsl:template match="top">
                <dl>
                 <dt>Tpye: <xsl:value-of select="@type" /></dt>
                   <xsl:for-each select="top_char">
                      <dd>Name: <xsl:value-of select="@name" /> - Punkte: <xsl:value-of select="@point" /></dd>
                   </xsl:for-each>
                </dl>
                <br />
             </xsl:template>

          </xsl:stylesheet>
          -----------------------

          grüße
          thomas

          1. krass ;)

            so hat ich das doch gar nicht gemeint ;)

            hatte doch nur an eine abfrage meinetwegen den rang oder so gedacht als Beispiel ;) da hab ich ja jetzt gar nichts mehr selbst zu tun

            Ich danke dir vielmals!!!

            werd mir das jetzt mal reinziehen, damit ich das nächstest mal selber kann ;))

            Nochmals Dank!

            Grüsse Ben

            1. hallo ben,

              so hat ich das doch gar nicht gemeint ;)

              da hab ich ja jetzt gar nichts mehr selbst zu tun

              doch ;-) jetzt kannst du experimenterien und dinge ausbrobieren. da kann man am besten lernen.

              Nochmals Dank!

              schon gut ;-)

              grüße
              thomas

              1. alles klar ;)

                und der link stimmt scho mit den 2 /'s
                wenn ich den wegmach wird er im borwser wieder hinzugefügt.

                und da war noch etwas ... du hattest irgendwo wesiteurl geschrieben, ich gehe mal davon aus, dass es websiteurl heisst oder?

                Grüsse Ben

              2. Achja hehe,

                hab noch gar nicht gesagt wie genial das funktioniert ;))

                jetzt werd ich mal das so umbasteln (versuchen) ;) dassich des zu jedem character einzeln abfrage ;)

                wünsch mir glück ...

                Grüsse Ben

            2. hallo, (nochmal)

              und gleich zwei fehler sind drinn:

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

              muss so der link auf deine xml datei richtig sein:
              http://www.camelot-europe.com/herald/servers/Avalon/guilds/588.xml
                                                        ^^^^
              also nur ein /

              und das zeite ist, es sit besser so zu machen:
              ------
                          <td>Name der Gilde:
                             <a>
                                <xsl:attribute name="href">
                                   <xsl:if test="not(contains(@websiteurl,'http'))">http://</xsl:if>
                                   <xsl:value-of select="@websiteurl" />
                                </xsl:attribute>
                             <xsl:value-of select="@name" />
                            </a>
                          </td>

              ------

              grüße
              thomas

              1. Hin Thomas..
                du scheinst dich mit xml ganz gut auszukennen... hab noch so meine Probs. in der Praxis.. kennst du eine Site oder Buch wo das ganze ein wenig mehr praktisch erklärt wird und nicht nur theoretisch.. xml is in der theorie so furchtbar unverständlich.. find ich halt

                lg Peter

                1. Hallo Peter,

                  du scheinst dich mit xml ganz gut auszukennen... hab noch so meine Probs. in der Praxis.. kennst du eine Site oder Buch wo das ganze ein wenig mehr praktisch erklärt wird und nicht nur theoretisch.. xml is in der theorie so furchtbar unverständlich.. find ich halt

                  wenn du mit xml noch gar nichts getan hast:
                  lese ersmal unter http://selfhtml.teamone.de/xml/index.htm nach (im netzt findest du auch sont viele mehr oder weniger gute tutorials, zumeist auf englisch). wenn du dann noch immer meinst, dass du rein gar nichts versehst, kannst du dir http://www.amazon.de/exec/obidos/ASIN/3826672011/qid=1031647415/sr=2-5/ref=sr_2_3_5/302-4600300-9141661 kaufen.

                  zu xsl:
                  im selfhtml kansst du ebenfalls nach nachlesen und dort findes du auch beispile, sont lann ich dir empfehlen (ok, nicht ganz uneigennützig *g*) http://www.amazon.de/exec/obidos/ASIN/3826672097/qid=1031647556/sr=1-1/ref=sr_1_2_1/302-4600300-9141661

                  grüße
                  thomas

          2. Hi Thomas,

            sorry dass ich nochmal nerve ...

            hab das jetzt mal ein wenig umgebastelt (versucht)

            ich wollte es jetzt so machen, dass zu jedem spieler eine einzelne Abfrage gemacht wird.

            das heisst z.B. eine Rowin.xml für den Spieler Rowin.
            Da wird dann in der Rowin.xml zwischen dem <auswertung> und </auswertung> Rowin übergeben ...

            quasi so:

            <?xml version="1.0" encoding="iso-8859-1"?>
            <?xml-stylesheet type="text/xsl" href="auswertung.xsl"?>
            <auswertung>
            Rowin
            </auswertung>

            das soll dann von der auswertung.xml gelesen werden und die soll dann den entsprechenden ein aus dem serverseitigen xml-file rauslesen und nur dazu die daten formatiert ausspucken.

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

            <xsl:template match="auswertung">
              <div>
                  <xsl:value-of select="." />
                  <xsl:variable name="char" select="." />
              </div>
              </xsl:template>

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

            <xsl:template match="guild">

            <xsl:for-each select="character/@name">
                  <xsl:variable name="cname" select="@name" />
                  <xsl:if test="char = cname">
                  <table width="90%" cellpadding="0" cellspacing="0" border="0">
                     <tr>
                        <th colspan="7" align="left"><xsl:value-of select="@name" />
                        </th>
                     </tr>
                     <tr>
                        <td>Rasse: <xsl:value-of select="race" /></td>
                        <td>Klasse: <xsl:value-of select="class" /></td>
                        <td>Level: <xsl:value-of select="level" /></td>
                        <td>Ranking: <xsl:value-of select="guildrank" /></td>
                        <td>Total RP: <xsl:value-of select="totalrp" /></td>
                        <td>RP letze Woche: <xsl:value-of select="lastweekrp" /></td>
                        <td>anon: <xsl:value-of select="anon" /></td>
                     </tr>
                  </table>
                  </xsl:if>
                  <br /><hr /><br />
                 </xsl:for-each>

            </xsl:template>

            </xsl:stylesheet>

            was habe ich da falsch gemacht? ;(

            krieg da nur ein weisses Bild ohne daten ...

            kannst da noch einmal schnell drüberschauen? sitz hier jetzt schon wieder ein paar stunden vor ...

            Dank dir

            Ben

            1. hallo ben,

              ich wollte es jetzt so machen, dass zu jedem spieler eine einzelne Abfrage gemacht wird.

              das heisst z.B. eine Rowin.xml für den Spieler Rowin.
              Da wird dann in der Rowin.xml zwischen dem <auswertung> und </auswertung> Rowin übergeben ...

              quasi so:

              <?xml version="1.0" encoding="iso-8859-1"?>
              <?xml-stylesheet type="text/xsl" href="auswertung.xsl"?>
              <auswertung>
              Rowin
              </auswertung>

              ändere das so ab:
              <?xml version="1.0" encoding="iso-8859-1"?>
              <?xml-stylesheet type="text/xsl" href="auswertung.xsl"?>
              <auswertung>
              <name>Rowin McAllister</name>
              </auswertung>

              (immer den wollen namen, so kann man sich eine weitere abfrage sparen)
              du kannst dann die einzelen xml-dateien bennen wie du willsts (also z.B. eben nach dem spielernamen), hauptsache jede bleibt vom aufbau her ähnlich.

              das soll dann von der auswertung.xml gelesen werden und die soll dann den entsprechenden ein aus dem serverseitigen xml-file rauslesen und nur dazu die daten formatiert ausspucken.
              was habe ich da falsch gemacht? ;(

              du hast zwei templates für auswertung erstellt.
              -------------------
              <?xml version="1.0" encoding="iso-8859-1"?>
              <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
              <xsl:variable name="name" select="/auswertung/name" />

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

              <xsl:template match="guild_status">
                    <head>
                     <title>Auswertung von <xsl:value-of select="$name" /></title>
                    </head>
                    <body>
                       <h1>Auswertung von <xsl:value-of select="$name" /></h1>
                       xsl:apply-templates/
                    </body>
                 </xsl:template>

              <xsl:template match="guild">
               <xsl:apply-templates select="character[@name = $name]"/>
                 </xsl:template>

              <xsl:template match="character">
                    <table width="90%" cellpadding="0" cellspacing="0" border="0">
                       <tr>
                          <th colspan="7" align="left"><xsl:value-of select="@name" /> (zuletzt online: <xsl:value-of select="@laston" />)</th>
                       </tr>
                       <tr>
                          <td>Rasse: <xsl:value-of select="race" /></td>
                          <td>Klasse: <xsl:value-of select="class" /></td>
                          <td>Level: <xsl:value-of select="level" /></td>
                          <td>Ranking: <xsl:value-of select="guildrank" /></td>
                          <td>Total RP: <xsl:value-of select="totalrp" /></td>
                          <td>RP letze Woche: <xsl:value-of select="lastweekrp" /></td>
                          <td>anon: <xsl:value-of select="anon" /></td>
                       </tr>
                    </table>
                    <br /><hr /><br />
                 </xsl:template>

              </xsl:stylesheet>
              ---------------------------------------------------
              du kannst diese datei auch anderes bennenen, haupsache du verlinkst die richtige in deinen xml-files.

              grüße
              thomas

              1. Vielen lieben Dank,

                kann es sein dass XML/XSL ziemlich genial ist? ;)

                Ich glaub ich werd mich da mal ein wenig mehr hinter hängen ...
                Hab gesehen du hast ein BUch darüber geschrieben? Schau ich mir mal an ;)

                Grüsse Ben

  2. Hallo,

    Tach,

    Abfrage zu einem Char ("Chrisimah Abfrage.xml"):

    <?xml version="1.0" encoding="UTF-8" ?>
    <?xml-stylesheet type="text/xsl" href="choose.xsl">

    <character>
    <name>"Chrisimah"</name>
    </character>

    dazu gehört jetzt ja die wichtigste Sache ;) diese *.xsl Datei:

    Welche?

    und damit habe ich Probleme ... :

    Könnte mir jemand vielleicht über den Anfang hinweghelfen, und mir ein schnelles Beispiel schreiben, wie ich zu obigen Charakter meinetwegen den <guildrank> abfrage?

    Nein, da keiner wissen kann, wie die Verschachtelung der Elemente ist. In Deiner angegebenen XML-Datei kommt kein Element namens guildrank vor.

    Andreas

    1. wie gesagt, is wahrscheinlich auch komplett falsch was ich da gmacht habe,

      http://www.camelot-europe.com/herald/servers/Avalon//guilds/588.xml

      von dieser URL will ich des alles Abfragen ...

      und da kommt guildrank vor

      und ich möchte zu jedem Namen die Daten auslesen

      Gruss Ben