mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 28.03.2024 10:51 Benutzername: Passwort: Auto-Login

Thema: XML in PHP einlesen (parsen) und Inhalte ausgeben. vom 29.03.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> XML in PHP einlesen (parsen) und Inhalte ausgeben.
Seite: Zurück  1, 2, 3, 4, 5
Autor Nachricht
Account gelöscht


Ort: -
Alter: -
Verfasst Mi 30.03.2005 22:47
Titel

Antworten mit Zitat Zum Seitenanfang

ich bin ein volltrottel und machs jetzt ganz anders... * Wo bin ich? *
 
Account gelöscht


Ort: -
Alter: -
Verfasst Do 31.03.2005 00:17
Titel

Antworten mit Zitat Zum Seitenanfang

lol sry das war echt ein wenig doof^^ es *geht* aber nach ein paar hundert zeilen hatte ich echt keine lust mehr, man verrennt sich da einfach in zu viele unwägbarkeiten, wenn man das flexibel halten muss. also: (PHP5, das in 4 umzumodeln geht, ist aber frustig, weil man immer wieder die pfadangaben beim serverwechsel updaten muss => frag evtl deinen programmierer).

gib mir deine mail dann kann ich dir auch ne zip schicken.

seite1.xsl:
Code:
<?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="/">
<html>
    <head><title>Erste Seite</title></head>
    <body>
        <!-- Content -->
        <ul>
        <xsl:for-each select="Content/Produktgruppe">
        <xsl:sort select="@Name" order="ascending" data-type="text"/>

                <li>grp <xsl:value-of select="@ID"/>: <a href="index.php?grpId=$Gruppe">
                        <xsl:attribute name="href">index.php?grpId=<xsl:value-of select="@ID"/></xsl:attribute>
                        <xsl:value-of select="@Name"/></a></li>
           
        </xsl:for-each>
        </ul>
    </body>
</html>
</xsl:template>

</xsl:stylesheet>


seite2.xsl:
Code:
<?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="/">
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<html>
    <head><title>Erste Seite</title></head>
    <body>
        <!-- Content -->
        <ul>
        <xsl:apply-templates />
        </ul>
    </body>
</html>
</xsl:template>
<xsl:template match="Content/Produktgruppe">
        <li>grp <xsl:value-of select="@ID"/>: <a>
                        <xsl:attribute name="href">javascript:history.back();</xsl:attribute>
                        <xsl:value-of select="@Name"/></a></li>
                        <ul>
                        <xsl:for-each select="Produkt">
                            <li><a><xsl:attribute name="href">index.php?grpId=<xsl:value-of select="../@ID"/>&amp;artId=<xsl:value-of select="@ID"/></xsl:attribute>ArtId: <xsl:value-of select="@ID"/></a>
                            (Produkte können bei bed. ausgeblendet und nur der entspr. benötigte Textlink angezeit werden)</li>
                            <ul>
                            <xsl:for-each select="./*">
                                <li><xsl:value-of select="name(.)"/>: <xsl:value-of select="." /></li>
                            </xsl:for-each>
                            </ul>
                        </xsl:for-each>
                        </ul>
                       
</xsl:template>
</xsl:stylesheet>


seite3.xsl:
Code:
<?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="/">
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<html>
    <head><title>Erste Seite</title></head>
    <body>
        <!-- Content -->
        <ul>
        <xsl:apply-templates />
        </ul>
    </body>
</html>
</xsl:template>
<xsl:template match="Content/Produktgruppe">
        <li>grp <xsl:value-of select="@ID"/>: <a>
                        <xsl:attribute name="href">javascript:history.back();</xsl:attribute>
                        <xsl:value-of select="@Name"/></a><br/>Was sonst noch hier?</li>
                        <!--ul>
                        <xsl:for-each select="Produkt">
                            <li><a><xsl:attribute name="href">index.php?grpId=<xsl:value-of select="../@ID"/>&amp;artId=<xsl:value-of select="@ID"/></xsl:attribute>ArtId: <xsl:value-of select="@ID"/></a>
                            (Produkte können bei bed. ausgeblendet und nur der entspr. benötigte Textlink angezeit werden)</li>
                            <ul>
                            <xsl:for-each select="./*">
                                <li><xsl:value-of select="name(.)"/>: <xsl:value-of select="." /></li>
                            </xsl:for-each>
                            </ul>
                        </xsl:for-each>
                        </ul-->
                       
</xsl:template>


</xsl:stylesheet>


index.php:
Code:
<?
function checkFiles() {
    $grpId = $_GET["grpId"];
    $artId = $_GET["artId"];
   
    if ($artId) {
        $xmlfile = "http://www.uk-consult.de/content/contentmanagement/content2xml.asp?num=18661&Produktgruppe={$grpId}&Produkt={$artId})";
        $xslfile = "seite3.xsl";
        $name = "{$artId}-{$grpId}-".time().".html";
    }
    elseif ($grpId) {
        $xmlfile = "http://www.uk-consult.de/content/contentmanagement/content2xml.asp?num=18661&Produktgruppe={$grpId}";
        $xslfile = "seite2.xsl";
        $name = "{$grpId}-".time().".html";
    }
    else {
        $xmlfile = "http://www.uk-consult.de/content/contentmanagement/content2xml.asp?num=18661";
        $xslfile = "seite1.xsl";
        $name = "index-".time().".html";
    }
    parse($xmlfile, $xslfile, $name);
}
function parse($xmlfile, $xslfile, $name) {
   // PHP5 funktionen, PHP 4 oder andere Sprache bitte ergänzen
   if (!file_exists($name)) {
       
       // noch weitere cachefunktionen einbauen (zeitlimit)
       $xsl = new DOMDocument;
       
       $xsl->load($xslfile);
       
       $xslt = new XSLTProcessor();
       $xslt->importStylesheet($xsl);
   
       $xml = new DOMDocument;
       $xml->load($xmlfile);
       
       
       $results = $xslt->transformToURI($xml, $name);
       $results = $xslt->transformToXML($xml);
       echo $results;
       //$results = $xslt->transformToDoc($xml);
    }
    else {
        $file = implode('', file($name));
        echo $file;
       
    }
   
}


checkfiles();
?>


geht vielleicht noch besser, ist mein erstes mal mit xsl... wer weiß, warum der keine variablen im stylesheet parst?


Zuletzt bearbeitet von am Do 31.03.2005 00:26, insgesamt 4-mal bearbeitet
 
Anzeige
Anzeige
Kash
Threadersteller

Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht: Männlich
Verfasst Do 31.03.2005 07:42
Titel

Antworten mit Zitat Zum Seitenanfang

morgen XSchinkenX,
ich danke dir für die Mühe.
Ich werde sehen was ich damit nun alles anfangen kann.

Danke.
  View user's profile Private Nachricht senden
Kash
Threadersteller

Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht: Männlich
Verfasst Do 31.03.2005 08:49
Titel

Antworten mit Zitat Zum Seitenanfang

ähm... wo bekomme ich den XSLTProcessor her?

bekomme fehlermeldung das er das stylesheet nicht laden kann.
  View user's profile Private Nachricht senden
Account gelöscht


Ort: -
Alter: -
Verfasst Do 31.03.2005 09:13
Titel

Antworten mit Zitat Zum Seitenanfang

Welche PHP Version benutzt du? PHP5 oder 4?

Das Skript läuft auf PHP 5 (LibXSL), PHP4 nutzt die Sablotron-Bibliothek, die mit Pfaden so ihre Probleme hat. Sie verwendet als Ausgangspunkt NICHT dein Webroot, sondern den Ordner des XSL-Parsers. Du musst dann xslt_set_base() verwenden, um den Ordner zu switchen.

Jedenfalls: Hast du die Fehlermeldung, ist der Prozessor mit installiert. Ansonsten würdest du ne Meldung bekommen, dass es die entspr. Funktionen nicht gibt.
 
 
Ähnliche Themen [solved]Einlesen und ausgeben einer TXT Datei.
XML mit Javascript parsen
xml laden und parsen in *.as
Parsen von datei php
[PHP]Problem bei Parsen vom XML-Daten
PHP -> XML Parsen - Pro Zeile jeweils 3 Ausgaben!
Neues Thema eröffnen   Neue Antwort erstellen Seite: Zurück  1, 2, 3, 4, 5
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.