2011-11-23 3 views
2

IE9에서 XML로 인식되지 않는 xml 문서가 있습니다. 나는 올바른 XMLNS를 추가하는 시도 : XSL 속성은 또한이XML 용 스타일 시트가 IE9에서 렌더링되지 않습니다.

<?xml version="1.0" encoding="UTF-8"?> 

이 XML은 IE 6 7 8 완벽하게 렌더링하지만 IE9에서 작동하지 않습니다로 시작하는 올바른 헤더를 가지고있다. Quirks 모드 관련 문제인지 잘 모르겠다면 XML 문서에 DOCTYPE을 사용해야하는지 잘 모르겠습니다. 도움이 될 것입니다. 다음은 XML 문서의 처음 몇 줄입니다.

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="/mobiledoc/jsp/empi/master/CCD.xsl" ?> 
<ClinicalDocument xmlns="urn:hl7-org:v3" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:sdtc="urn:hl7-org:sdtc" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
        xsi:schemaLocation="urn:hl7-org:v3 http://xreg2.nist.gov:8080/hitspValidation/schema/cdar2c32/infrastructure/cda/C32_CDA.xsd" 
        classCode="DOCCLIN" 
        moodCode="EVN"> 
+2

우리가 방문 할 수있는 URL을 게시 고려 텍스트처럼 빈 페이지 또는 XML을 문서를 렌더링하지 않습니다 문제. 또는 문제를 재현 할 수있는 충분한 정보, 특히 XSLT와 XML의 최소한이지만 완전한 샘플 및 XML을 통해 Content-Type이 제공되는 HTTP를 통해 XML이 브라우저에 제공되는 방법에 대한 세부 정보를 게시하는 것을 고려하십시오. –

+1

더 많은 정보가 필요하다면 그 이유에 대해 물어보십시오. – Sap

+0

@MartinHonnen Martin 그래서 XML을 게시하려했으나 여기서 "attach"옵션을 찾지 못했습니다. 거대한 XML 때문에 복사 및 붙여 넣기가 어렵습니다. 나는 그것을 호스팅 할 수있는 웹 서버가 없다. – Sap

답변

2

"IE9에서 xml로 인식되지 않는 방법"에 대해 자세히 설명해 줄 수 있습니까? 오류 메시지가 나타나거나 단순히 IE9에서 이전 버전과 다르게 보입니까?

XML 파일이하는 첫 번째 작업은 "/mobiledoc/jsp/empi/master/CCD.xsl"의 XSLT 스타일 시트와 연결되므로 문제의 원인이 될 수 있습니다. 몇 가지 제안 :

  • <?xml-stylesheet .. ?> 비트를 제거하십시오. 이제 모든 브라우저에서 동일한 동작을합니까? (아마도 XML 파일의 계층 적보기 일 가능성이 있습니다.) 그렇다면 문제는 XSLT 스타일 시트에 있습니다.

  • 그 스타일 시트는 무엇을하나요? XML 파일을 HTML로 변환하는 경우 IE의 이전 버전이 허용하지만 IE9가 더 엄격한 일부 비 호환 (X) HTML 구문 또는 스타일을 사용 중일 수 있습니다. "인식되지 않음"이 레이아웃/디스플레이 문제 일 경우, 스타일 시트를 조정하면 브라우저에서 보이는 것을 고칠 수 있습니다.

지금까지 말씀 드린 내용을 토대로 시작해야 할 부분이있을 것입니다.

ETA : 아래 대화의 결과는 <xsl:output> 지시어가 4.01 HTML doctype을 출력에 강제한다는 것이 었습니다. 이 값을 <xsl:output method="html"/>으로 변경하면 (그리고 변환과 관련된 몇 가지 문제가 수정 됨) IE9에서 문제가 해결되었습니다.

+0

"인식되지 않음"은 XML이 브라우저에서 텍스트 (모든 텍스트 없음 태그)로 열린다는 것을 의미합니다. . 스타일을 렌더링하지도 않고 IE와 같은 XML 계층도 표시하지 않습니다. 네, XML을 HTML로 변환하고 있습니다. 두 번째 사항은 IE9를 덜 엄격하게 만들 수있는 방법이라고 생각하십니까? – Sap

+1

분명히 IE9는 원격 서버에서 XSL을 처리하지 않습니다. xsl에 대한 상대 링크가있는 것처럼 보이므로 괜찮습니다. 텍스트 만 표시한다는 사실은 마치 스타일 시트를 사용하여 XML을 처리하는 것처럼 들리지만 그렇지 않으면 태그를 볼 수 있습니다. 코드를 보지 않고서는 내가 제안 할 수있는 것은 매우 기본적인 XSL 스타일 시트로 동일한 XML을 테스트 한 다음 스타일 시트를 점차적으로 재구성하여 IE9 디스플레이를 깨는 비트 (또는 완전히 작동시킬 수 있는지 여부)를 확인하는 것입니다. –

+0

늦게 응답하여 죄송합니다. http://cynosuredev.com/CCDTest.xml에서 파일을 업로드했습니다. URL을 붙여 넣으면 호환성보기를 포함하여 모든 버전 Sap

1

문제가 해결되어 기쁩니다.이 특별한 경우입니다.
IE9에서 오류의 실제 이유는 아직 공개되지 않았으므로 여기에서 설명하겠습니다.

동작이 발생하는 이유는 IE9의 XSLT 처리의 버그입니다.

글쎄요. 실제로 버그가 아니며 오류보고가 잘못되었습니다. 요점은 IE9가 기본적으로 MSXML6을 적용하고 MSXML4와 관련하여 많은 부분이 변경되었다는 것입니다. XSLT에 일반적인 오류가있을 때 IE9는 처리되지 않고 기본 text() 템플릿으로 처리되어 모든 텍스트 노드를 표시합니다.
MSXML6에서 기본적으로 금지되어있는 XSLT에서 작업이 수행 될 때도 마찬가지입니다. 그래서 MSXML6에서 기본적으로 금지되어있는 것은 무엇입니까? 많이! 예를 들어 Jscript 적용. 그리고 DTD입니다. 그리고 document() 함수는 작동하지 않습니다.

위의 경우, 표시된 도구 (분명히 기본 템플릿 적용에서 오는 것임)에서 의심 스러울 수 있습니다. xslt에 오류가 있습니다 - 좋은 도구로 발견되기를 기다리고 있습니다.그러나이 IE9 동작은 열려있는 파일의 xml 부분에 텍스트가 없을 때 (즉, xslt가 런타임시 xml 파일을 가져 오는 등 모든 데이터 처리를 제공 할 때 xslt와 너무 분명하게 연결되지 않습니다. xslt 프로세스가 모두 속성 및 노드 이름에있는 xml의 데이터). 그냥 알면 돼 ...

F12 키를 눌러 개발자 도구로 이동하거나 도구 메뉴에서 선택하면 오류 메시지가 나타날 수 있습니다. 개발자 도구 하위 화면에서 스크립트 메뉴를 선택하고 페이지를로드하십시오. 콘솔 오른쪽에 다음과 같은 오류 메시지가 표시됩니다.

이 오류가 발생하면 xml의 텍스트 노드 만 표시됩니다 (따라서 빈 xml 루트 노드의 경우 페이지는 공백).
웹에서이 오류에 대한 참조는 하나만 발견 할 수 있습니다 : http://www.wikistep.org/bugzilla/show_bug.cgi?id=4140.

새로 고침 버튼 옆에있는 조각난 페이지 버튼 (항상 사용할 수있는 것은 아니지만, 다른 IE9 버그)을 클릭하여 "호환성보기"를 선택하면 페이지가 IE8 디스플레이로 돌아가고 다시 OK - 물론 xslt의 오류를 제외하고 MSXML 4.0에는 기본적으로 MSXML 6.0에있는 모든 제한이 없습니다. 확실히 더 안전하지만 매우 짜증나게합니다.

호환성보기를 선택하면 호환성보기가 자동으로 적용되는 사이트 목록에 파일 URL의 사이트 부분이 추가됩니다.
문제를 다시 발생 시키려면 Alt 키를 눌러 메뉴를 열고 도구/호환성보기 설정을 선택하고 다시 시도하기 전에 목록에서 사이트를 제거하여 해당 목록에서 사이트를 제거해야합니다.
호환성보기를 적용하는 트릭이 항상 문제를 해결하는 것은 아니라는 점에 유의하십시오. 예를 들어 xslt가 IE8 Jscript 버전에서 사용할 수없는 클래스를 포함하는 포함 된 JavaScript를 호출하면 xslt도 호환성보기에서 실패합니다.

이제 어떻게해야할까요? 사실 나는 확실하지 않다 - 그래서 다른 질문 가치가있다!
기본적으로 꺼져있는 속성은 켜져있을 수 있습니다. 그러나 일련의 명령문 내에서 DOM 객체에 XML 유형 문자열을로드 할 때 필자가 보았던 예는 - 그리고 나서 필요한 새 DOM 객체를 할당 할 수 있습니다 문자열을로드하기 전에 속성.
여기에서 IE9는 XML을 자동으로로드하고 XSLT를로드하여 XML을 처리합니다. 로딩이 일어나기 전에 어디에서 XML로드 프로퍼티를 설정할 수 있습니까?
시간이 걸릴 것이라고 확신하지만 - 알아낼 것입니다!

0

는 XSLT 기능 전 document('../_data/nav.xml')/page:nav | document('http://www.ok.kz/_data/nav.xml')/page:nav를 사용하고 다른 서버를 가리키는 경우는, 아니 설명과 함께,

관련 문제