But it only removes it for the element it’s added to — not the children elements. (I think…)
On Jan 10, 2016, at 5:42 PM, Alex Harui <aha...@adobe.com> wrote: > > > On 1/10/16, 7:35 AM, "Harbs" <harbs.li...@gmail.com> wrote: > >> Here’s an item in the spec which I’m having trouble understanding: >> >> When the [[AddInScopeNamespace]] method of an XML object x is called with >> a namespace N, the following steps are taken: >> 1. If x.[[Class]] ∈ {"text", "comment", "processing-instruction", >> “attribute”}, return >> 2. If N.prefix != undefined >> a. If N.prefix == "" and x.[[Name]].uri == "", return >> b. Let match be null >> c. For each ns in x.[[InScopeNamespaces]] >> i. If N.prefix == ns.prefix, let match = ns >> d. If match is not null and match.uri is not equal to N.uri >> i. Remove match from x.[[InScopeNamespaces]] >> e. Let x.[[InScopeNamespaces]] = x.[[InScopeNamespaces]] ∪ { N } >> f. If x.[[Name]].[[Prefix]] == N.prefix >> i. Let x.[[Name]].prefix = undefined >> g. For each attr in x.[[Attributes]] >> i. If attr.[[Name]].[[Prefix]] == N.prefix, let attr.[[Name]].prefix >> = undefined >> 3. Return >> >> I do not understand e through g. It looks like the spec says you are >> supposed to remove the prefixes of the XML which has the namespace added >> to it if the prefix matches the added namespace. Why would you do that? > > I don't know for sure. Maybe because they are now in scope, a prefix is > no longer needed? > > -Alex