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.