Pergunta

O que eu estou tentando fazer é tirar um documento XML, digamos http://example.org/ data.xml e mostram que com uma folha de estilo XSL aplicada. (Eu não posso modificar o documento em si e adicionar uma directiva)

Portanto, há um par de arquivos XML utilitário como este:

wrapper.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wrapper [
  <!ENTITY content SYSTEM "http://example.org/data.xml">
]>
<?xml-stylesheet type="text/xsl" href="unwrap.xsl" ?>
<wrapper>
  &content;
</wrapper>

unwrap.xsl:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:import href="stylesheet.xsl"/>

  <xsl:template match="/wrapper/node()[1]">
    <xsl:apply-imports/>
  </xsl:template>
</xsl:stylesheet>

Assim, para resumir: stylesheet.xsl é escrito para http://example.org/data.xml, o navegador é apontado wrapper.xml eo usuário deve ver o transformou http://example.org/ data.xml .

Este é um dos raros casos em que as coisas funcionam conforme o esperado no IE (e Chrome), mas não Firefox.

AFAIK Firefox suporta entidades XML externos, mas parece que eles são invisíveis em código XSL. Eu encontrei este artigo a partir de 2006, descreve este problema no Firefox 1.5 (I 'm usando 3.5.3)

Existe alguma solução para isso?

Foi útil?

Solução

Isso XML parece familiarizado;)

Atualmente, o Firefox não carregar DTD do exterior e referências de entidade, por causa da segurança e de negação de preocupações de Serviços . Por exemplo: http://en.wikipedia.org/wiki/Billion_laughs

Há um Mozilla bug aberto descrevendo os motivos e longo debate sobre se deve ou não fazer algo que é configurável: https: //bugzilla.mozilla. org / show_bug.cgi? id = 22942

Não parece ser um solução para o carregamento DTDs , , mas eu estou supondo que provavelmente não é uma solução viável para você .

Firefox irá carregar Local arquivos DTD

Se você colocá-los neste diretório para Windows:

C:\Program Files\Mozilla Firefox\res\dtd\...

O diretório para Linux:

/**mileage may vary**/MozillaFirefox/lib/res/dtd/

Uma idéia se locomover utilizando a referência de entidade: Se você pode controlar o conteúdo da wrapper.xml, então você poderia buscar o conteúdo de http://example.org /data.xml (lado do servidor) e eco-lo como o conteúdo completo do arquivo de capa, com a adição da Instrução Stylesheet Processing (supondo que você tem algumas capacidades do lado do servidor dinâmico).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top