- 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