Ik ben bezig met een PHP5+XSLT script-combootje om XHTML pagina's met daarin MathML voor XML-aware UA's aan te bieden als application/xhtml+xml (zoals FF), maar voor IE6 als text/html, HTML4.01 met MathPlayer 2 plugin.
Op Firefox werkt het allemaal al goed, op IE heb ik nog wat problemen met een namespace. Volgens de Mathplayer documentatie moet de "m" namespace van MathML gedeclareerd worden in het <html> element. XHTML vind dat alleen helemaal niet tof, dus laat ik m'n XSLT sheet bepalen of dat attribuut erin moet. Het resultaat moet er zo uit komen te zien:
Dus ik dacht, nou simpel, attribuutje toevoegen:
Maar nou krijg ik steeds dit als output:
Waarbij ns15 bij elke reload 1 ophoogd. Dat ik iets fout doe is me meer dan duidelijk, maar hoe ik dit nou op moet lossen snap ik niet. Ik heb zo het vermoeden dat ik dus een URL moet invullen voor de waarde van de ns, maar hoe zeg ik dan dat die "ns15 en hoger" gewoon "m" moet zijn. Want als ik namespace="http://www.w3.org/1998/Math/MathML" zeg in xsl:attribute, krijg ik dit:
Dit is ook weer helemaal dubbel (en het werkt niet). De reden dat het fout gaat is om dat het attribuut "m" juist een namespace is en die xmlns zit weer in de xml namespace. Maar hoe ik dit nou moet oplossen...geen flauw idee...anyone?
--- edit ---
nou, beetje rare oplossing gevonden:
geeft als output:
beetje vaag, maar het werkt wel...kan vast beter?
Op Firefox werkt het allemaal al goed, op IE heb ik nog wat problemen met een namespace. Volgens de Mathplayer documentatie moet de "m" namespace van MathML gedeclareerd worden in het <html> element. XHTML vind dat alleen helemaal niet tof, dus laat ik m'n XSLT sheet bepalen of dat attribuut erin moet. Het resultaat moet er zo uit komen te zien:
code:
1
| <html xmlns:m="http://www.w3.org/1998/Math/MathML"> |
Dus ik dacht, nou simpel, attribuutje toevoegen:
code:
1
2
3
4
5
6
7
8
9
10
| <xsl:param name="outputmethod" />
<xsl:template match="/">
<html>
<xsl:if test="$outputmethod ='html'">
<xsl:attribute namespace="xmlns" name="m">
http://www.w3.org/1998/Math/MathML
</xsl:attribute>
</xsl:if>
... |
Maar nou krijg ik steeds dit als output:
code:
1
| <html xmlns:ns15="xmlns" ns15:m="http://www.w3.org/1998/Math/MathML"> |
Waarbij ns15 bij elke reload 1 ophoogd. Dat ik iets fout doe is me meer dan duidelijk, maar hoe ik dit nou op moet lossen snap ik niet. Ik heb zo het vermoeden dat ik dus een URL moet invullen voor de waarde van de ns, maar hoe zeg ik dan dat die "ns15 en hoger" gewoon "m" moet zijn. Want als ik namespace="http://www.w3.org/1998/Math/MathML" zeg in xsl:attribute, krijg ik dit:
code:
1
| <html xmlns:ns17="http://www.w3.org/1998/Math/MathML" ns17:m="http://www.w3.org/1998/Math/MathML"> |
Dit is ook weer helemaal dubbel (en het werkt niet). De reden dat het fout gaat is om dat het attribuut "m" juist een namespace is en die xmlns zit weer in de xml namespace. Maar hoe ik dit nou moet oplossen...geen flauw idee...anyone?
--- edit ---
nou, beetje rare oplossing gevonden:
code:
1
| <xsl:attribute namespace="http://www.w3.org/1998/Math/MathML" name="m:m"></xsl:attribute> |
geeft als output:
code:
1
| <html xmlns:m="http://www.w3.org/1998/Math/MathML" m:m=""> |
beetje vaag, maar het werkt wel...kan vast beter?
[ Voor 16% gewijzigd door Genoil op 31-08-2004 17:38 ]