Thursday, July 29, 2010

XSL with HTML escape character

บางครั้งการที่เราเขียน XSL ผ่าน Text Editor ธรรมดาก็ชวนให้ปวดหัวได้เหมือนกันครับ โดยเฉพาะเรื่องของ Html ที่ปนอยู่ XSL เพราะว่า XSL มีโครงสร้างทางภาษา based on XML ที่เมื่อมี start tag ก็ย่อมต้องมี end tag ในขณะที่ HTML มี element บางตัวเช่น meta หรือ br ส่วนของ end tag ถือว่า forbidden (อ้างตาม HTML 4.01 เค้า) แต่บางครั้งใน HTML เราจะเขียน <meta> หรือ เจ้า browser ต่างๆก็ไม่งงแต่อย่างใด แต่พอใส่แบบนี้เข้าไปใน XSL เจ้าตัว XSLT ก็ดัน process ออกมาให้เป็น ตามมาตรฐานซะนี้

ประการต่อมาบางครั้งเราเองก็อยากใส่ escape character ลงไปบ้างเช่น เว้นวรรค ก็จะเป็น ลองใส่ลงใน XSL สิครับ จะพบ error เนื่องจาก & ถือว่าเป็น escape character เหมือนกัน
ทั้งหลายทั้งปวงที่กล่าวมานี้สามารถแก้ไขได้ด้วย

<xsl:text disable-output-escaping="yes"></xsl:text>

ครับซึ่งถ้าเราอยากให้ html result เราเป็น <br/> ก็ใส่

<xsl:text disable-output-escaping="yes">&lt;br/&gt;</xsl:text>

หรือถ้าอยากให้เป็น &nbsp; ก็ใส่เป็น

<xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>

ว่ากันง่ายๆคือใช้ <xsl:text escaping="yes"> ร่วมกับการทำให้ตัวอักษรทุกตัวที่เป็น escape character กลายเป็นตัวที่เราใส่ escape เข้าไปให้แล้ว

No comments: