Esquemas de URI

Há vários esquemas de URI (Uniform Resource Identifier) que você pode usar para fazer referência aos arquivos que vêm no conjunto de aplicativo, nas pastas de dados do seu aplicativo ou na nuvem. Você também pode usar um esquema de URI para fazer referência a cadeias de caracteres carregadas dos arquivos de recursos (.resw) do aplicativo. Você pode usar esses esquemas de URI em seu código, em sua marcação XAML, em seu manifesto de pacote de aplicativo ou em seus modelos de notificação de bloco e notificação do sistema.

Características comuns dos esquemas de URI

Todos os esquemas descritos neste tópico seguem regras típicas de esquema de URI para normalização e recuperação de recursos. Consulte RFC 3986 para obter a sintaxe genérica de um URI.

Todos os esquemas de URI definem a parte hierárquica de acordo com o RFC 3986 como os componentes de autoridade e caminho do URI.

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

O que isso significa é que existem essencialmente três componentes em um URI. Imediatamente após as duas barras do esquema de URI está um componente (que pode estar vazio) chamado de autoridade. E imediatamente a seguir está o caminho. Tomando o URI http://www.contoso.com/welcome.png como exemplo, o esquema é "http://", a autoridade é "www.contoso.com" e o caminho é "/welcome.png". Outro exemplo é o URI ms-appx:///logo.png, onde os componentes da autoridade estão vazios e assumem um valor padrão.

O componente de fragmento é ignorado pelo processamento específico do esquema dos URIs mencionados neste tópico. Durante a recuperação e comparação de recursos, o componente de fragmento não tem influência. No entanto, as camadas acima da implementação específica podem interpretar o fragmento para recuperar um recurso secundário.

A comparação ocorre byte a byte após a normalização de todos os componentes do IRI.

Insensibilidade a maiúsculas e minúsculas e normalização

Todos os esquemas de URI descritos neste tópico seguem regras típicas de URI (RFC 3986) para normalização e recuperação de recursos para esquemas. A forma normalizada desses URIs mantém maiúsculas e minúsculas e decodifica por porcentagem os caracteres não reservados RFC 3986.

Para todos os esquemas de URI descritos neste tópico, scheme, authority e path não diferenciam maiúsculas de minúsculas por padrão ou são processados pelo sistema de maneira que não diferencia maiúsculas de minúsculas. Observação A única exceção a essa regra é a autoridade de , que diferencia maiúsculas de ms-resourceminúsculas.

ms-appx e ms-appx-web

Use o ms-appx ou o ms-appx-web esquema de URI para se referir a um arquivo que vem do pacote do seu aplicativo (consulte Empacotamento de aplicativos). Os arquivos no pacote do aplicativo normalmente são imagens estáticas, dados, código e arquivos de layout. O ms-appx-web esquema acessa os mesmos arquivos que ms-appxo , mas no compartimento da Web. Para obter exemplos e mais informações, consulte Referenciar uma imagem ou outro ativo da marcação e do código XAML.

Nome do esquema (ms-appx e ms-appx-web)

O nome do esquema de URI é a cadeia de caracteres "ms-appx" ou "ms-appx-web".

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

Autoridade (ms-appx e ms-appx-web)

A autoridade é o nome do identificador do pacote definido no manifesto do pacote. Portanto, ele é limitado na forma URI e IRI (identificador de recurso internacionalizado) ao conjunto de caracteres permitidos em um nome de identidade de pacote. O nome do pacote deve ser o nome de um dos pacotes no gráfico de dependência de pacote do aplicativo em execução atual.

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

Se qualquer outro caractere aparecer na autoridade, a recuperação e a comparação falharão. O valor padrão para a autoridade é o pacote do aplicativo em execução no momento.

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

Informações e porta do usuário (ms-appx e ms-appx-web)

O ms-appx esquema, ao contrário de outros esquemas populares, não define uma informação do usuário ou componente de porta. Como "@" e ":" não são permitidos como valores de autoridade válidos, a pesquisa falhará se eles forem incluídos. Cada um dos itens a seguir falha.

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

Caminho (ms-appx e ms-appx-web)

O componente de caminho corresponde à sintaxe RFC 3986 genérica e oferece suporte a caracteres não ASCII em IRIs. O componente de caminho define o caminho de arquivo lógico ou físico de um arquivo. Esse arquivo está em uma pasta associada ao local instalado do pacote do aplicativo, para o aplicativo especificado pela autoridade.

Se o caminho se referir a um caminho físico e a um nome de arquivo, esse ativo de arquivo físico será recuperado. Mas se nenhum arquivo físico for encontrado, o recurso real retornado durante a recuperação será determinado usando a negociação de conteúdo em tempo de execução. Essa determinação é baseada nas configurações do aplicativo, do sistema operacional e do usuário, como idioma, fator de escala de exibição, tema, alto contraste e outros contextos de tempo de execução. Por exemplo, uma combinação dos idiomas do aplicativo, as configurações de exibição do sistema e as configurações de alto contraste do usuário podem ser levadas em consideração ao determinar o valor real do recurso a ser recuperado.

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

O URI acima pode realmente recuperar um arquivo dentro do pacote do aplicativo atual com o seguinte nome de arquivo físico.

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

É claro que você também pode recuperar esse mesmo arquivo físico referindo-se a ele diretamente pelo nome completo.

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

O componente de caminho é, como URIs genéricos, diferencia maiúsculas de ms-appx(-web) minúsculas. No entanto, quando o sistema de arquivos subjacente pelo qual o recurso é acessado não diferencia maiúsculas de minúsculas, como para NTFS, a recuperação do recurso é feita sem distinção entre maiúsculas e minúsculas.

A forma normalizada do URI mantém maiúsculas e minúsculas e decodifica por porcentagem (um símbolo "%" seguido pela representação hexadecimal de dois dígitos) caracteres RFC 3986 não reservados. Os caracteres "?", "#", "/", "*" e '"' (o caractere de aspas duplas) devem ser codificados por porcentagem em um caminho para representar dados como nomes de arquivos ou pastas. Todos os caracteres codificados por porcentagem são decodificados antes da recuperação. Portanto, para recuperar um arquivo chamado Hello#World.html, use este URI.

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

Consulta (ms-appx e ms-appx-web)

Os parâmetros de consulta são ignorados durante a recuperação de recursos. A forma normalizada dos parâmetros de consulta mantém maiúsculas e minúsculas. Os parâmetros de consulta não são ignorados durante a comparação.

ms-appdata

Use o ms-appdata esquema de URI para se referir a arquivos provenientes das pastas de dados locais, móveis e temporárias do aplicativo. Para obter mais informações sobre essas pastas de dados do aplicativo, consulte Armazenar e recuperar configurações e outros dados do aplicativo.

O ms-appdata esquema de URI não executa a negociação de conteúdo de runtime que ms-appx e ms-appx-web fazem. Mas você pode responder ao conteúdo de ResourceContext.QualifierValues e carregar os ativos apropriados dos dados do aplicativo usando o nome completo do arquivo físico no URI.

Nome do esquema (ms-appdata)

O nome do esquema de URI é a cadeia de caracteres "ms-appdata".

ms-appdata://

Autoridade (ms-appdata)

A autoridade é o nome do identificador do pacote definido no manifesto do pacote. Portanto, ele é limitado na forma URI e IRI (identificador de recurso internacionalizado) ao conjunto de caracteres permitidos em um nome de identidade de pacote. O nome do pacote deve ser o nome do pacote do aplicativo em execução atual.

ms-appdata://Contoso.MyApp/

Se qualquer outro caractere aparecer na autoridade, a recuperação e a comparação falharão. O valor padrão para a autoridade é o pacote do aplicativo em execução no momento.

ms-appdata:///

Informações do usuário e porta (ms-appdata)

O ms-appdata esquema, ao contrário de outros esquemas populares, não define uma informação do usuário ou componente de porta. Como "@" e ":" não são permitidos como valores de autoridade válidos, a pesquisa falhará se eles forem incluídos. Cada um dos itens a seguir falha.

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

Caminho (ms-appdata)

O componente de caminho corresponde à sintaxe RFC 3986 genérica e oferece suporte a caracteres não ASCII em IRIs. No local Windows.Storage.ApplicationData há três pastas reservadas para armazenamento de estado local, móvel e temporário. O ms-appdata esquema permite o acesso a arquivos e pastas nesses locais. O primeiro segmento do componente de caminho deve especificar a pasta específica da seguinte maneira. Assim, a forma "caminho vazio" de "hier-part" não é legal.

Pasta local.

ms-appdata:///local/

Pasta temporária.

ms-appdata:///temp/

Pasta móvel.

ms-appdata:///roaming/

O componente de caminho é, como URIs genéricos, diferencia maiúsculas de ms-appdata minúsculas. No entanto, quando o sistema de arquivos subjacente pelo qual o recurso é acessado não diferencia maiúsculas de minúsculas, como para NTFS, a recuperação do recurso é feita sem distinção entre maiúsculas e minúsculas.

A forma normalizada do URI mantém maiúsculas e minúsculas e decodifica por porcentagem (um símbolo "%" seguido pela representação hexadecimal de dois dígitos) caracteres RFC 3986 não reservados. Os caracteres "?", "#", "/", "*" e '"' (o caractere de aspas duplas) devem ser codificados por porcentagem em um caminho para representar dados como nomes de arquivos ou pastas. Todos os caracteres codificados por porcentagem são decodificados antes da recuperação. Portanto, para recuperar um arquivo local chamado Hello#World.html, use este URI.

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

A recuperação do recurso e a identificação do segmento de caminho de nível superior são tratadas após a normalização dos pontos (".. /./b/c"). Portanto, os URIs não podem se destacar de uma das pastas reservadas. Portanto, o URI a seguir não é permitido.

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

Mas esse URI é permitido (embora redundante).

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

Consulta (ms-appdata)

Os parâmetros de consulta são ignorados durante a recuperação de recursos. A forma normalizada dos parâmetros de consulta mantém maiúsculas e minúsculas. Os parâmetros de consulta não são ignorados durante a comparação.

ms-recurso

Use o ms-resource esquema de URI para se referir a cadeias de caracteres carregadas dos arquivos de recursos (.resw) do aplicativo. Para obter exemplos e mais informações sobre Arquivos de Recursos, consulte Localizar cadeias de caracteres na interface do usuário e no manifesto do pacote do aplicativo.

Nome do esquema (ms-resource)

O nome do esquema de URI é a cadeia de caracteres "ms-resource".

ms-resource://

Autoridade (ms-resource)

A autoridade é o mapa de recursos de nível superior definido no PRI (Índice de Recursos do Pacote), que normalmente corresponde ao nome do identificador do pacote definido no manifesto do pacote. Consulte Empacotamento de aplicativos). Portanto, ele é limitado na forma URI e IRI (identificador de recurso internacionalizado) ao conjunto de caracteres permitidos em um nome de identidade de pacote. O nome do pacote deve ser o nome de um dos pacotes no gráfico de dependência de pacote do aplicativo em execução atual.

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

Se qualquer outro caractere aparecer na autoridade, a recuperação e a comparação falharão. O valor padrão da autoridade é o nome do pacote que diferencia maiúsculas de minúsculas do aplicativo em execução no momento.

ms-resource:///

A autoridade diferencia maiúsculas de minúsculas e a forma normalizada mantém suas maiúsculas e minúsculas. A pesquisa de um recurso, no entanto, ocorre sem distinção entre maiúsculas e minúsculas.

Informações do usuário e porta (ms-resource)

O ms-resource esquema, ao contrário de outros esquemas populares, não define uma informação do usuário ou componente de porta. Como "@" e ":" não são permitidos como valores de autoridade válidos, a pesquisa falhará se eles forem incluídos. Cada um dos itens a seguir falha.

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

Caminho (ms-resource)

O caminho identifica o local hierárquico da subárvore ResourceMap (consulte Sistema de Gerenciamento de Recursos) e o NamedResource dentro dela. Normalmente, isso corresponde ao nome do arquivo (excluindo a extensão) de um Arquivo de Recursos (.resw) e ao identificador de um recurso de cadeia de caracteres dentro dele.

Para obter exemplos e mais informações, consulte Localizar cadeias de caracteres na interface do usuário e no manifesto do pacote do aplicativo e Suporte a notificações de bloco e notificação do sistema para idioma, escala e alto contraste.

O componente de caminho é, como URIs genéricos, diferencia maiúsculas de ms-resource minúsculas. No entanto, a recuperação subjacente faz um CompareStringOrdinal com ignoreCase definido como true.

A forma normalizada do URI mantém maiúsculas e minúsculas e decodifica por porcentagem (um símbolo "%" seguido pela representação hexadecimal de dois dígitos) caracteres RFC 3986 não reservados. Os caracteres "?", "#", "/", "*" e '"' (o caractere de aspas duplas) devem ser codificados por porcentagem em um caminho para representar dados como nomes de arquivos ou pastas. Todos os caracteres codificados por porcentagem são decodificados antes da recuperação. Portanto, para recuperar um recurso de cadeia de caracteres de um arquivo de recursos chamado Hello#World.resw, use este URI.

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

Consulta (ms-resource)

Os parâmetros de consulta são ignorados durante a recuperação de recursos. A forma normalizada dos parâmetros de consulta mantém maiúsculas e minúsculas. Os parâmetros de consulta não são ignorados durante a comparação. Os parâmetros de consulta são comparados com distinção entre maiúsculas e minúsculas.

Os desenvolvedores de componentes específicos em camadas acima dessa análise de URI podem optar por usar os parâmetros de consulta conforme acharem adequado.