andres: PHP transformToXml funktioniert nicht mehr. Debugging-Tips

Beitrag lesen

Liebe alle,

ich benutze XSLT um die Gigs auf unserer Homepage nach Datum zu sortieren und nur Gigs nach <refdate> anzuzeigen. Eine Sortier- und Filter-Funktion.

Seit ein paar Tagen funktioniert das Skript nicht mehr bzw. liefert es mir einen leeren XML-String ($gigxmloutput). Ich verwende XSL nicht regelmäßig und es ist für mich nicht ersichtlich wo der Fehler liegt, zumal das Script die letzten zwei Jahre problemlos funktioniert hat.

Ich habe das Ganze auf http://www.xsltcake.com/ getestet. Auch hier erhalte ich als Ergebnis einen leeren XML-String : <gigs></gigs>. Ohne irgendwelche Fehlermeldungen. Deshalb tu ich mich schwer, bzw. ist es für mich nahezu unmöglich das Script zu debuggen.

Deshalb meine Frage an euch, ob jemand den Fehler erkennt, oder mir Tipps zum Debuggen von XSL geben kann?

XML-Sample (von php generiert. Variable $gigxml):
refdate dient dazu nur Gigs ab einem bestimmten Datum anzuzeigen.

  
<?xml version="1.0" encoding="UTF-8"?>  
<gigs>  
    <refdate>20141207</refdate>  
    <gig>					<id>3668</id>  
    <where>D- Stuttgart</where>  
    <title>20-Jahre MOUNTAINBIKE-Magazin.de</title>  
    <date>20.11.2014</date>  
    <time>20:30</time>  
    <hp>www.mountainbike-magazin.de</hp>  
</gig>  
<gig>  
    <id>3664</id>  
    <where>Bozen (Batzen Häusl)</where>  
    <title>Bierfest</title>  
    <date>26.09.2014</date>  
    <time>19:00</time>  
    <hp></hp>  
</gig>  
</gigs>

XSL (von php generiert. Variable: $gigxsl):

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">  
    <xsl:template match="/">  
        <gigs>  
            <xsl:for-each select="gigs/gig/date">  
                <!-- Sort Gigs by Date -->  
                <xsl:sort data-type="number" select="substring(.,7,4)">  
                    <xsl:sort data-type="number" select="substring(.,4,2)">  
                        <xsl:sort data-type="number" select="substring(.,1,2)">  
                            <!-- Display only feature gigs -->  
                            <xsl:variable name="isodate" select="concat(substring(.,7,4),substring(.,4,2),substring(.,1,2))">  
                                <xsl:if test="$isodate >  
                                    ancestor::gigs/refdate">  
                                    <gig>  
                                        <title>  
                                            <xsl:value-of select="parent::gig/title"></xsl:value-of>  
                                        </title>  
                                        <id>  
                                            <xsl:value-of select="parent::gig/id"></xsl:value-of>  
                                        </id>  
                                        <imgurl>  
                                            <xsl:value-of select="parent::gig/imgurl"></xsl:value-of>  
                                        </imgurl>  
                                        <date>  
                                            <xsl:value-of select="."></xsl:value-of>  
                                        </date>  
                                        <time>  
                                            <xsl:value-of select="parent::gig/time"></xsl:value-of>  
                                        </time>  
                                        <where>  
                                            <xsl:value-of select="parent::gig/where"></xsl:value-of>  
                                        </where>  
                                        <privat>  
                                            <xsl:value-of select="parent::gig/privat"></xsl:value-of>  
                                        </privat>  
                                        <hp>  
                                            <xsl:value-of select="parent::gig/hp"></xsl:value-of>  
                                        </hp>  
                                    </gig>  
                                </xsl:if>  
                            </xsl:variable>  
                        </xsl:sort>  
                    </xsl:sort>  
                </xsl:sort>  
            </xsl:for-each>  
        </gigs>  
    </xsl:template>  
</xsl:stylesheet>

PHP-Transformation:

$gigxmloutput = transform($gigxml, $gigxsl);  
  
function transform($xml, $xsl) {  
   $xslt = new XSLTProcessor();  
   $xslt->importStylesheet(new  SimpleXMLElement($xsl));  
   return $xslt->transformToXml(new SimpleXMLElement($xml));  
}

Vielen Dank im Voraus,

Andres