Firefox 및 Chrome의 기본 XML 뷰어는 XML + XHTML을 구문 분석할 수 없습니다.

Firefox 및 Chrome의 기본 XML 뷰어는 XML + XHTML을 구문 분석할 수 없습니다.

나는 일반적으로 원주민에 매우 만족합니다XML 뷰어파이어폭스에서.

유효한 XML 파일(아래와 같은)을 명확하고 유용하게 표시합니다.

XML의 예:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <url>
    <loc>https://example.com/</loc>
    <lastmod>2020-03-17T15:57:23+00:00</lastmod>
  </url>

</urlset>

그러나 나는 XHTML을 XML에 추가하자마자(올바른 XHTML 네임스페이스 사용 - 아래 참조),XML 뷰어Firefox와 Chrome 모두에서 XML을 일반 텍스트로 표시하도록 되돌립니다.

XHTML 네임스페이스 및 요소:

  • XHTML 네임스페이스:xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • XHTML 요소:<xhtml:link />

XML + XHTML의 예:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">

  <url>
    <loc>https://example.com/</loc>
    <lastmod>2020-03-17T15:57:23+00:00</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/" />
    <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/" />
  </url>

  <url>
    <loc>https://example.com/de/</loc>
    <lastmod>2020-03-12T19:42:12+00:00</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/" />
    <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/" />
  </url>

</urlset>

오랫동안 나는 XML에 오류가 발생하여 무효화되고 있다고 생각했습니다. 그러나 수많은 타사 XML 유효성 검사기를 확인한 결과 XML은 확실히 유효합니다. 단지 브라우저 기본 뷰어가 (분명히) XML에 포함된 XHTML을 처리할 수 없다는 것입니다.

이 상황에서 원주민을 돕기 위해 내가 할 수 있는 일은 없을까?XML 뷰어Firefox 및 Chrome에서는 마크업을 XML로 이해하고 구문 분석합니다. 아니면 지금은 수행할 작업이 없으며 타사 소프트웨어가 유일한 답입니까?

답변1

웹 브라우저는 무엇이든 HTML로 렌더링하려고 합니다. HTML이 없다는 것을 확실히 알고 있는 경우에만 일반 텍스트 또는 XML로 렌더링하고 후자는 첫 번째 예에서와 같이 트리뷰로 렌더링합니다. 주목할만한 예외는 다르게 렌더링되는 SVG와 MathML입니다.

두 번째 예에서 브라우저는 HTML을 감지했기 때문에 HTML 보기로 전환했습니다.

약간의 설명 :

브라우저가 요소에 대한 스타일 정보를 갖고 있는 한 이를 활용할 것입니다. 이는 HTML의 경우입니다(기본 스타일이 브라우저에 하드코딩되어 있음). 그럴 것이다또한브라우저가 처리 명령을 통해 XML과 연관된 CSS를 찾은 경우

<?xml-stylesheet href="style.css"?>

또는 인라인 스타일을 통해(HTML style요소를 통해)

<html:style type="text/css">
  @namespace url("http://www.example.org/ns/example");
  @namespace html url("http://www.w3.org/1999/xhtml");
  paragraph {display: block;}
  meta {display: none;}
  html|style {display:none;}
  html|script {display:none;}
</html:style>

두 번째 예에서는 스타일이 하드코딩되고 암시되어 스타일이 렌더링된 HTML을 찾았기 때문에 그러한 스타일 정보를 찾았습니다.

브라우저가 XML 문서를 렌더링할 때 기본 스타일이 없는 모든 요소를 ​​다음과 같이 렌더링합니다.인라인 콘텐츠. 이것이 내용을 일반 텍스트로 표시하는 이유일 수 있습니다.

HTML 스크립트 요소를 찾았다면 그 안에 있는 Javascript를 실행했을 것입니다. 따라서 트리 보기는 단지 대체일 뿐이며 기본값은 아닙니다.

이 동작이 마음에 들지 않으면 웹 브라우저가 이 동작을 변경하는 구성 스위치를 지원하는지 찾아볼 수 있지만 저는 아무것도 모릅니다.

관련 정보