tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
1197
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Clause Clause ist offline Grünschnabel
    Registriert seit
    May 2006
    Beiträge
    2
    Versuche gerade eine xml per XSL umzuformatieren.

    Die Struktur der der XML ist aus Wordpress ist von oben so:

    -------
    rss
    - channel
    - title
    ...
    - item (Je Artikel)
    ....
    - postmeta (Benutzerdefinierte Felder)
    - meta_key (Name des Benutzerdefinierten Feldes)
    - meta_value (Inhalt des Benutzerdefinerten Feldes)
    sehr viele postmetas ...
    - item
    ...

    ------------

    Was ich jetzt vor habe, das ich jeden Artikel als extra xml Tag habe und das die vielen Benutzerdefinierten Felder (postmeta) in Benutzerdefinierte Tags gewandelt werden.

    Was ich jetzt versucht habe war folgendes:
    PHP-Code:
    <?xml version="1.0" encoding="UTF-8"?>

    <xsl:stylesheet version = "2.0"
    xmlns:n1="http://www.w3.org"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
        xmlns:excerpt="http://wordpress.org/export/1.1/excerpt/"
        xmlns:content="http://purl.org/rss/1.0/modules/content/"
        xmlns:wfw="http://wellformedweb.org/CommentAPI/"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:wp="http://wordpress.org/export/1.1/"
        xmlns:pubDate="Wed, 02 Dec 2009 22:58:22 +0000">

    <xsl:output method="xml" version="1.0" encoding = "UTF-8" indent="yes"/>
    <xsl:template match="/">
        <xsl:element name = "root">
    <xsl:apply-templates select="rss/channel/item"/></xsl:element>
    </xsl:template>


    <xsl:template match="item">

     <xsl:element name = "Artikel">
      <xsl:element name = "vs">
        <xsl:element name = "titel"><xsl:value-of select="title"/></xsl:element>
          <xsl:element name = "test"><xsl:value-of select="category"/></xsl:element>

        <xsl:for-each select="postmeta">
            <xsl:element name = "benutzerdef1"><xsl:if test="postmeta/meta_key/@text()='benutzerdef1'"><xsl:value-of select="postmeta/meta_value/text()"/></xsl:if></xsl:element>
            <xsl:element name = "benutzerdef2"><xsl:if test="postmeta/meta_key/@text()='benutzerdef2'"><xsl:value-of select="postmeta/meta_value/text()"/></xsl:if></xsl:element>
        </xsl:for-each>

         </xsl:element>

      </xsl:element>    
                
    </xsl:template>
    </xsl:stylesheet>>
    Aber sobald ich die "for-each" Schleife drin hab möchte er nicht mehr...

    Wo liegt da mein Fehler?
    Hat mir jemand einen Tip?
    Er muss jetzt eigentlich im Feld metakey schauen, ob da "Benutzerdef1" drin steht, wenn ja, dann gib das jeweilige Feld aus...
    Wie würdet Ihr das machen?


    Ich will von
    PHP-Code:
    <wp:postmeta>
                <
    wp:meta_key>Benuterdefiniert1</wp:meta_key>
                <
    wp:meta_value>In Wordpress defineirter Wert</wp:meta_value>
            </
    wp:postmeta
    zu diesem kommen
    PHP-Code:
    <Benuterdefiniert1>In Wordpress defineirter Wert</Benuterdefiniert1
    Geändert von Clause (23.07.11 um 10:32 Uhr)
     

  2. #2
    Clause Clause ist offline Grünschnabel
    Registriert seit
    May 2006
    Beiträge
    2
    OK, ich habe nach einigem rumprobieren eine Lösung gefunden.

    PHP-Code:
    <!-- Zuerst habe ich eine Variable definiert mit dem Abzufragenden Ergebnis -->
    <
    xsl:variable name="WasSuchen" select="'BenutzerdefiniertesFeld1'" />

    <!-- 
    Dann eine Schleife um das "wp:postmeta" -->
    <
    xsl:for-each select="wp:postmeta">
    <
    xsl:if test="$WasSuchen = wp:meta_key/text()">
    <
    xsl:element name "BenutzerdefiniertesFeld1">
    <
    xsl:value-of select="wp:meta_value/text()"/>
    </
    xsl:element>
    </
    xsl:if>
    </
    xsl:for-each
     

Ähnliche Themen

  1. Microsoft Outlook, Mails holen und dann vom anderen Rechner
    Von Schumiel im Forum Office-Anwendungen
    Antworten: 1
    Letzter Beitrag: 23.03.10, 21:52
  2. 2 Abfragen aus 2 tabellen und dann in einer wieder geben?
    Von harderph im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 28.01.08, 22:04
  3. Antworten: 3
    Letzter Beitrag: 08.05.05, 17:10
  4. Antworten: 2
    Letzter Beitrag: 01.10.04, 21:24
  5. Wenn id = 0 dann in anderen Tabellen löschen
    Von Mimolino im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 29.03.04, 08:47

Stichworte