- From: Konrad Lanz <Konrad.Lanz@iaik.tugraz.at>
- Date: Thu, 25 Oct 2007 23:17:47 +0200
- To: "Grosso, Paul" <pgrosso@ptc.com>
- CC: public-xml-core-wg@w3.org
- Message-ID: <472107FB.8090700@iaik.tugraz.at>
Konrad Lanz wrote:
> I think the easiest would be to take a completely different approach!
> Maybe something like:
> --------------------------------------------------------------------
>
> 1. Set a "path-absolute" flag if the input starts with a slash.
>
> 2. Take an empty stack and an empty buffer.
>
> 3. while(not at the end of the input) {
>
> clear the buffer;
>
> continue to scan the input from the left and append all non slash
> characters to a temporary buffer (buf) until a slash is reached that was
> preceded by a non slash character.
>
> if (buf is '.'){
> //ignore
> } else if (buf is '..') {
> if (stack is empty and not path-absolute) {
> //start to accumulate complete '..' path segments to the left
> push '..' onto the stack;
> }else if (stack is empty and path-absolute) {
> //ignore '..' path segments hitting the root;
> }else if (stack-peek is '..') {
> //stack is not empty is implied and continue to accumulate
> //complete '..' path segments to the left
> push '..' onto the stack;
> } else {
> //stack is not empty is implied so lets pop the the path
> //segment to the left
> pop the stack;
> }
>
} else {
push buf's value onto the stack;
> }
> }
>
> 4. Take the stack now as a slash sperated list with the peek as the last
> element and prepend a slash if "path-absolute".
>
> 5. If the last character of the input was a slash as well append a slash.
>
> 6. If the last path segment is '..' and not already terminated by a
> slash append a slash as well.
>
> Enjoy, can someone else also try to get his head around this .... I'll
> test it in my implementation as soon as I have time.
>
> --------------------------------------------------------------------
>
Can't just get it right the first time ... well let's see what others think.
--
Konrad Lanz, IAIK/SIC - Graz University of Technology
Inffeldgasse 16a, 8010 Graz, Austria
Tel: +43 316 873 5547
Fax: +43 316 873 5520
https://www.iaik.tugraz.at/aboutus/people/lanz
http://jce.iaik.tugraz.at
Certificate chain (including the EuroPKI root certificate):
https://europki.iaik.at/ca/europki-at/cert_download.htm
Received on Thursday, 25 October 2007 21:18:04 UTC