Есть ли правильный способ создать HTML-путь SRC?
Я знаю, что правильным способом обработки путей к файлам / каталогам является использование Path.AltDirectorySeparatorChar
, но относится ли это к исходным путям HTML?
Или обратная косая черта является обязательным разделителем пути для HTML? Я всегда делал это с помощью обратной косой черты (т.е. <img src="images\birthdaysurprise.jpg" />
), но теперь мне интересно, если я делал это неправильно все это время?
2 ответа
"Буква закона" заключается в том, что косая черта ('/') - это способ сделать это. Согласно RFC 2396, унифицированные идентификаторы ресурсов (URI): общий синтаксис, §3, "Синтаксические компоненты URI":
The URI syntax does not require that the scheme-specific-part have
any general structure or set of semantics which is common among all
URI. However, a subset of URI do share a common syntax for
representing hierarchical relationships within the namespace. This
"generic URI" syntax consists of a sequence of four main components:
<scheme>://<authority><path>?<query>
each of which, except <scheme>, may be absent from a particular URI.
For example, some URI schemes do not allow an <authority> component,
and others do not use a <query> component.
absoluteURI = scheme ":" ( hier_part | opaque_part )
URI that are hierarchical in nature use the slash "/" character for
separating hierarchical components. For some file systems, a "/"
character (used to denote the hierarchical structure of a URI) is the
delimiter used to construct a file name hierarchy, and thus the URI
path will look similar to a file pathname. This does NOT imply that
the resource is a file or that the URI maps to an actual filesystem
pathname.
hier_part = ( net_path | abs_path ) [ "?" query ]
net_path = "//" authority [ abs_path ]
abs_path = "/" path_segments
URI that do not make use of the slash "/" character for separating
hierarchical components are considered opaque by the generic URI
parser.
opaque_part = uric_no_slash *uric
uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" |
"&" | "=" | "+" | "$" | ","
We use the term <path> to refer to both the <abs_path> and
<opaque_part> constructs, since they are mutually exclusive for any
given URI and can be parsed as a single component.
Для вашего URI требуется минимальное количество косых черт, чтобы отделить схему от полномочий. Остальная часть URI (компоненты пути и запроса) действительно имеют значение только в контексте соответствующей схемы и полномочий. Тем не менее, пара вещей, чтобы рассмотреть:
Во-первых, пути URI не являются путями файловой системы (если схема URI не
file
(file://...
). Пути URI - это просто идентификаторы со значением для авторитета, которые могут (или не могут) отображаться в определенные записи файловой системы.Два непрозрачных пути URI (те, которые не используют
'/'
как разделитель пути, не может быть хорошо обработан универсальными инструментами. Кроме того, не обязательно очевидно, что рассматриваемый путь непрозрачен: это означает, что применение универсальных инструментов к непрозрачному URI может привести к неожиданному поведению.
Хотя я не знаю точную букву закона, используйте косую черту для всех разделителей пути. Даже Windows может использовать косую черту в качестве разделителя в своих API.
Использование обратной косой черты может работать на платформе Windows, но:
- Выглядит странно
- Умереть и заткнуться, если вы перейдете на систему * nix.
- Может привести к поломке кода, который предполагает прямой слеш
\
во многих случаях запускает escape-последовательность, поэтому\n
может перевести неожиданным образом.