ACTION-36: closing action message.

Dear all, this should close action 36 of reviewing Konrad's proposal for 
annex on dealing with dots.

1. I would like to suggest first a small change in the last sentence of 
step 1 of the algorithm:

Original:  'If the input buffer starts with a root slash "/" the output 
buffer is initialized with this root
  slash "/" otherwise with the empty string.'

Proposed: 'If the input buffer starts with a root slash "/" then move 
this character to the output buffer, otherwise initialize the output 
buffer with the empty string.'

The original text does not say explicitly that the leading "/" has to be 
eliminated from the input buffer and if implementations do not do that 
then they will not obtain good results.

2. I have gone through all the examples provided by Konrad. Assuming the 
behaviour indicated in step 1 and assuming also that rule 2.C finally 
reads as follows, following the indications by Konrad himself in 
http://lists.w3.org/Archives/Public/public-xmlsec-maintwg/2007Jun/0028.html 
:
 
"      D.if the input buffer begins with a prefix of "/../" or "/..", 
where ".." is a complete path segment,
      then replace that prefix with "/" in the input buffer and if also 
the output buffer is empty, last
      segment in the output buffer equals "../" or "..", where ".." is a 
complete path segment, then
      append ".." or "/.." for the latter case respectively to the 
output buffer else remove the last segment
      and its preceding "/" (if any) from the output buffer and if 
hereby the first character in the output
      buffer was removed and it was not the root slash then delete a 
leading slash from the input buffer; otherwise,"


I have obtained the same results as the ones in the annex.

Below follow how the algorithm would get the final result step by step 
(just in case it could be useful in the future).
In the tables below,

0. indicate the tasks corresponding to step 1 in the algorithm i.e. 
substitution of "//" by "/" as indicated and/or initialization of output 
buffer with a leading "/" in the input buffer.

x.y          x indicates step x of the process; y indicates the rule 
(A,B,C,D of step 2 in the algorithm) that applies in that step depending 
on the leading chars in the input buffer.

FINAL (3) indicates the application of step 3 in the algorithm.

Regards

Juan Carlos.



STEP        OUTPUT                        INPUT
                                          
no/.././/pseudo-netpath/seg/file.ext
0.                                        
no/.././pseudo-netpath/seg/file.ext

1.E         no                            /.././pseudo-netpath/seg/file.ext
2.c         ""                            ./pseudo-netpath/seg/file.ext
3.A         ""                            pseudo-netpath/seg/file.ext
4.E         pseudo-netpath                /seg/file.ext
5.E         pseudo-netpath/seg            /file.ext
6.E         pseudo-netpath/seg/file.ext

***AS IN ANNEx***


STEP        OUTPUT                        INPUT
                                          
no/..//.///pseudo-netpath/seg/file.ext
0.                                        
no/.././pseudo-netpath/seg/file.ext

1.E         no                            /.././pseudo-netpath/seg/file.ext
1.C         ""                            ./pseudo-netpath/seg/file.ext
1.A         ""                            pseudo-netpath/seg/file.ext
1.E         pseudo-netpath               /seg/file.ext
1.E         pseudo-netpath/seg           /file.ext
1.E         pseudo-netpath/seg/file.ext

***AS IN ANNEx***


STEP        OUTPUT                        INPUT
                                          
yes/no//..//.///pseudo-netpath/seg/file.ext
0.                                        
yes/no/.././pseudo-netpath/seg/file.ext

1.E         yes                           
/no/.././pseudo-netpath/seg/file.ext
2.E         yes/no                        /.././pseudo-netpath/seg/file.ext
3.C         yes                           /./pseudo-netpath/seg/file.ext
4.B         yes                           /pseudo-netpath/seg/file.ext
5.E         yes/pseudo-netpath            /seg/file.ext
6.E         yes/pseudo-netpath/seg        /file.ext
7.E         yes/pseudo-netpath/seg/file.ext

***AS IN ANNEx***


STEP        OUTPUT                INPUT
                                  no/../yes
1.E         no                    /../yes
2.C         ""                    yes
3.E         yes

***AS IN ANNEx***


STEP        OUTPUT                INPUT
                                  no/../yes/
1.E         no                    /../yes/
2.C         ""                    yes/
3.E         yes                   /
4.E         yes/


***AS IN ANNEx***


STEP        OUTPUT                INPUT
                                  no/../yes/no/..
1.E         no                    /../yes/no/..
2.C         ""                    yes/no/..
3.E         yes                   /no/..
4.E         yes/no                /..
5.c         yes                   /
6.E         yes/


***AS IN ANNEx***



STEP        OUTPUT                INPUT
                                  ../../no/../..
1.A         ../                   ../no/../..
2.A         ../../                no/../..
3.E         ../../no              /../..
4.C         ../..                 /..
5.C         ../../..              /
6.E         ../../../

***AS IN ANNEx***


STEP        OUTPUT                INPUT
                                  no/../..
1.E         no                    /../..
2.C         ""                    ..
3.C         ..

FINAL (3)   ../
      

***AS IN ANNEx***


STEP        OUTPUT                INPUT
                                  no/..
1.E         no                    /..
2.C         ""                   


***AS IN ANNEx***


STEP        OUTPUT                INPUT
                                  no/../
1.E         no                    /..
2.C         ""                   


***AS IN ANNEx***



STEP        OUTPUT                INPUT
                                  /a/b/c/./../../g
0           /                     a/b/c/./../../g
1.E         /a                    /b/c/./../../g
2.E         /a/b                  /c/./../../g
3.E         /a/b/c                /./../../g
4.B         /a/b/c                /../../g
5.C         /a/b                  /../g
6.C         /a                    /g
7.E         /a/g

*** AS IN ANNEx ***


STEP        OUTPUT                INPUT
                                  mid/content=5/../6
1.E         mid                   /content=5/../6
2.E         mid/content=5         /../6
3.C         mid                   /6
4.E         mid/6


***AS IN ANNEx***

STEP        OUTPUT                INPUT
                                  ../../..
1.A         ../                   ../..
2.A         ../../                ..
3.D         ../../..

FINAL (3)   ../../../


***AS IN ANNEx***

STEP        OUTPUT                INPUT
                                  no/../../
1.E         no                    /../../
2.C         ""                    ../
3.A         ../ 


***AS IN ANNEx***

STEP        OUTPUT                  INPUT
                                    ..yes/..no/..no/..no/../../../..yes
1.E         ..yes                   /..no/..no/..no/../../../..yes
2.E         ..yes/..no              /..no/..no/../../../..yes
3.E         ..yes/..no/..no         /..no/../../../..yes
4.E         ..yes/..no/..no/..no    /../../../..yes
5.C         ..yes/..no/..no         /../../..yes
6.C         ..yes/..no              /../..yes
7.C         ..yes                   /..yes
8.E         ..yes/..yes

***AS IN ANNEx***





STEP        OUTPUT                  INPUT
                                    ..yes/..no/..no/..no/../../../..yes/
1.E         ..yes                   /..no/..no/..no/../../../..yes/
2.E         ..yes/..no              /..no/..no/../../../..yes/
3.E         ..yes/..no/..no         /..no/../../../..yes/
4.E         ..yes/..no/..no/..no    /../../../..yes/
5.C         ..yes/..no/..no         /../../..yes/
6.C         ..yes/..no              /../..yes/
7.C         ..yes                   /..yes/
8.E         ..yes/..yes             /
9.E         ..yes/..yes/

***AS IN ANNEx***

STEP        OUTPUT                  INPUT
                                    ../..
1.A         ../                     ..
2.D         ../..             

FINAL (3)   ../../

***AS IN ANNEx***


STEP        OUTPUT                  INPUT
                                    ../../../
1.A         ../                     ../../
2.A         ../../                   ../
3.A         ../../../

***AS IN ANNEx***

STEP        OUTPUT                  INPUT
                                    .
1.D         ""                    


***AS IN ANNEx***

STEP        OUTPUT                  INPUT
                                    ./
1.A         ""                    

***AS IN ANNEx***


STEP        OUTPUT                  INPUT
                                    ./.
1.A         ""                      .
2.D         ""                    

***AS IN ANNEx***

STEP        OUTPUT                  INPUT
                                    //no/..
0.                                  /no/..
0.BIS       /                       no/..
1.E         /no                     /..
2.C         ""                      /
3.E         /

*** AS IN ANNEx ***

STEP        OUTPUT                  INPUT
0.                                  ../../no/..
1.A         ../                     ../no/..
2.A         ../../                  no/..
3.E         ../../no                /..
4.C         ../..

FINAL (3)   ../../

***AS IN ANNEx***

STEP        OUTPUT                  INPUT
                                    ../../no/../
1.A         ../                     ../no/../
2.A         ../../                  no/../
3.E         ../../no                /../
4.C         ../..                   /
5.E         ../../

***AS IN ANNEx***

STEP        OUTPUT                  INPUT
                                    yes/no/../
1.E         yes                     /no/../
2.E         yes/no                  /../
3.C         yes                     /
4.E         yes/                   

***AS IN ANNEx***

STEP        OUTPUT                  INPUT
                                    yes/no/no/../..
1.E         yes                     /no/no/../..
2.E         yes/no                  /no/../..
3.E         yes/no/no               /../..
4.C         yes/no                  /.. 
5.C         yes                     /
6.E         yes/

***AS IN ANNEx***


yes/no/no/no/../../..    -->   yes/

Similar to the previous one. OK

STEP        OUTPUT                  INPUT
                                    yes/no/../yes/no/no/../..
1.E         yes                     /no/../yes/no/no/../..
2.E         yes/no                  /../yes/no/no/../..
3.C         yes                     /yes/no/no/../..
4.E         yes/yes                 /no/no/../.. 
5.E         yes/yes/no              /no/../..
6.E         yes/yes/no/no           /../..
7.C         yes/yes/no              /..
8.C         yes/yes                 /
9.E         yes/yes/

***AS IN ANNEx***
   
yes/no/no/no/../../../yes    yes/yes

OK

yes/no/no/no/../../../yes/    yes/yes/

OK



STEP        OUTPUT                  INPUT
                                    /no/../   
0.          /                       no/../
1.E         /no                     /../
2.C         ""                      /
3.E         /                    

*** AS IN ANNEx ***

STEP        OUTPUT                  INPUT
                                    /yes/no/../
0.          /                       yes/no/../
1.E         /yes                    /no/../
2.E         /yes/no                 /../
3.C         /yes                    /
4.E         /yes/

*** AS IN ANNEx ***

STEP        OUTPUT                  INPUT
                                    /yes/no/no/../..
0.          /                       yes/no/no/../..
1.E         /yes                    /no/no/../..
2.E         /yes/no                 /no/../..
3.E         /yes/no/no              /../..
4.C         /yes/no                 /..
5.C         /yes                    /
6.E         /yes/

***AS IN ANNEx***

/yes/no/no/no/../../..    -->    /yes/

Similar to the previous one (one more "no" and one more "/..")
OK

STEP        OUTPUT                  INPUT
                                    ../../..no/..
1.A         ../                     ../..no/..
2.A         ../../                  ..no/..
3.E         ../../..no              /..
4.C         ../..                   /
5.E         ../../               

***AS IN ANNEx***

../../..no/../  ->    ../../

Similar to previous
OK

STEP        OUTPUT                  INPUT
                                    ..yes/..no/../
1.E         ..yes                   /..no/../
2.E         ..yes/..no              /../
3.C         ..yes                   /
4.C         ..yes/                  


***AS IN ANNEx***

..yes/..no/..no/../..    ->   ..yes/

Similar to the previous one (one more "..no/" and one more "/.."

OK

..yes/...no/..no/..no/../../..    ->   ..yes/

Similar to the previous one
OK

STEP        OUTPUT                  INPUT
                                    ..yes/..no/../..yes/..no/..no/../..
1.E         ..yes                   /..no/../..yes/..no/..no/../..
2.E         ..yes/..no              /../..yes/..no/..no/../..
3.C         ..yes                   /..yes/..no/..no/../..
4.E         ..yes/..yes             /..no/..no/../..
5.E         ..yes/..yes/..no        /..no/../..
6.E         ..yes/..yes/..no/..no   /../..
7.C         ..yes/..yes/..no        /..
8.C         ..yes/..yes             /
9.E         ..yes/..yes/


***AS IN ANNEx***

STEP        OUTPUT                  INPUT
                                    /..no/../
0.          /                       ..no/../
1.E         /..no                   /../
2.C         ""                      /
3.C         /                


***AS IN ANNEx***

STEP        OUTPUT                  INPUT
                                    /..yes/..no/../
0.          /                       ..yes/..no/../
1.E         /..yes                  /..no/../
2.E         /..yes/..no             /../
3.C         /..yes                  /
4.E         /..yes/

***AS IN ANNEx***


/..yes/..no/..no/../..  ->     /..yes/

Similar to the previous one (one more "..no/" and one more "../")
OK

/..yes/..no/..no/..no/../../..  ->    /..yes/

Similar to the previous ones
OK

/  -->    /

OK.  starting "/" in the input goes to the output.

/.  -->     /

OK: Starting "/" in the input goes to the output. After that, rule 2.D 
(remove "." in input)

/./  -->    /

OK: Starting "/" in the input goes to the output. After that, rule 2.A 
(remove "./" in input)



STEP        OUTPUT                  INPUT
                                    /./.
0.          /                       ./.
1.A         /                       .
2.C         /                     


***AS IN ANNEx***

STEP        OUTPUT                  INPUT
                                    /././
0.          /                       ././
1.A         /                       ./
2.A         /                     

***AS IN ANNEx***

STEP        OUTPUT                  INPUT
                                    /..
0.          /                       ..
1.D         /                     

*** AS IN ANNEX ***
 
STEP        OUTPUT                  INPUT
                                    /../..
0           /                       ../..
1.A         /                       ..
2.D         / 


*** AS IN ANNEX ***

/../../..  --> /

OK. As in previous example but with one more "/.." segment.


//..    -->    /

OK: pre-processor: input to "/.." and then it is like one of the 
previous examples.


//..//..  -->   /

OK: pre-processor: input to "/../.." and then it is like one of the 
previous examples.


//..//..//..    -->     /

OK: Pre-processor: input to "/../../.." and then it is like one of the 
previous examples.


STEP        OUTPUT                  INPUT
                                    /./..
0.          /                       ./..
1.A         /                      ..
2.D         / 


*** AS IN ANNEX ***

STEP        OUTPUT                  INPUT
                                    /./.././..
0.          /                       ./.././..
1.A         /                       .././..
2.A         /                       ./..
3.A         /                       ..
4.D         /


*** AS IN ANNEX ***


STEP        OUTPUT                  INPUT
                                    /./.././.././..
0.          /                       ./.././.././..
1.A         /                       .././.././..
2.A         /                       ./.././..
3.A         /                       .././..
4.A         /                       ./..
5.A         /                       ..
6.D         /


*** AS IN ANNEX ***

.  -> ""

OK. Rule 1.D.
     
./      -->  ""

OK. Rule 1.A


STEP        OUTPUT                  INPUT
                                    ./.
1.A         ""                      .
2.D         ""

*** AS IN ANNEX ***
     
STEP        OUTPUT                  INPUT
                                    ..
1.D         ..                   

FINAL (3)   ../

*** AS IN ANNEX ***

STEP        OUTPUT                  INPUT
                                    ../
1.A         ../                   

*** AS IN ANNEX ***

../    ../

Received on Wednesday, 13 June 2007 14:46:04 UTC