Mam niezły wtf, z którym nie mogę sobie poradzić. Piszę w PHP+AJAX prostą aplikacyjkę, która wczytuje z pliki XML i wyświetla je w sposób zdefiniowany w pliku XSL. Nie będę podawał całości, żeby nie zaśmiecać, jedynie najważniejsze informacje:
XMLe wyglądają mniej więcej tak:
<!-- początkowe tagi -->
<run>
<!-- główne tagi odpowiedzialne za wyświetlanie informacji w html -->
<max-prefix-depth depth="2"/> <!--to jest problematyczny tag -->
</run>
XSLT wykorzystuje ten tag max-depth-prefix-depth do określania kolorów tła drzewa wygenerowanego na podstawie xml. max-prefix-depth zawsze jest większe od zera.
<!-- poczatek przetwarzanie -->
<xsl:variable name="maxPrefixDepth">
<xsl:apply-templates select="//max-prefix-depth"/>
</xsl:variable>
<xsl:template match="run">
<!-- przetwarzanie xmla, wyswietlanie html -->
<body>
<!-- debug alert -->
<script type="text/javascript" language="JavaScript" >
alert("mpd: "+<xsl:value-of select="$maxPrefixDepth"/>);
</script>
<!-- ... -->
<!-- przetwarzanie xmla, wyswietlanie html -->
</xsl:template>
<!-- tutaj rozwiązywanie tego problematycznego taga -->
<xsl:template match="max-prefix-depth">
<xsl:choose>
<xsl:when test="@depth">
<xsl:value-of select="@depth"/>
</xsl:when>
<xsl:otherwise>
666
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Problem w tym, że mam sobie na przykład 3 pliki xml: w jednym max-prefix-depth jest równe 1, w drugim 2, w trzecim 6. Ale w tym drugim dostaję alert mpd=0 i przetwarzanie się przerywa w pewnym momencie (dzielenie przez zero itp).
Nie jestem doświadczony w tym temacie, jak to właściwie działa i czemu mi źle wczytuje ta zmienna.. Może ktoś ma jakieś rady i sugestie. Z góry dzięki.