- From: Felix Sasaki <fsasaki@w3.org>
- Date: Sat, 10 Aug 2013 11:38:07 +0200
- To: Nathan Glenn <garfieldnate@gmail.com>
- CC: Fredrik Liden <fliden@enlaso.com>, "public-i18n-its-ig@w3.org" <public-i18n-its-ig@w3.org>
- Message-ID: <520609FF.5030006@w3.org>
Sorry for missing the pointer Nathan. Here it is: http://www.w3.org/International/its/wiki/IssuesAndProposedFeatures just add a subsection of http://www.w3.org/International/its/wiki/IssuesAndProposedFeatures#Issues_and_Proposed_Features_.28For_updating_ITS_2.0.29 Best, Felix Am 09.08.13 21:34, schrieb Nathan Glenn: > Thanks. Is there a page on the Wiki for suggested edits to the spec? I > don't see anything on the list of pages > <http://www.w3.org/International/its/wiki/Special:AllPages>. > Nathan > > On Fri, Aug 9, 2013 at 7:55 AM, Felix Sasaki <fsasaki@w3.org > <mailto:fsasaki@w3.org>> wrote: > > Hi Nathan, > > Am 08.08.13 01:47, schrieb Nathan Glenn: >> Thanks for clearing this up for me, Felix and Fredrick. I think >> section 5.5 could use the beefed-up explanation that Fredrik >> provided for number three: inherit from closest parent, local >> beats global. (Like CSS) > > Good idea - do you want to add that to the wiki as well? > >> >> One more question on this. Section 5.5 says inheritance only >> applies to elements, but section 8.1 lists inheritance rules for >> child elements and attributes related to their "child notes". It >> sounds like they are saying different things, but I may be >> misunderstanding the text. Also, is that supposed to be "child >> nodes"? > > The inheritance rules have the perspective (in 5.5. and 8.1 and in > general) from the node that potentially inherits to its child > notes. So the column in 8.1. "Inheritance for elements nodes" is > about the question: if an element is selected via local markup or > a global rule - does the attached ITS information apply to the > nested elements or attributes? > > Hope that this helps. Of course explanation by example is not > sufficient, but the test suite might help here as well. You see a > lot of examples of inheritance by just browsing the output (and > comparing it to the input) > https://github.com/finnle/ITS-2.0-Testsuite/tree/master/its2.0/expected/ > https://github.com/finnle/ITS-2.0-Testsuite/tree/master/its2.0/inputdata/ > > Felix > > >> >> Nathan >> >> On Wed, Aug 7, 2013 at 12:12 PM, Fredrik Liden <fliden@enlaso.com >> <mailto:fliden@enlaso.com>> wrote: >> >> Hi Nathen and Felix, >> >> /, and ITS could get pretty clumsy. For example, there would >> be no way to set an entire Arabic document as right-to-left >> (//<its:dirRule selector="/*" dir="rtl">//or >> //selector="//*"//) and then mark the parent of several >> English elements with //its:dir="ltr"//./ >> >> Any rule with selector “/*” in effect disables the >> inheritance mechanism so it’s useful when that is what you >> really want to do and also in cases where perhaps you’re >> dealing with a category that doesn’t have any Inheritance >> (http://www.w3.org/TR/its20/#datacategories-defaults-etc). >> The default Directionality is “ltr” so in your case, similar >> to a Translate category use case, you could specify < >> its:dirRule selector="/somerootelement" dir=”rtl”>. Now all >> the child elements of <somerootelement> inherits “rtl” then >> you can mark your specific “parents” with its:dir=”ltr”. Now >> the marked parents and their children (through inheritance) >> have “ltr”. >> >> Looking at the processing steps Felix describes for Okapi, >> once the global and local rules have been applied in order >> of priority, for any given element/attribute you really only >> have: >> >> 1.Explicit rule value >> >> 2.Inherited rule value >> >> 3.Default rule value >> >> But for an implementer there order is: >> >> 1. Local markup >> >> 2. Global selectors >> >> 3. Inherited values (Inherited from nearest parent with >> either relevant local markup or global selectors. In cases >> where the parent has both local markup and global rules, >> inheritance from local markup has precedence (consistent with >> 1 and 2). But again, implementation-wise, once the rules have >> been applied there’s really no distinction. A little bit of >> the chicken and the egg perhaps. ) >> >> 4. Default values >> >> Fredrik >> >> *From:*Felix Sasaki [mailto:fsasaki@w3.org >> <mailto:fsasaki@w3.org>] >> *Sent:* Wednesday, August 07, 2013 12:53 AM >> *To:* Nathan Glenn >> *Cc:* public-i18n-its-ig@w3.org >> <mailto:public-i18n-its-ig@w3.org> >> *Subject:* Re: separating precedence of 2 types of inheritance >> >> Hi Nathan again, >> >> Am 07.08.13 05:42, schrieb Nathan Glenn: >> >> Hello again, >> >> I was wondering if I could ask a question about >> inheritance and precedence. Section 5.5 of the spec gives >> information on this, but leaves the proper implementation >> unclear in my mind. >> >> Implementing global selection makes a lot of sense to me >> because once rules are properly ordered, they can all be >> applied and later ones will overwrite older ones. >> However, it is less clear for inheritance. What I would >> like to think is that one could do the following in order >> to decide the ITS metadata for an entire document: >> >> 1. Apply default values. >> 2. Apply global selection via rules, one at a time, also >> applying inheritance for each one. Each rule >> application writes over any previous ones. >> 3. Apply selection via explicit local markup, and then >> the inheritance of this markup, overwriting any >> previously applied selections. Application would be a >> pre-order operation in a depth-first search (or >> something else that would cause selections for >> children to overwrite selections/inheritance via >> ancestors). >> >> However, the specification for precedence of selection >> from section 5.5 is: >> >> 1. local markup >> 2. global selectors >> 3. inherited values >> 4. default values >> >> >> Correct. >> >> >> The problem with this is that there are 2 types of >> inheritance: inheritance from global selections (example 13) >> and inheritance from local selections (example 11), and the >> given precedence order implies that they are both at the same >> level. >> >> >> They actually are at the same level. >> >> >> If they were, then implementation would be much less simple >> than the 3 step process outlined above >> >> >> >> There is a mismatch between your steps and the four types of >> inheritance. Your steps describe an algorithm how to process >> (your type of) inheritance. The four types of inheritance are >> "declarative": they don't presprice how to process ITS >> information, but only how the relation between the four types >> of information is. >> A simple algorithm to process the four types of inheritance >> could have two steps: >> >> 1) For the input document apply global rules taking their >> order into account ("the last rule wins"). Output: an XML / >> HTML DOM decorated with ITS information >> 2) Traverse the decorated DOM. For each node check if there >> is local markup and if yes apply that. If there is no local >> markup check if there is a decoration from step 1). If there >> is no decoration check for inherited values, then default values. >> >> Although 2) has several sub parts, I am saying "two steps" >> since you only need to process the document twice: decoration >> for global rules and traversing for the rest. If I recall >> correctly, the okapi ITS implementation uses that kind of >> approach. The second step then can be implemented in >> streaming mode and hence is relatively efficient. >> >> >> , and ITS could get pretty clumsy. For example, there would >> be no way to set an entire Arabic document as right-to-left >> (<its:dirRule selector="/*" dir="rtl"> or selector="//*") and >> then mark the parent of several English elements with >> its:dir="ltr". >> >> >> I see this rather as an issue that you can resolve by >> educating authors. Take CSS as an example: if authors have >> markup like this >> <!DOCTYPE html> >> <html> >> <head> >> <meta content="text/html; charset=UTF-8" >> http-equiv="content-type"> >> <title>Example of CSS inheritance</title> >> <style type="text/css"> >> span {color: red;} </style> >> </head> >> <body> >> <p><span style="color:blue;">blue, via local style >> attribute <span>red via >> global style element</span> </span></p> >> </body> >> </html> >> >> They know that the local style attribute does not inherit to >> the nested span, since the nested span is selected directly >> via a global CSS element. >> >> So rather than complicating the implementations and >> eventually how ITS markup authors have to understand >> inheritance, I would keep things as they are - relatively >> simple and aligned with well known CSS. >> >> >> You would have to set the direction on each individual >> element, or create another global selector and place it after >> the first. >> >> I think that the precedence order should probably be: >> >> 1. local markup >> 2. inherited local markup >> 3. global selectors >> 4. inheritance from global selectors >> 5. default values >> >> Provided it is correct, it makes it easier to see that a >> proper implementation of ITS is simply the reverse >> application of this list. One could even combine 1-2 and 3-4. >> >> I'm sorry if I'm way off on this. Could someone tell me if my >> understanding of precedence and inheritance is correct? >> >> >> I hope that above CSS example made this clear. >> >> Best, >> >> Felix >> >> Nathan >> >> > >
Received on Saturday, 10 August 2013 09:38:41 UTC