在 IE 中以 POST 請求載入 XML 時出現「屬性值中不能使用字符 '<'. 第 1 行,位置 218」,而 Chrome/Firefox 正常。這是典型的 XML 編碼缺失問題,IE 的 MSXML 解析器比其他瀏覽器更嚴格。
XML 標準規定:屬性值與元素內容中的 '<', '>', '&', ''', '"' 必須實體化轉義。若伺服器回傳的 XML 直接包含未轉義的 <(如 <note title="a<b">),IE 會拋出此錯誤並拒絕渲染。
XmlWriter / XElement 自動轉義。StringEscapeUtils.escapeXml11() (Apache Commons Text) 或 javax.xml.bind。htmlspecialchars($str, ENT_XML1 | ENT_QUOTES, 'UTF-8')。xml.sax.saxutils.escape(data, {'"': '"', \"'\": '''})。
< 替換為 <,> → >,& → &。注意順序:先轉 &,再轉其他,避免二次轉義。<![CDATA[ ... ]]> 中,但屬性值不可用 CDATA。< 會嘗試修正並繼續渲染,僅在主控台輸出警告。1. 抓取原始回應(F12 Network → Response),搜尋未轉義的 < 或 &
2. 確認 Content-Type: application/xml 或 text/xml
3. 檢查伺服器序列化代碼是否使用標準 XML API
4. 若為舊系統無法修改伺服器,考慮在前端用 XSLT/JS 預處理再交給 IE
修正 XML 實體編碼後,IE 即可正常載入並套用 XSL 樣式表。建議建立自動化測試,驗證所有 XML 輸出端點符合 Well-formed 標準,杜絕此類瀏覽器相容性問題。