[GastForen Programme Print/Bildbearbeitung Adobe InDesign XSL-T konvertierung in verschachtelten Ebenen aus Wordpress

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

XSL-T konvertierung in verschachtelten Ebenen aus Wordpress

Clause
Beiträge gesamt: 28

26. Jul 2011, 17:24
Beitrag # 1 von 2
Bewertung:
(959 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, ich habe folgendes Problem:
Ich möchte aus einem Wordpress-Blog die Exportierte XML-Datei nehmen und in InDesign weiterverarbeiten.
Problem ist, dass dort einige Benutzerdefinierte Felder angelegt sind.

Die Struktur ist wie folgt:

Code
... 
|- wp:postmeta
| |- meta_key (dort steht die Benennung des Benutzerdefinierten Feldes)
| |- meta_value (dort steht der Inhalt des Benutzerdefinierten Feldes)
|
|- wp:postmeta
| |- meta_key (dort steht die Benennung des Benutzerdefinierten Feldes)
| |- meta_value (dort steht der Inhalt des Benutzerdefinierten Feldes)
|
|- wp:postmeta
| |- meta_key (dort steht die Benennung des Benutzerdefinierten Feldes)
| |- meta_value (dort steht der Inhalt des Benutzerdefinierten Feldes)
...


Jetzt gibt es ein Benutzerdefiniertes Feld, dass z.B. eine Kategorie wählen lässt.
(z.B. Fahrrad oder Auto) und ein Benutzerdefiniertes Feld ist ein Datum.

Jetzt möchte ich haben, dass das XSL-Script abfragt nach der Kategorie und dann dementsprechend das Tag-Element vergibt.

Beispiel:
Code
... 
|- wp:postmeta
| |- meta_key (Kategorie)
| |- meta_value (Auto)
|
|- wp:postmeta
| |- meta_key (Datum)
| |- meta_value (12.12.)
...


Soll Ausgeben:

Code
... 
<Auto>12.12.</Auto>


Hat mir jemand einen Tipp, wie ich das angehen kann?

Momentan sieht mein Code wie folgt aus, aber innerhalb der if-Schleife lässt er keine Variablen zu...

Code
<xsl:element name = "Seminar"> 
<!-- Seminarnummer abfragen -->
<xsl:for-each select="wp:postmeta">
<xsl:if test="'Seminarnummer' = wp:meta_key/text()"><xsl:element name = "Seminarnummer"><xsl:value-of select="wp:meta_value/text()"/></xsl:element></xsl:if>
<!-- Seminarrubrik abfragen -->
<xsl:variable name="SemRub">
<xsl:if test="$Seminarrubrik = wp:meta_key/text()">
<xsl:if test="wp:meta_value/text() = 'Rubrikname1'">DatumRubrik1</xsl:if>
<xsl:if test="wp:meta_value/text() = 'Rubrikname2'">DatumRubrik2</xsl:if>
<xsl:if test="wp:meta_value/text() = 'Rubrikname3'">DatumRubrik3</xsl:if>
<xsl:if test="wp:meta_value/text() = 'Rubrikname4'">DatumRubrik4</xsl:if>
</xsl:if>
</xsl:variable>
<!-- Datum abfragen und Seminarrubrik dazufuegen als TAG -->
<xsl:if test="wp:meta_key/text() = 'Termin1"><xsl:element name = "$SemRub"><xsl:value-of select="wp:meta_value/text()"/></xsl:element></xsl:if>
<xsl:if test="wp:meta_key/text() = 'Termin2'"><xsl:element name = "$SemRub"><xsl:value-of select="wp:meta_value/text()"/></xsl:element></xsl:if>
<xsl:if test="wp:meta_key/text() = 'Termin3'"><xsl:element name = "$SemRub"><xsl:value-of select="wp:meta_value/text()"/></xsl:element></xsl:if>
<xsl:if test="wp:meta_key/text() = 'Termin4'"><xsl:element name = "$SemRub"><xsl:value-of select="wp:meta_value/text()"/></xsl:element></xsl:if>
<xsl:if test="wp:meta_key/text() = 'Termin5'"><xsl:element name = "$SemRub"><xsl:value-of select="wp:meta_value/text()"/></xsl:element></xsl:if>
</xsl:for-each>
</xsl:element>

X

XSL-T konvertierung in verschachtelten Ebenen aus Wordpress

Neil77
Beiträge gesamt: 287

28. Jul 2011, 14:06
Beitrag # 2 von 2
Beitrag ID: #477068
Bewertung:
(884 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

das Problem liegt wohl hier:
Code
<xsl:element name = "$SemRub"> 

das musst du durch:
Code
<xsl:element name = "{$SemRub}"> 

ersetzen, damit der Wert der Variable genommen wird (und nicht der String "$SemRub", der als ungültiger QName einen Fehler erzeugt).

Noch zwei Hinweise:
- bei einem Vergleich mit einem String reicht wp:meta_value statt wp:meta_value/text() aus.
- Und schau dir doch mal die Syntax für <xsl:choose><xsl:when/><xsl:otherwise/> ... an. Das ist meistens eleganter und flexibler als die gereihten ifs.

Grüße, Martin


als Antwort auf: [#476883]