2010-05-15 4 views
0

XML 파일에서 XSL 스타일 시트를 생성하는 응용 프로그램이 있습니까? 나는 매우 복잡한 XML 파일을 가지고 있는데 이것은 잘 형성된 SVG 파일이다.XML 용 XSL을 생성하는 응용 프로그램이 있습니까?

XML을 XSL로 변환 할 수있는 소프트웨어 응용 프로그램이 있습니까?

+2

자체는 두 부분으로 갖는 "XSL"== XML 스타일 시트 언어 : 변환 (XSLT) 및 레이아웃 (XSL 포맷 오브 이는 내장 된 SVG와 XSL-FO 문서로 변환 SVG jects, XSL-FO). 너 무슨 소리 야? 또는 더 구체적으로 말하자면, XSLT가 XSL-FO를 생성하기를 원합니까? 아니면 뭔가를 만들 XSLT를 만드는 무언가? – Richard

+0

xml 파일에 대해 xsl-fo를 생성하는 응용 프로그램을 찾고 있습니다. – user338292

+0

사실 XML을 PDF로 변환해야합니다.하지만 최악의 부분은 XML에 svg 태그가 있으며 XML을 따르는 것이 매우 어렵다는 점입니다. 따라서 SVG 태그를 읽는 xsl-fo도 작성해야합니다. 그래서 thats 문제는 내가 카페, 솔루션을 가진 사람? – user338292

답변

2

의 제 10 장 (코드 생성) 이러한 몇 가지 흥미로운 사례가있다, 당신은 SVG 이미지에서 XSL-FO 파일을 생성 할 가정합니다.

하나의 옵션은 fo:instream-foreign-object에 SVG 이미지를 인라인으로 포함하는 것입니다. (this SVG 이미지를 사용하여) 완전한 예 :

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 

    <fo:layout-master-set> 
    <fo:simple-page-master master-name="master"> 
     <fo:region-body /> 
    </fo:simple-page-master> 
    </fo:layout-master-set> 

    <fo:page-sequence master-reference="master"> 
    <fo:flow flow-name="xsl-region-body"> 
     <fo:block> 
     <fo:instream-foreign-object> 

      <svg xmlns="http://www.w3.org/2000/svg" 
       width="200" height="200"> 
      <circle cx="100" cy="100" r="50" stroke="black" 
        stroke-width="5" fill="red" /> 
      </svg> 

     </fo:instream-foreign-object> 
     </fo:block> 
    </fo:flow> 
    </fo:page-sequence> 

</fo:root> 

또 다른 옵션은 fo:external-graphic에서 SVG 이미지를 참조하는 것입니다 :

<fo:external-graphic src="Svg_example4.svg"/> 

이를 자동화하려는 경우, 당신은 단지 XSLT를 작성할 수

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       version="1.0"> 
    <xsl:template match="/"> 

    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 

     <fo:layout-master-set> 
     <fo:simple-page-master master-name="master"> 
      <fo:region-body /> 
     </fo:simple-page-master> 
     </fo:layout-master-set> 

     <fo:page-sequence master-reference="master"> 
     <fo:flow flow-name="xsl-region-body"> 
      <fo:block> 
      <fo:instream-foreign-object> 
       <xsl:copy-of select="." /> 
      </fo:instream-foreign-object> 
      </fo:block> 
     </fo:flow> 
     </fo:page-sequence> 

    </fo:root>  

    </xsl:template> 
</xsl:stylesheet> 
5

XSL 파일에는 소스 XML 파일을 다른 형식 (XML 일 수도 있음)으로 변환하는 방법에 대한 지침이 들어 있습니다. 따라서 소프트웨어가 XML 파일을 XSL 스타일 시트로 변환 할 방법을 알지 못해도 XML 파일을 XSL 스타일 시트로 변환 할 수 없습니다.

HTML 파일에서 PHP 스크립트를 사용하고자하는 것과 같습니다. 명확히하기 : PHP 스크립트가 HTML 페이지를 생성 할 수 있습니다.

<html><body>hello world</body></html> 

원본 스크립트의 모양을 추론 할 수 없습니다. 간단한 echo() -call이거나 복잡한 디코딩 작업의 결과 일 수 있습니다.

XML에서 XSL 로의 변환과 동일합니다. 소프트웨어는 XML 결과를 기본 XSL 변환 시트로 변환하는 방법을 알 수 없기 때문에 직접해야합니다.

+0

-1 - 소스 XML 파일을 XSL로 변환 할 수 있습니다. 소스 HTML 파일을 PHP 스크립트로 변환 할 수도 있습니다. –

+0

이 작업을 수행 할 수있는 유일한 방법이 없습니다 ... 안녕하세요!은 (는) PHP 스크립트에서 만들 수 있습니다! 그것은 MySQL 쿼리 또는 단순히 명령의 결과 일 수 있습니다. " hello world ..."... XML -> XSL에 대한 동일한 동작! – Simon

+0

확실한 방법은 없습니다. 그러나 소스 XML에서 XSL을 생성하는 방법에 대한 특정 패턴이있는 경우 수행 할 수 있습니다. –

0

IntelliJ은 XML 파일에서 XSD를 생성 할 수 있으며 그 반대의 경우도 마찬가지입니다. 커뮤니티 에디션에 기능이 있는지는 모르겠지만 라이선스 버전은 가능합니다.

+0

XSD! = XSL (T) :) – Simon

1

아니요. 그러나 XSL 파일을 쉽게 만드는 데 도움이되는 몇 가지 솔루션을 사용할 수 있습니다. 예 : Altova XMLSpy

1

XSL은 XML에서 XSL을 생성하는 데 사용할 수 있습니다. 그러나 XSL은 이미 XML이므로이 단순한 사실로 인해 사용자를 구체적으로 알 수 없습니다.

소스 XML과 원하는 XSL을 지정할 수 있습니까? 당신이 성취하고자하는 것을 알지 못하면 훨씬 더 많은 것을 말할 수 없습니다.

previous question을 바탕으로

XSLT Cookbook

관련 문제