Hello out there!
Beachte bitte: In „C|“ wird ein senkrechter Strich (kein großes i) statt des Doppelpunktes benutzt. Dies ist deshalb so, weil in URIs Doppelpunkte nur an bestimmten Stellen erlaubt sind.
Warum sollte ein ':' an dieser Stelle nicht erlaubt sein?
'file:///C:/foo/bar' mal nach [RFC3986] auseinandergenommen:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
'file' ist scheme, '///C:/foo/bar' ist hier-part.
hier-part = "//" authority path-abempty
/ path-absolute
/ path-rootless
/ path-empty
'/C:/foo/bar' ist authority path-abempty
authority = [ userinfo "@" ] host [ ":" port ]
host = IP-literal / IPv4address / reg-name
IP-literal und IPv4address matchen nicht, aber:
reg-name = *( unreserved / pct-encoded / sub-delims )
reg-name ist also '', host auch, authority auch. Warum auch nicht? “The authority component is preceded by a double slash ("//") and is terminated by the next slash ("/") […]”
'/C:/foo/bar' ist damit path-abempty.
path-abempty = *( "/" segment )
'C:' ist segment, ebenso wie 'foo' und 'bar'.
segment = *pchar
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
Passt schon.
See ya up the road,
Gunnar
„Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)