Re: RFE: Make it more convenient to use xml:lang in HTML and XHTML
Leif H Silli <[email protected]> Thu, 04 May 2023 20:05:37 +0200
| Newsgroups | gmane.editors.xxe.general |
|---|---|
| Organization | Lenk.no/Silli |
| Message-ID | <[email protected]> |
Great! Made my day hearing that! Leif Den 2023-05-04 12:33 skreiv Hussein Shafie: > We'll try to implement in the next version of XXE what you call "the > third alternative" in the email below and explain in greater details > in your following email. > > We'll do this even if the XInclude standard completely ignores the > lang attribute. It's either doing this or tolerating having an > inconsistent XInclude implementation when used in the context of > (X)HTML documents. > > > On 5/4/23 00:39, Leif H Silli wrote: >> XMLmind XML Editor (XXE) is an - eh - XML editor. But as XHTML is >> typically consumed as text/HTML, in practise it is also a HTML editor. >> >> XHTML has always had a 'complicated' relationship to xml:lang. It >> seems like everyone really wants to just use lang - or at least use >> just one attribute (which would have had to be lang). But - either - >> in order to "look good" - or - in order to use XML tooling (which is >> rumoured to not support lang), it is customary to put upon oneselves >> the burdon of adding both lang and xml:lang. This was recommended back >> in 1998 when XHTML 1 was released. And it was also recommended by the >> polyglot HTML draft (even if, in my heart, I did not want to require >> both attributes). >> >> Context: As for tooling, then we see this in XXE itself; When working >> with XInclude, it turns out that @lang is ignored - only xml:lang is >> respected and counted. (I might write a separate RFE or BUG about >> that.) The consequence being that if, via XInclude, you embed >> >> <section lang="en" id="sect01" /> >> >> then the way XXE implements what XInclude calls 'language fixup' >> causes the above element to be embedded as if the language property is >> unknown, which (as of XXE 10.4) means that XXE adds xml:lang="" to the >> embedded element: >> >> <section xml:lang="" id="sect01" /> >> >> And, if it does not delete the lang attribute, we even get this: >> >> <section xml:lang="" lang="en" id="sect01" /> >> >> Which means that XInclude has created a document which is invalid, >> since, when both xml:lang and lang are used, they must be in >> agreement. Clearly, this behavior is wrong - on many levels. (A >> separate bug about this will probably be written.) >> >> However, this message is not about how XInclude is implemented, but >> about making it more convenient to apply xml:lang in XHTML and HTML >> documents. And the (current) need to use xml:lang warrants that it >> should be simpler. >> >> I see two ways to make it simpler: EITHER add some form of automation: >> When someone adds or edits the lang attribute, then xml:langs is added >> and/or edited, automatically, in parallell. OR offer xml:lang in the >> default list of attributes to select from. (Clearly I prefer the >> automated variant.) AND a third option: Decrease the need to use >> xml:lang. >> >> So as of today, when authoring HTML or XHTML docuemnts, the lang >> attribute is by default visible inside the Attribute editor. Just >> click on the attribute name, and add the value. Whereas for xml:lang, >> you must either manually type the name of the attribute before you can >> select it, or you can change the defaults (on the fly) so that so >> called xml attributes are also visible. (But this also makes xml:base >> and xml:space visible. ) >> >> But the third alternative is what I prefer the most: Decrease the need >> to use xml:lang. For instance, by changing the implementation of >> XInclude so that lang is treated like xml:lang (and/or so that >> xml:lang is kept in sync with lang). >> > > > > > On 5/4/23 01:36, Leif H Silli wrote: >> The relase notes for XXE 10.4 refers to language fixup in XInclude >> 1.1. I must first start be exolaining why we should not give too much >> heed to what XInclude 1.0 or 1.1 says about language properties. >> >> XInclude need an update. XInclude 1.1 is a Working Groupn Note from >> 2016 [1], while the final version of a Recommended spec, XInclude 1.0, >> is from 2006 [2]. >> >> The Note from 2016 includes some innovations such as set-xml-id >> (though it should probably also have had a set-id attribute as well). >> But at the same time, when it comes to language properties, the spec >> that it references, IETF RFC 3066, published in 2001, was outdated >> when the Note was published: The current best practise for language >> tagging, was specified in 2009 - seven years before the Note was >> finished [3]. >> >> The work on HTML5 begun around 2006, when the first XInclude was >> published. In HTML4, the lang attribute behaved different from the >> xml:lang attribute. But in HTML5, which implements BCP 47, the >> specification of lang has been 'updated' so that lang and xml:lang >> work the same (the only difference being that xml:lang only works when >> consumed as XML). >> >> So the Working Group Note from 2016 does not pick up all the changes >> that happened to HTML and language tagging since 2006. Perhaps that is >> the reason why XInclude only talks about xml:lang and not about lang? >> XInclude seems to have been created in the spirit of XHTML 1.0, when >> the attitude was that we will soon kill text/html. And so, for >> example, XInclude 1.1’s section on Language Fixup from 2016, is >> identical with XInclude 1.0’s section on Language Fixup from 2006. >> >> Instead, we have ended up with situation where we try to keep HTML as >> XML and HTML as text/html as much as possible in sync. In sync, but >> different. >> >> It does therefore not make sense anymore that XInclude only considers >> xml:lang and ignore lang. >> >> XMLmind XML Editor version 10.,4 is an exmple of this. Per the relase >> notes [4], XXE 10.4 “Made the language fixup of the XInclude 1.1 >> implementation more conforming to the specification.“. (As I mentioned >> above, the language fixup of XInclude 1.1 [5] is identical with the >> language fixup of XInclude 1.0 [6], so - sorry to say it, but - the >> reference to XInclude 1.1 here, simply gives appearans of being an up >> to date reference.) >> >> So what is the change in 'language fixup' that has been added in XXE >> 10.4? Here is an example: >> >> When working with XInclude, it turns out that XXE ignores @lang - only >> xml:lang is respected and counted. The consequence being that if, via >> XInclude, you embed into another element the following element, >> >> <section lang="en" id="sect01" /> >> >> then the way XXE implements 'language fixup' causes the above element >> to be embedded as if the language property is unknown, which (as of >> XXE 10.4) means that XXE adds xml:lang="" to the embedded element: >> >> <section xml:lang="" id="sect01" /> >> >> And, if it does not delete the lang attribute, we even get this: >> >> <section xml:lang="" lang="en" id="sect01" /> >> >> (Sometimes the @lang is deleted, other times it is not, I am not yet >> certain about when what happens - but both things are meaningless.) >> >> Which means that XXE 10.4’s implementation of XInclude has created a >> document which is invalid, since, when both xml:lang and lang are >> used, they must be in agreement. Also, it has failed to take the >> lang="en" attribute into account, thus loosing information. Further >> more, if the end result - the resulting document of the xinclusion - >> is meant for consumption by text/HTML consumers, then text/HTML >> consumers do not understand the xml:lang attribute etc. >> >> Solution: The solution is to treat @lang and xml:lang equally. Thus in >> the example above, the result would have become this: >> >> <section lang="en" id="sect01" /> >> >> Or (if you want to consider that not all Xinclude processors - if >> anyone at all - handle the lang attribnuite) this: >> >> <section lang="en" xml:lang="en" id="sect01" /> >> >> >> [1] https://www.w3.org/TR/xinclude-11/ >> [2] https://www.w3.org/TR/xinclude/ >> [3] https://www.ietf.org/rfc/bcp/bcp47.txt >> [4] https://xmlmind.com/xmleditor/changes.html#v10.4.0 >> [5] https://www.w3.org/TR/xinclude-11/#language >> [6] https://www.w3.org/TR/xinclude/#language > > > > > -- > XMLmind XML Editor Support List > [email protected] > http://www.xmlmind.com/mailman/listinfo/xmleditor-support -- XMLmind XML Editor Support List [email protected] http://www.xmlmind.com/mailman/listinfo/xmleditor-support