수색…


비고

XSLT (XSL Transformations, Extensible Stylesheet Language Transformations)는 XML을 기반으로하고 XML을 조작하고 변환하는 것을 목적으로하는 프로그래밍 언어입니다. 함수형 프로그래밍 언어이자 W3C 표준입니다. XSLT를 사용하면 하나 이상의 XML 문서를 다양한 출력 형식 (XML, HTML, 텍스트)을 가질 수있는 결과로 변환 할 수 있습니다.

XSLT를 이해하려면 다음에 대해 잘 알고 있어야합니다.

  1. XML
  2. XPath

이 두 가지 기본 개념이 없으면 XSLT를 배우는 데 어려움이 있습니다. 첫째, XSLT 문서가 XML 문서이기 때문입니다. 둘째, XSLT 문서는 XPath를 사용하여 변형되는 XML 문서를 쿼리합니다.

추천 도서 : https://en.wikipedia.org/wiki/XSLT

버전

번역 사양 지위 출시일
XSLT 1.0 https://www.w3.org/TR/xslt 추천 1998-08-18
XSLT 2.0 https://www.w3.org/TR/xslt20 추천 2007-01-23
XSLT 3.0 https://www.w3.org/TR/xslt-30 후보 추천 2015-11-19

설치 또는 설정

XSLT는 특수 목적의 프로그래밍 언어입니다. XML 문서를 다른 XML 형식, HTML 또는 텍스트 기반 형식으로 변환하는 데 널리 사용됩니다.

사용중인 XSLT의 두 가지 주요 버전이 있습니다 : XSLT 1.0 및 XSLT 2.0. XSLT 1.0은 더 광범위하게 구현되었지만 XSLT 2.0에 비해 많은 제약과 제한이 있습니다. 사용할 버전을 결정해야합니다. 선택한 환경에서 XSLT 2.0 프로세서를 사용할 수 있다면 거의 언제나 더 나은 선택입니다.

(XSLT 1.0은 1999 년 11 월에 출시되었으며, Microsoft, IBM, Sun, Oracle과 같은 주류 공급 업체 및 여가 시간에 일하는 개별 애호가 모두에서 1 년에서 2 년 이내에 구현되었습니다 .XSLT 2.0은 1 월에 나왔습니다. 2007 년에 개발되었으며 원래 1.0 프로세서는 개발자가 관심을 잃었으므로 결코 업그레이드되지 않았습니다. 가장 널리 사용되는 XSLT 2.0 프로세서는 Saxon이지만 자체 독립 필드가 아닙니다. 다른 무료 제품에는 RaptorXML (Altova ), XmlPrime (CBCL) 및 Exselt 및 2.0 프로세서가 IBM WebLogic, MarkLogic의 XML 데이터베이스 서버 및 Intel XML Accelerator에 내장되어 있습니다.

XSLT 3.0의 사양은 기술적으로 완전합니다 (2017 년 4 월 권장 제안). 그러나 당분간 최첨단으로 간주 될 수 있습니다. 스트리밍, 패키지, JSON 지원과 같은 새로운 기능에 대한 긴급한 필요성이있는 경우에만 고려하십시오. , 또는 try / catch. Saxon, Exselt 및 RaptorXML의 세 가지 구현이 있습니다.

XSLT를 시작하려면 몇 가지 옵션이 있습니다.

  • 온라인 XSLT 도구를 사용하십시오. 여러 가지가 있습니다 ( "온라인 XSLT 도구"로 검색), 매우 안정적인 온라인 IDE는 http://xsltransform.net/ 입니다. 이것은 언어에 대한 초기 느낌을 얻는 좋은 방법이지만 실제 개발을 수행하면 이런 식으로 계속하고 싶지는 않을 것입니다.

  • 모든 브라우저에 내장 된 XSLT 엔진을 사용하십시오. 온라인 도구와 마찬가지로, 이것들은 당신이 아무것도 설치할 필요가 없다는 이점을 가지고 있습니다; 그러나 브라우저는 XSLT 1.0 만 지원하며 XML-to-HTML 변환 만 지원하며 디버깅 지원이 매우 약합니다. 최근의, 그러나 아직 실험적인 개발은 브라우저에서 XSLT 2.0 (및 XSLT 3.0의 일부)을 실행할 수있는 Saxon-JS입니다.

  • XSLT 프로세서 (예 : Saxon 또는 xsltproc)를 설치하십시오. 이러한 제품의 대부분은 운영 체제 명령 행을 사용하여 호출하거나 Java, C, C # 또는 Python과 같은 특정 프로그래밍 언어 용 API를 사용하여 호출 할 수 있습니다.

  • Altova XML Spy, SyncroSoft의 oXygen 또는 Stylus Studio와 같은 XML 개발 환경을 설치하십시오. 이것은 더 비싼 옵션이지만, 훨씬 더 풍부한 개발 지원과 디버깅 기능을 제공합니다.

어떤 옵션을 선택하든 먼저 XSLT 1.0 또는 XSLT 2.0을 사용할지 여부를 결정해야합니다.

간단한 XSLT 예제

다음은 XSLT를 사용하여 XML 파일의 데이터를 HTML 파일의 테이블로 변환하는 간단한 예제입니다. 이를 사용하여 간단한 XSLT 변환을 실험 할 수 있습니다.

전제 조건 : JRE (Java Runtime Environment)를 설치하고 JRE 위치를 PATH 변수에 추가하십시오. (Windows에서는 대부분의 설치 관리자가 경로에 Java를 추가합니다.)이 방법을 사용하면 명령 줄 창을 열고 java -version 명령을 실행하고 JRE에 대한 정보를 인쇄 할 수 있어야합니다.

  1. Java 용 Saxon-HE XSLT 프로세서 ( saxon.sourceforge.net) 를 다운로드하여 컴퓨터의 어느 곳으로나 압축을 풉니 다.
  2. 텍스트 편집기에서 다음 코드로 pets.xml 파일을 작성하십시오.
  <pets>
  <petType name="Dogs">
    <pet id="123" name="Sparky" vaccineStatus="vaccinated" healthStatus="healthy"/>
    <pet id="234" name="Sadie" vaccineStatus="unvaccinated" healthStatus="sick"/>
    <pet id="345" name="Herman" vaccineStatus="unvaccinated" healthStatus="unknown"/>
  </petType>
  <petType name="Cats">
    <pet id="456" name="Cleo" vaccineStatus="vaccinated" healthStatus="healthy"/>
    <pet id="567" name="Janet" vaccineStatus="unvaccinated" healthStatus="healthy"/>
    <pet id="678" name="Furry" vaccineStatus="vaccinated" healthStatus="sick"/>
  </petType>
</pets>
  1. 텍스트 편집기에서 다음 코드를 사용하여 petTransform.xsl 이라는 파일을 만듭니다.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="2.0">

<!-- handle the root XML element -->
<xsl:template match="/">
<html><head>
  <title>Pets that are available for adoption</title>
</head>
<body>
  <xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="pets">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="petType">
<h2><xsl:value-of select="@name"/></h2>
<table id="{@name}">
   <tr>
     <th colname="id">ID</th>
     <th colname="name">Name</th>
     <th colname="vaccinated">Vaccine status</th>
     <th colname="health">Health status</th>
   </tr>
   <tbody>
     <!-- add a row for each pet in this category -->
     <xsl:for-each select="pet">
       <tr>
         <td colname="id"><xsl:value-of select="@id"/></td>
         <td colname="name"><xsl:value-of select="@name"/></td>
         <td colname="vaccinated"><xsl:value-of select="@vaccineStatus"/></td>
         <td colname="health"><xsl:value-of select="@healthStatus"/></td>
       </tr>
     </xsl:for-each>
   </tbody>
 </table>
</xsl:template>

<!-- ignore the content of other tags because we processed them elsewhere -->
<xsl:template match="*">
<!-- do nothing -->
</xsl:template>

</xsl:stylesheet>
  1. 명령 줄 창을 열고 XML 및 XSLT 파일이있는 폴더로 이동하십시오.
  2. 다음 명령을 실행하십시오. 여기서 path_to_saxon.jarsaxon9he.jar 파일의 전체 경로입니다.
java -jar "path_to_saxon.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt

예 :

java -jar "C:\Program Files\SaxonHE9-7-0-7J\saxon9he.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt

이 명령은 한 줄로 실행하십시오.

  1. 텍스트 편집기에서 출력 파일 petOutput.html 을 엽니 다. 다음과 같이 표시되어야합니다.
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Pets that are available for adoption</title>
   </head>
   <body>
      
      <h2>Dogs</h2>
      <table id="Dogs">
         <tr>
            <th colname="id">ID</th>
            <th colname="name">Name</th>
            <th colname="vaccinated">Vaccine status</th>
            <th colname="health">Health status</th>
         </tr>
         <tbody>
            <tr>
               <td colname="id">123</td>
               <td colname="name">Sparky</td>
               <td colname="vaccinated">vaccinated</td>
               <td colname="health">healthy</td>
            </tr>
            <tr>
               <td colname="id">234</td>
               <td colname="name">Sadie</td>
               <td colname="vaccinated">unvaccinated</td>
               <td colname="health">sick</td>
            </tr>
            <tr>
               <td colname="id">345</td>
               <td colname="name">Herman</td>
               <td colname="vaccinated">unvaccinated</td>
               <td colname="health">unknown</td>
            </tr>
         </tbody>
      </table>
      
      <h2>Cats</h2>
      <table id="Cats">
         <tr>
            <th colname="id">ID</th>
            <th colname="name">Name</th>
            <th colname="vaccinated">Vaccine status</th>
            <th colname="health">Health status</th>
         </tr>
         <tbody>
            <tr>
               <td colname="id">456</td>
               <td colname="name">Cleo</td>
               <td colname="vaccinated">vaccinated</td>
               <td colname="health">healthy</td>
            </tr>
            <tr>
               <td colname="id">567</td>
               <td colname="name">Janet</td>
               <td colname="vaccinated">unvaccinated</td>
               <td colname="health">healthy</td>
            </tr>
            <tr>
               <td colname="id">678</td>
               <td colname="name">Furry</td>
               <td colname="vaccinated">vaccinated</td>
               <td colname="health">sick</td>
            </tr>
         </tbody>
      </table>
      
   </body>
</html>
  1. 웹 브라우저에서 출력 파일 petOutput.html 을 엽니 다. 간단한 테이블에 데이터를 표시해야합니다.


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow