Von XSLT aus PHP-Funktionen aufrufen
Geizhals » Forum » Programmierung » Von XSLT aus PHP-Funktionen aufrufen (2 Beiträge, 57 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Von XSLT aus PHP-Funktionen aufrufen
03.10.2005, 14:54:44
Hallo!

In meiner Applikation transformiere ich Dokumente (z.B. Artikel) mittels der XSLT Funktionen von PHP. Dabei ist es notwendig ein paar PHP-Funktionen aus dem Stylesheet heraus aufzurufen.

Hier ein kleines Beispiel:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
  <xsl:output method="xml" encoding="utf-8" indent="no" omit-xml-declaration="yes"/>
  
  <xsl:template match="/">
    <h1><xsl:value-of select="php:function('bla','blubb')"/></h1>
  </xsl:template>
</xsl:stylesheet>

Der Funktionsaufruf klappt zwar wunderbar, hat aber zur ungünstigen Folge, dass das h1-Element den Namensraum von php erhält.

Das Ergebnis der Transformation wäre dann:

<h1 xmlns:php="http://php.net/xsl">Ergebnis von bla('blubb')</h1>

Da das Endergebnis als Fragment in eine XHTML 1.0-Seite eingefügt wird, ist es inakzeptabel, dass ein unbekannter Namensraum im Dokument vorhanden ist, was ja dazu führt, dass die Seite nicht mehr gültig im Sinne des W3C-Standards ist.

Wie kann man also dieses Verhalten unterdrücken? Muss ich einen extra Schritt implementieren, wo ich die Namensraumdeklarationen mit Hilfe von str_replace einfach entferne, oder geht das auch einfacher?

PS.: Hab schon Google, Google Groups und das W3C-Dokument über den XSLT-Standard ohne Erfolg dursucht.


"Indeed our end is nigh. So sow the seeds of discipline, piety and virtue and reap the reward on the following day."

Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung