ปัญหาของ XSLT กับ DOCTYPE และ Internet Explorer

22. March 2009

นั่งแปลง SMS เก่าๆในเครื่องเพื่อนสาวจาก format ที่มันเป็น proprietory ของ Nokia ให้กลายเป็น XML ครับ จะได้เก็บได้ง่ายๆ อ่านง่ายๆบนคอม แต่ถ้าจะให้อ่าน XML ตรงๆคงโรแมนติกไปหน่อย จะให้เขียนโปรแกรมอ่าน XML มาแสดงให้สวยก็ขึ่ช้างจับตั๊กแตน นึกขึ้นมาได้ถึงงานเก่าอันนึงที่ใช้ XSLT ก็เลยเพิ่งคิดได้ว่ามันโคดตรงกับงานเลยนี่หว่า

ปรากฎว่าเขียน XSLT แล้วจัดหน้าใช้ Blueprint CSS พอแสดงใน IE แล้วมันไม่ค่อยได้ดั่งใจเท่าไหร่ มาทราบอีกทีว่าเป็นปัญหากับ Quirks Mode ของ IE คือมันจะแสดงโดยใช้ rule แบบเก่า (ก่อนที่ Browser ทั้งหลายจะเริ่มคลั่ง Standard กัน) ต้องระบุเพิ่มหากจะใช้ Strict Mode

การจะบังคับ IE ให้แสดงใน Strict Mode ต้องใส่พวก DOCTYPE ไว้ที่หัวด้วย (เพิ่งรู้จนตอนนี้ ปกติลอกเทมเพลตคนอื่นมา - -‘a) แล้วถ้าเขียน XSLT จะใส่ DOCTYPE ตรงไหนวะ ?

หลังจากค้นหาได้ผลลัพธ์ดังนี้

<xsl:stylesheet version="1.0">
<xsl:output method="html"
omit-xml-declaration="yes"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" indent="yes"/>

<xsl:template match="/">

<html lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Blueprint Sample Page</title>
<!-- Framework CSS -->
<link rel="stylesheet" href="./blueprint/screen.css" type="text/css" media="screen, projection"/>
<link rel="stylesheet" href="./blueprint/print.css" type="text/css" media="print"/>

<!--
[if IE]><link rel="stylesheet" href="./blueprint/ie.css" type="text/css" media="screen, projection"><![endif]
-->
<!-- Import fancy-type plugin for the sample page. -->
<link rel="stylesheet" href="./blueprint/plugins/fancy-type/screen.css" type="text/css" media="screen, projection"/>
:


สรุปว่าต้องเพิ่มแทก xsl:output ลงไป ปัญหาหายไปในทันที

General , ,

Comments

3/26/2009 3:46:36 AM #
ไม่เอา SMS มาลงให้ดูด้วยเหรอครับ

3/26/2009 4:08:21 PM #
@teerapap อันนั้นก็มากไป =)
Comments are closed