- From: Philip Jägenstedt <notifications@github.com>
- Date: Thu, 12 Mar 2026 08:16:42 -0700
- To: whatwg/dom <dom@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/dom/pull/1454/c4047581981@github.com>
foolip left a comment (whatwg/dom#1454)
I've changed this to always use the HTML parser now. The constraints of wanting to support `<?marker name=x>` (without quotes) and not wanting the APIs to depend on context only leaves option 3 and 5 from https://github.com/whatwg/dom/pull/1454#issuecomment-4034420660, and reusing the HTML parser is the simplest of the two.
On lowercasing, I think this behavior might still be surprising:
```javascript
pi = new ProcessingInstruction('target', 'FOO=v1');
pi.getAttribute('foo') == 'v1'; // normal in HTML, no surprise
pi.setAttribute('FOO', 'v2');
pi.getAttribute('foo') == 'v1' && pi.getAttribute('FOO') == 'v2'; // unlike HTML, but OK
pi.data += ' ';
pi.getAttribute('foo') == 'v2' && !pi.hasAttribute('FOO'); // collapsed after roundtrip, surprise?
```
We could (1) live with it (2) lowercase in all APIs or (3) use a bespoke parser that preserves attribute case. Any of these would be OK for me.
If we stick with the HMTL parser, there's also a layering question remaining. Both "Parse HTML from a string" and "escaping a string" would need to be exported in HTML for this to work as-is, but I think it would be cleaner to add and export "parse attributes" and "serialize attributes" to HTML for this purpose.
--
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/dom/pull/1454#issuecomment-4047581981
You are receiving this because you are subscribed to this thread.
Message ID: <whatwg/dom/pull/1454/c4047581981@github.com>
Received on Thursday, 12 March 2026 15:16:46 UTC