Domanda

Quello che sto cercando di fare è prendere un documento XML, diciamo http://example.org/ data.xml e vederlo con un foglio di stile XSL applicata. (Non riesco a modificare il documento stesso e aggiungere una direttiva)

Quindi ci sono un paio di file XML di utilità in questo modo:

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>

Quindi, per riassumere: stylesheet.xsl è scritto per http://example.org/data.xml, il browser è puntato al wrapper.xml e l'utente dovrebbe vedere la trasformata http://example.org/ data.xml .

Questo è uno di quei rari casi in cui le cose funzionano come previsto in IE (e Chrome), ma non Firefox.

Per quanto ne sappia Firefox supporta entità XML esterni, ma sembra come se fossero invisibili in codice XSL. Ho trovato questo articolo dal 2006, descrive questo problema in Firefox 1.5 (I 'm utilizzando 3.5.3)

C'è una soluzione per questo?

È stato utile?

Soluzione

che XML sembra familiare ;)

Attualmente, Firefox non sarà carico esterno DTD e di riferimenti ad entità, per motivi di sicurezza e la negazione del servizio riguarda . Per esempio: http://en.wikipedia.org/wiki/Billion_laughs

C'è un Mozilla bug che descrive le ragioni per le quali e lungo dibattito circa se o non fare qualcosa che è configurabile: https: //bugzilla.mozilla. org / show_bug.cgi? id = 22942

ci sembra di essere uno soluzione per DTD carico , ma credo che probabilmente non è una soluzione praticabile per voi .

Firefox caricherà locale file DTD

se li mettete in questa directory per Windows:

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

La directory per Linux:

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

Un'idea per aggirare utilizzando il riferimento di entità: Se è possibile controllare il contenuto del wrapper.xml, allora si potrebbe recuperare il contenuto di http://example.org /data.xml (lato server) e l'eco fuori come l'intero contenuto del file involucro, con l'aggiunta del foglio di stile di istruzioni di elaborazione (ammesso che abbiate alcune funzionalità server-side dinamici).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top