After some thinking, I suggest more specific statement
in [IDNA] to explain its relationship with [nameprep]:


On Fri, 17 Aug 2001 18:03:23 -0700 [EMAIL PROTECTED] writes:
> Hi, Paul:
> 
> I suggest the following procedure specification 
> adds to [IDNA], this is only an idea, while I have no 
> intention to put proper words in the document.
> 
> [IDNA] is the component of internetionalization of 
> Domain Name system. It contains procedures preparing
> localized domain name representation for DNS and 
> supply display representation for local standard 
> according to DNS registered hostnames.  

[IDNA] implements Unicode codepoint specifications
published in [nameprep]. 

> 
> The IDN-label protocol is:
> 
> idn-label(input, tag-file, input-std, zonefile, idn-name)
> {
>   tag = find-tag(input, tag-file, input-std);

     if error(tag) 
        {
        fprintf(stderr, "%s %s", idn-name, "illegal characters found in IDN
label.");
        return (ERROR);
        }

>   switch (tag)
>       {
>       case USASCII : return(input);  /* a legal DNS string*/
>       case NIL: idn-name= 
>               uni-compress(input, UNICODE, DEFAULT-ACE);
>               return strcat(DEFAULT-ACE, idn-name);
>       default:
>        idn-folding(input, input-std, tag, USASCII, output-list);
>        if idn-label-length(output-list) >= MaxLabelLength
>        {       
>               record-label(input, output-list, zonefile, tag);
>               idn-truncate-label(output-list, tag);
>        }
>        idn-label-concat(output-list, idn-name);
>        return  strcat(tag, idn-name);
>       } 
> 
> The idn-display protocol is:
> 
> idn-display-code(input, local-std, zonefile, display-string)
> {
>   display-string = NIL;
>   search-zone(input, zonefile, local-std, display-string);
>   if display-string 
>       return display-string;
> 
>   tag = find-tag (input, tag-file, USASCII);

     if error(tag) 
        {
        fprintf(stderr, "%s %s", input, "WARNING: Error found in DNS label.");
        return (ERROR);
        }

>   switch (tag)
>       {
>       case USASCII : return(input);  /* a legal DNS string*/
>       case NIL: return(input); /* legacy name */
>       case DEFAULT-TAG: 
>               local-std = UNICODE;
>               uni-decompress(input, display-string)
>               return display-string;
>       default:
>        idn-folding(input, USASCII, tag, local-std, 
> display-string);
>        if length(inupt) >= MaxLabelLength)  /* truncated */
>               idn-request-fullname(input, output-list, host1, 
> host2);
>        return display-string;
>       } 
> 
> 
delete: > [nameprep] shall be the host for and only deal with
...
delete > for case folding table lookups, and leave exclusion list to be 
delete > checked by idn-label procedure  within a tagged Unicode block.

[nameprep] shall specify availble case folding tables for 
 idn-folding(input, in-std, tag, out-std, out-list) protocol,
and illegal codepoint exclusion shall be implemented in
   tag = find-tag(input, tag-file, input-std)

where tags are script based with naming defined in 
[ISO 639-2/T] and registered with IANA.  

The tags have values:
ERROR           /* contain [nameprep] has Excluded Codepoints */
USASCII         /* [A-Za-z0-9] */
NIL     /* Unicode string with no applicable script label found. */
ZHO     /* Chinese tag */
KOR     /* Korean */
JAP     /* Japanese */
LAT     /* Latin */
...

> 
> I am looking forward for your comments.
> 
> Liana Ye
> 

Reply via email to