XSL : 가져 오기 및 XSL : 스타일 시트 포함 Google 크롬에서 작동하지 않습니다.

StackOverflow https://stackoverflow.com/questions/1620589

  •  06-07-2019
  •  | 
  •  

문제

XSL 스타일 시트를 사용하는 웹 사이트를 작성하고 있으며 다른 시트가 수입하는 유용한 스타일 시트에 유용한 기능의 작은 라이브러리를 구축하고 있습니다.

<xsl:import href="util" />

모든 시트의 상단에. XSL : Import를 지원하지 않으므로 Chrome에서는 작동하지 않습니다. 누군가가 서버 측에서 XSL을 읽을 수있는 스타일 시트를 작성해 주시겠습니까? 클라이언트로 보내기 전에 관련 스타일 시트를 가져 오십시오.

도움이 되었습니까?

해결책

Chrome에 도달하기 전에 스타일 시트 서버 사이드를 결합하는 다음과 같은 일을 할 것입니다. 첫 번째 단계는 그 때문에 제자리에 있습니다 xsl:import 모든 장소를 가져온 스타일 시트로 교체하는 것과 동일하지 않습니다.

  1. 모두 다 바꿔 xsl:import ~와 함께 xsl:include (가져 오기 우선 순위는 적용되지 않습니다 xsl:include, 따라서 코드를 변경하고 대신 우선 순위를 사용해야 할 수도 있습니다)
  2. 아래 서버 측 스타일 시트를 사용하여 서빙하기 전에 하나로 병합하십시오.
  3. 몇 주를 기다리십시오 (몇 달이 될 수 있습니다). Chrome에 대한 수정을 만들었고 현재 개발자 팀과 협력하여 빌드에 수정을 포함하고 있습니다.
<xsl:template match="node()">
    <xsl:copy>
       <xsl:copy-of select="@*"/>
       <xsl:apply-templates select="node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="xsl:include">
   <!-- you'll probably want to be a bit more restrictive here -->
   <xsl:copy-of select="document(@href)/xsl:stylesheet/*" />
</xsl:template>

업데이트: 메모 : Chrome 버그는 Safari에도 나타납니다.

다른 팁

libxml2 및 libxslt 모듈로 파이썬으로 할 수 있습니다.

import libxml2, libxslt

styledoc = libxml2.parseFile("page.xsl")
style = libxslt.parseStylesheetDoc(styledoc)
doc = libxml2.parseFile("somefile.xml")
result = style.applyStylesheet(doc, None)

그런 다음 물건을 다시 제공하십시오.

PHP에서 이와 같은 것을 시도하십시오.

<?php
$sXml  = "<xml>";
$sXml .= "<testtag>hello tester</testtag>";
$sXml .= "</xml>";

# LOAD XML FILE
$XML = new DOMDocument();
$XML->loadXML( $sXml );

# START XSLT
$xslt = new XSLTProcessor();
$XSL = new DOMDocument();
$XSL->load( 'xsl/index.xsl', LIBXML_NOCDATA);
$xslt->importStylesheet( $XSL );
#PRINT
print $xslt->transformToXML( $XML );
?>

http://www.w3.org/tr/xslt#literal-result-element 기존 XSL 스타일 시트를 XSL 스타일 시트로 변환하는 XSL 스타일 시트를 작성할 때 Duplicate-XSL-Namespace 문제를 해결하는 방법을 보여줍니다. <xsl:import>s 확장.

그러나 그 사이의 차이에 대해주의하십시오 <xsl:import> 그리고 <xsl:include>.

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