2010-02-03 4 views
4

현재 프로젝트에서 XML과 XSLT를 사용하고 있으며 브라우저가 PHP를 xsltprocessor와 같은 것을 사용하기 위해 스타일 시트로 HTML로 렌더링하도록하는 것이 좋은지 알고 싶습니다.브라우저 렌더링 XSLT와 PHP 렌더링 XSLT

브라우저 xslt 프로세서를 사용하는 주된 이유 중 하나는 API가 가까운 미래에 내 XML 데이터에 액세스 할 수있게하는 것입니다. 그래서 XML 변환이 가능하도록 클라이언트 측 변환을 원합니다.

PHP xsltprocessor에 대해 잘못되었을 수 있지만 xml이 PHP를 통해 처리되면 수신 된 데이터가 렌더링 된 XML (나의 경우 HTML)이며 더 이상 XML 데이터를 사용할 수 없습니다. 그게 맞습니까?

문제를 해결해 주셔서 감사합니다.

답변

0

모두 최종 목표에 달려 있습니다. 나는 xml로 보고서를 생성하는 응용 프로그램에서 작업하고 처리를 수행하기 위해 xml과 xslt를 브라우저에 보냅니다.

당신이 이미 클라이언트에 추가 처리를 할 수있는 언급 한 바와 같이
  • HTML 상당히 장황하고 당신이 당신의 XML을 지정하는 컨트롤이있는 경우 당신이 잘못되고 있음을 보장 할 수 있습니다 :이 방법에 대한 몇 가지 이유가있다 그래서 결국 서버와 브라우저간에 소량의 데이터를 보냅니다.
  • xslt는 브라우저에서 캐시 될 수 있으므로 처음 사용 후 오버 헤드가되지 않습니다.
  • 서버에 대한 변환은 서버에로드를 추가합니다.이로드는 많은 사람들이 동시에 페이지에 액세스하려고 할 때 영향을 줄 수 있습니다.

경우에 따라 서버에서 변환을 수행합니다. 예 : 우리는 html 테이블로 변환 한 다음 http 컨텐츠 유형을 변경하여 결과를 Excel로 보냅니다.

1

더 많은 제어 권한이 있으므로 변환 서버 쪽을 사용하는 것이 좋습니다. 브라우저를 사용하는 경우 브라우저마다 렌더링 엔진에 약간의 차이가있을 수 있습니다. 서버에서 변형하고 html을 전달하면 정확하게 생성하려는 html을 지정하고 해당 html의 정적 버전이 올바른지 확인한 다음 XSLT에서 html을 생성하는지 확인하여보다 명확한 테스트를 수행 할 수 있습니다 바르게.

클라이언트 측에서 XML을 사용할 수있게하려면 변환해야 할 부분에서 필요한 XML 섹션 (또는 전체 DOM)을 출력하여 JavaScript 변수 또는 페이지에서 액세스 할 수있는 위치에 넣을 수 있습니다 .

클라이언트 측 렌더링은 작고 제어 된 (예 : 내부) 용도에 적합하지만 출력 서버 측에 대한 엄격한 제어가 필요한 곳에서는 더 신뢰할 수있는 것으로 나타났습니다.

+1

브라우저 XSLT 렌더링을 사용하여 모든 주요 브라우저에서 Javascript를 작동시키는 데 문제가 있음을 인정해야합니다. 그러나 전반적으로 HTML은 동일한 방식으로 렌더링되므로 Javascript의 이상한 동작 이외에도 클라이언트 측 변환이 나쁜 결정이라고 생각하지 않습니다. 브라우저를 전혀 지원하지 않는 브라우저가 있습니까? –

+0

모든 브라우저에서 지원하는 것으로 알고 있지만 확장 기능이나 XSLT 기본 이외의 기능을 처리하는 방법과 다른 점이 있습니다. 아마도 정상적으로 작동하지만 최종 사용자 경험이 무엇인지 알 수 없으므로 문제가되는 것이 얼마나 중요한지에 달려 있습니다. –

1

MVC 패턴으로 응용 프로그램을 디자인하면 문제가되지 않습니다. API를 통해 일반 브라우저와 XML에 HTML을 노출 할 수 있습니다.

그리고 서버 측에서 XSLT를 실행하더라도 API를 추가 할 때 해당 단계를 건너 뛰는 것은 매우 간단합니다.

일반적으로 클라이언트 쪽의 XSLT에는 많은 불편 함이 있습니다. 스타일 시트와 모든 데이터가 완전히로드되기 전에 대기 시간이 많이 걸리기 때문에 에 아무것도 입력하지 마십시오. 렌더링이 시작됩니다. 평범한 HTML을 사용하면 대기 시간이 짧아지고 (하나의 파일 만 스트리밍 됨) HTML이 완료되기 전에 추가 리소스가 다운로드되기 시작합니다.

+0

그래서 서버 대기 시간보다 높은 대기 시간을 예상합니다. 하지만 스타일 시트가 브라우저 캐시에 있다면 어떨까요? –

+0

스타일 시트가 캐시 된 경우에도 XSLT가 페이지 생성을 시작하기 전에 XML 전체가 다운로드 될 때까지 기다려야합니다. XML이 HTML보다 훨씬 작지 않으면 (gzipped 크기 비교!) 여전히 느립니다. – Kornel