문제

내가하려는 것은 XML 문서를 가져가는 것입니다. http://example.org/data.xml XSL 스타일 시트를 적용하여 보여줍니다. (문서 자체를 수정하고 지침을 추가 할 수 없습니다)

따라서 다음과 같은 유틸리티 XML 파일이 있습니다.

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>

unprap.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>

요약 : stylesheet.xsl이 작성되었습니다 http://example.org/data.xml, 브라우저는 Wrapper.xml을 가리키고 사용자는 변환 된 것을 볼 수 있습니다. http://example.org/data.xml.

이것은 IE (및 Chrome)에서 예상대로 작동하지만 Firefox에서 예상대로 작동하는 드문 경우 중 하나입니다.

Afaik Firefox는 외부 XML 엔티티를 지원하지만 XSL 코드에서는 보이지 않는 것 같습니다. 나는 찾았다 이 기사 2006 년부터 Firefox 1.5 에서이 문제를 설명합니다 (3.5.3을 사용하고 있습니다).

이것에 대한 해결 방법이 있습니까?

도움이 되었습니까?

해결책

그 XML은 친숙해 보입니다 ;)

현재 Firefox는 보안 및 서비스 거부 문제로 인해 외부 DTD 및 엔티티 참조를로드하지 않습니다. 예를 들어: http://en.wikipedia.org/wiki/billion_laughs

개방이 있습니다 모질라 버그 그 이유와 오랜 논쟁을 설명 할 수 있는지에 대한 토론 : 구성 가능한 것을 만들 수 있는지 여부에 대한 논쟁 : https://bugzilla.mozilla.org/show_bug.cgi?id=22942

DTD로드하는 데 하나의 해결 방법이있는 것 같습니다., 하지만 아마도 당신을위한 실행 가능한 해결책이 아니라고 생각합니다.

Firefox가로드됩니다 현지의 DTD 파일

Windows 용이 디렉토리에 넣으면 다음과 같습니다.

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

Linux 디렉토리 :

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

엔티티 참조를 사용하는 한 가지 아이디어 :Wrapper.xml의 내용을 제어 할 수 있다면 내용을 가져올 수 있습니다. http://example.org/data.xml 스타일 시트 처리 명령어를 추가하여 (동적 서버 측 기능이 있다고 가정) (서버 측) 및 래퍼 파일의 전체 내용으로 반영합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top