Поделиться через


Схемы URI

Существует несколько схем URI (универсального кода ресурсов), которые можно использовать для формирования ссылок на файлы приложения, получаемые из пакета приложения, папок данных приложения или облака. Можно также использовать схему URI для обозначения строк, загружаемых из RESW-файлов ресурсов приложения. Эти схемы URI можно использовать в коде, в разметке XAML, в манифесте пакета приложения или в плитках и всплывающих шаблонах уведомлений.

Общие функции схем URI

Все схемы, описанные в этом разделе, соответствуют типичным правилам схемы URI для нормализации и извлечения ресурсов. Общие синтаксисы универсального кода ресурса (URI) см. в RFC 3986 .

Все схемы URI определяют иерархическую часть на RFC 3986 в качестве компонентов центра и пути URI.

URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
hier-part   = "//" authority path-abempty
            / path-absolute
            / path-rootless
            / path-empty

Это означает, что в URI по сути три компонента. Сразу после двух косых черт схемы URI является компонентом (который может быть пустым) называется центром. И сразу после этого путь. Принимая универсальный код ресурса (URI http://www.contoso.com/welcome.png ) в качестве примера, схема — "http://", центр имеет значение "www.contoso.com", а путь — "/welcome.png". Другим примером является универсальный код ресурса (URI ms-appx:///logo.png), где компоненты центра пусты и принимают значение по умолчанию.

Компонент фрагмента игнорируется обработкой URI, упомянутых в этой статье, для конкретной схемы. Во время извлечения и сравнения ресурсов компонент фрагмента не имеет никакого отношения. Однако слои выше конкретной реализации могут интерпретировать фрагмент для получения дополнительного ресурса.

Сравнение байтов для байтов после нормализации всех компонентов IRI.

Без учета регистра и нормализации

Все схемы URI, описанные в этом разделе, соответствуют типичным правилам URI (RFC 3986) для нормализации и извлечения ресурсов для схем. Нормализованная форма этих URI поддерживает регистр и декодирует символы RFC 3986 без учета.

Для всех схем URI, описанных в этом разделе, схема, центр и путь, не учитывается регистр по стандарту или обрабатывается системой без учета регистра. Обратите внимание, что единственным исключением из этого правила является авторитетms-resource, который учитывает регистр.

ms-appx и ms-appx-web

ms-appx Используйте схему URI для ms-appx-web ссылки на файл, поступающий из пакета приложения (см. статью "Упаковка приложений"). Файлы в пакете приложения обычно являются статическими изображениями, данными, кодом и файлами макета. Схема ms-appx-web обращается к тем же файлам, что ms-appxи в веб-отсеке. Примеры и дополнительные сведения см. в статье "Ссылка на изображение" или другой ресурс из разметки XAML и кода.

Имя схемы (ms-appx и ms-appx-web)

Имя схемы URI — это строка ms-appx или ms-appx-web.

ms-appx://
ms-appx-web://

Центр (ms-appx и ms-appx-web)

Центр — это имя удостоверения пакета, определенное в манифесте пакета. Поэтому он ограничен в форме URI и IRI (идентификатор международного ресурса) набором символов, разрешенных в имени удостоверения пакета. Имя пакета должно быть именем одного из пакетов в текущем граф зависимостей пакета, работающего приложения.

ms-appx://Contoso.MyApp/
ms-appx-web://Contoso.MyApp/

Если в центр появится любой другой символ, получение и сравнение завершаются сбоем. Значение по умолчанию для центра является пакетом приложения, выполняющегося в данный момент.

ms-appx:///
ms-appx-web:///

Сведения о пользователе и порт (ms-appx и ms-appx-web)

Схема ms-appx , в отличие от других популярных схем, не определяет сведения о пользователе или компонент порта. Так как "@" и ":" не допускаются в качестве допустимых значений центра, поиск завершится ошибкой, если они включены. Каждый из следующих неудачных действий.

ms-appx://john@contoso.myapp/default.html
ms-appx://john:password@contoso.myapp/default.html
ms-appx://contoso.myapp:8080/default.html
ms-appx://john:password@contoso.myapp:8080/default.html

Путь (ms-appx и ms-appx-web)

Компонент пути соответствует универсальному синтаксису RFC 3986 и поддерживает символы, отличные от ASCII, в irIs. Компонент пути определяет логический или физический путь к файлу. Этот файл находится в папке, связанной с установленным расположением пакета приложения, для приложения, указанного центром.

Если путь ссылается на физический путь и имя файла, извлекается физический файловый ресурс. Но если такой физический файл не найден, фактический ресурс, возвращенный во время извлечения, определяется с помощью согласования содержимого во время выполнения. Это определение основано на параметрах приложения, ОС и пользователей, таких как язык, коэффициент масштабирования дисплея, тема, высокая контрастность и другие контексты среды выполнения. Например, сочетание языков приложения, параметров отображения системы и параметров высокой контрастности пользователя можно учитывать при определении фактического значения ресурса, которое требуется извлечь.

ms-appx:///images/logo.png

Приведенный выше URI может фактически получить файл в пакете текущего приложения со следующим именем физического файла.

\Images\fr-FR\logo.scale-100_contrast-white.png

Конечно, вы можете получить тот же физический файл, ссылаясь на него непосредственно по полному имени.

<Image Source="ms-appx:///images/fr-FR/logo.scale-100_contrast-white.png"/>

Компонент пути, например универсальные ms-appx(-web) URI, учитывает регистр. Однако если доступ к базовой файловой системе, к которой осуществляется доступ к ресурсу, не учитывается регистр, например для NTFS, извлечение ресурса выполняется без учета регистра.

Нормализованная форма URI поддерживает регистр и декодирует проценты (символ "%", за которым следует двухзначное шестнадцатеричное представление) RFC 3986 без учета. Символы "?", "#", "/", "*" и "" (символ двойной кавычки) должны быть закодированы в пути, чтобы представлять данные, такие как имена файлов или папок. Все символы, закодированные в процентах, декодируются перед извлечением. Таким образом, чтобы получить файл с именем Hello#World.html, используйте этот универсальный код ресурса (URI).

ms-appx:///Hello%23World.html

Запрос (ms-appx и ms-appx-web)

Параметры запроса игнорируются во время извлечения ресурсов. Нормализованная форма параметров запроса сохраняет регистр. Параметры запроса не игнорируются во время сравнения.

ms-appdata

Используйте схему ms-appdata URI для ссылки на файлы, поступающие из локальных, перемещаемых и временных папок данных приложения. Дополнительные сведения об этих папках данных приложения см. в магазине и получении параметров и других данных приложения.

Схема ms-appdata URI не выполняет согласование содержимого среды выполнения, выполняемого ms-appx и ms-appx-web . Но вы можете ответить на содержимое ResourceContext.QualifierValues и загрузить соответствующие ресурсы из данных приложения с помощью полного физического имени файла в URI.

Имя схемы (ms-appdata)

Имя схемы URI — это строка ms-appdata.

ms-appdata://

Центр (ms-appdata)

Центр — это имя удостоверения пакета, определенное в манифесте пакета. Поэтому он ограничен в форме URI и IRI (идентификатор международного ресурса) набором символов, разрешенных в имени удостоверения пакета. Имя пакета должно быть именем текущего пакета запущенного приложения.

ms-appdata://Contoso.MyApp/

Если в центр появится любой другой символ, получение и сравнение завершаются сбоем. Значение по умолчанию для центра является пакетом приложения, выполняющегося в данный момент.

ms-appdata:///

Сведения о пользователе и порт (ms-appdata)

Схема ms-appdata , в отличие от других популярных схем, не определяет сведения о пользователе или компонент порта. Так как "@" и ":" не допускаются в качестве допустимых значений центра, поиск завершится ошибкой, если они включены. Каждый из следующих неудачных действий.

ms-appdata://john@contoso.myapp/local/data.xml
ms-appdata://john:password@contoso.myapp/local/data.xml
ms-appdata://contoso.myapp:8080/local/data.xml
ms-appdata://john:password@contoso.myapp:8080/local/data.xml

Путь (ms-appdata)

Компонент пути соответствует универсальному синтаксису RFC 3986 и поддерживает символы, отличные от ASCII, в irIs. В расположении Windows.Storage.ApplicationData находятся три зарезервированные папки для локального, перемещаемого и временного хранилища состояний. Схема ms-appdata позволяет получить доступ к файлам и папкам в этих расположениях. Первый сегмент компонента пути должен указывать определенную папку следующим образом. Таким образом, "путь пустой" формы "hier-part" не является законным.

Локальная папка.

ms-appdata:///local/

Временная папка.

ms-appdata:///temp/

Перемещаемая папка.

ms-appdata:///roaming/

Компонент пути, например универсальные ms-appdata URI, учитывает регистр. Однако если доступ к базовой файловой системе, к которой осуществляется доступ к ресурсу, не учитывается регистр, например для NTFS, извлечение ресурса выполняется без учета регистра.

Нормализованная форма URI поддерживает регистр и декодирует проценты (символ "%", за которым следует двухзначное шестнадцатеричное представление) RFC 3986 без учета. Символы "?", "#", "/", "*" и "" (символ двойной кавычки) должны быть закодированы в пути, чтобы представлять данные, такие как имена файлов или папок. Все символы, закодированные в процентах, декодируются перед извлечением. Таким образом, чтобы получить локальный файл с именем Hello#World.html, используйте этот URI.

ms-appdata:///local/Hello%23World.html

Получение ресурса и идентификация сегмента пути верхнего уровня обрабатываются после нормализации точек (". /./b/c"). Таким образом, URI не могут поставить точку в одну из зарезервированных папок. Таким образом, следующий универсальный код ресурса (URI) не допускается.

ms-appdata:///local/../hello/logo.png

Но этот универсальный код ресурса (URI) разрешен (хотя и избыточный).

ms-appdata:///local/../roaming/logo.png

Запрос (ms-appdata)

Параметры запроса игнорируются во время извлечения ресурсов. Нормализованная форма параметров запроса сохраняет регистр. Параметры запроса не игнорируются во время сравнения.

ms-resource

Используйте схему ms-resource URI для ссылки на строки, загруженные из файлов ресурсов приложения (RESW). Примеры и дополнительные сведения о файлах ресурсов см. в разделе "Локализация строк" в манифесте пользовательского интерфейса и пакета приложения.

Имя схемы (ms-resource)

Имя схемы URI — это строка ms-resource.

ms-resource://

Центр (ms-resource)

Центр — это карта ресурсов верхнего уровня, определенная в индексе ресурсов пакета (PRI), которая обычно соответствует имени удостоверения пакета, определенному в манифесте пакета. См. статью "Упаковка приложений"). Поэтому он ограничен в форме URI и IRI (идентификатор международного ресурса) набором символов, разрешенных в имени удостоверения пакета. Имя пакета должно быть именем одного из пакетов в текущем граф зависимостей пакета, работающего приложения.

ms-resource://Contoso.MyApp/
ms-resource://Microsoft.WinJS.1.0/

Если в центр появится любой другой символ, получение и сравнение завершаются сбоем. Значение по умолчанию для центра — это имя пакета с учетом регистра текущего запущенного приложения.

ms-resource:///

Центр учитывает регистр, и нормализованная форма сохраняет свое дело. Однако поиск ресурса происходит без учета регистра.

Сведения о пользователе и порт (ms-resource)

Схема ms-resource , в отличие от других популярных схем, не определяет сведения о пользователе или компонент порта. Так как "@" и ":" не допускаются в качестве допустимых значений центра, поиск завершится ошибкой, если они включены. Каждый из следующих неудачных действий.

ms-resource://john@contoso.myapp/Resources/String1
ms-resource://john:password@contoso.myapp/Resources/String1
ms-resource://contoso.myapp:8080/Resources/String1
ms-resource://john:password@contoso.myapp:8080/Resources/String1

Путь (ms-resource)

Путь определяет иерархическое расположение поддерев ResourceMap (см . систему управления ресурсами) и Именованноеresource в нем. Как правило, это соответствует имени файла (за исключением расширения) файлов ресурсов (RESW) и идентификатору строкового ресурса в нем.

Примеры и дополнительные сведения см. в разделе "Локализация строк" в манифесте пользовательского интерфейса и пакета приложения, а также поддержка уведомлений плитки и всплывающих уведомлений для языка, масштабирования и высокой контрастности.

Компонент пути, например универсальные ms-resource URI, учитывает регистр. Однако базовое извлечение выполняет сравнениеStringOrdinal с заданным значением ignoreCasetrue.

Нормализованная форма URI поддерживает регистр и декодирует проценты (символ "%", за которым следует двухзначное шестнадцатеричное представление) RFC 3986 без учета. Символы "?", "#", "/", "*" и "" (символ двойной кавычки) должны быть закодированы в пути, чтобы представлять данные, такие как имена файлов или папок. Все символы, закодированные в процентах, декодируются перед извлечением. Таким образом, чтобы получить строковый ресурс из файла ресурсов с именем Hello#World.resw, используйте этот URI.

ms-resource:///Hello%23World/String1

Запрос (ms-resource)

Параметры запроса игнорируются во время извлечения ресурсов. Нормализованная форма параметров запроса сохраняет регистр. Параметры запроса не игнорируются во время сравнения. Параметры запроса сравниваются с учетом регистра.

Разработчики определенных компонентов, наложенных выше этого синтаксического анализа URI, могут использовать параметры запроса по мере их соответствия.