xslt tutorial xslt transformations elements with examples
이 튜토리얼은 XSLT의 정의, 변환, 요소 및 사용법을 예제로 설명합니다. 또한 XSLT 변환 코드를 개발하기위한 XPath의 중요성을 다룹니다.
'XSLT'라는 용어는 'XSL'과 'T'의 두 단어를 결합하여 생성되며, 'XSL'은 'Extensible Stylesheet Language'의 약어이고 'T'는 'Transformation'의 약어입니다.
따라서 기본적으로 XSLT는 소스 XML 문서를 XML 문서 또는 XSL-FO (Formatting Objects) 등을 사용하여 HTML, PDF와 같은 다른 형식으로 변환 / 변환하는 데 사용되는 변환 언어입니다.
학습 내용 :
XSLT 소개
변환은 XSLT 프로세서 (예 : Saxon, Xalan)의 도움으로 발생합니다. 이 XSLT 프로세서는 XSLT 코드를 포함하는 하나의 XSLT 파일이있는 소스로 하나 이상의 XML 문서를 가져 오며 결과 / 출력 문서는 아래 다이어그램과 같이 나중에 생성됩니다.
XSLT 프로세서는 X-Path를 사용하여 소스 XML 문서를 구문 분석하여 루트 요소에서 시작하여 문서 끝까지 다른 소스 요소를 탐색합니다.
추천 자료 => 당신이 알아야 할 모든 것 X-Path
XSLT 변환
변환을 시작하려면 XSLT 코드가 실행될 하나의 XML 문서, XSLT 코드 파일 자체 및 XSLT 프로세서가있는 도구 또는 소프트웨어가 필요합니다 (학습 목적으로 소프트웨어의 무료 버전 또는 평가판을 사용할 수 있습니다).
# 1) XML Code
다음은 XSLT 코드가 실행될 소스 XML 코드입니다.
파일 이름: Books.xml
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 2) XSLT 코드
아래는 위의 XML 문서에서 실행되는 XSLT 코드입니다.
파일 이름: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
# 3) 결과 / 출력 코드
위의 XML 문서에서 XSLT 코드를 사용한 후 아래 코드가 생성됩니다.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st 9987436700 SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 4) 웹 브라우저에서 결과보기 / 출력
서적:
도서 ID | 책 이름 | 저자명 | 발행자 | 가격 | 판 |
---|---|---|---|---|---|
5350192956 | XSLT 프로그래머 참조 | 마이클 케이 | Wrox | 40 달러 | 4 위 |
3741122298 | 헤드 퍼스트 자바 | 캐시 시에라 | O'reilly | 19 달러 | 1 위 |
9987436700 | SQL 전체 참조 | 제임스 R. 그 로프 | McGraw-Hill | 45 달러 | 3 차 |
XSLT 요소
위의 XSLT 코드를 이해하고 제대로 작동하려면 먼저 다양한 XSLT 요소와 해당 속성을 이해해야합니다.
# 1) 또는
모든 XSLT 코드는 루트 요소로 시작하거나
속성 :
- @xmlns : xsl : XSLT 문서를 XSLT 표준과 연결합니다.
- @버전: 파서에 대한 XSLT 코드의 버전을 정의합니다.
#두)
이 선언은 소스 문서의 선택된 입력 요소를 출력 문서의 정의 된 대상 요소 규칙으로 처리하거나 변환하는 데 적용되는 규칙 세트를 정의합니다.
기본적으로 속성에 따라 두 가지 유형의 템플릿을 사용할 수 있습니다.
(i) 명명 된 템플릿 : xsl : 템플릿 요소에 @name 속성이 포함 된 경우이를 명명 된 템플릿이라고합니다.
명명 된 템플릿은 xsl : call-template 요소에 의해 호출됩니다.
(ii) 경기 템플릿 : xsl : template 요소에는 입력 노드에 적용된 일치 패턴 또는 XPath가 포함 된 @match 속성이 있습니다.
일치 템플릿은 xsl : apply-template 요소에 의해 호출됩니다.
xsl : template 요소에는 @match 속성이나 @name 속성 또는 둘 다 있어야합니다. 일치 속성이없는 xsl : template 요소에는 모드 속성과 우선 순위 속성이 없어야합니다.
위의 XSLT (
에) 일치 템플릿을 기반으로하는 XSLT 코드. 아래 노란색 및 회색으로 강조 표시된 변경된 코드를 참조하면 위와 동일한 출력 결과가 생성됩니다.
Books:-
Book ID Book Name Author Name Publisher Price Edition
강조 표시된 영역은 스크린 샷을 참조하십시오.
비) .NET을 사용하는 명명 된 템플릿을 기반으로하는 XSLT 코드 아래 노란색 및 회색으로 강조 표시된 변경된 코드를 참조하면 위와 동일한 출력 결과가 생성됩니다.
Books:-
Book ID Book Name Author Name Publisher Price Edition
강조 표시된 영역은 스크린 샷을 참조하십시오.
#삼)
프로세서는 @select 속성에 정의 된 XPath가있는 모든 템플릿을 찾아 적용합니다.
@mode 속성은 동일한 입력 내용으로 둘 이상의 출력 방법을 제공하려는 경우에도 사용됩니다.
# 4)
프로세서는 @name 속성 (필수) 내에 값이있는 템플릿을 호출합니다.
요소는 매개 변수를 템플릿에 전달하는 데 사용됩니다.
입력을 위해 테스트 데이터를 사용하여 프로그램을 실행해야하는 이유는 무엇입니까?
# 5)
위 코드에 정의 된대로 @select 속성에 정의 된 XPath 표현식과 관련된 문자열 / 텍스트 값을 제공하십시오.
이것은 책 이름의 가치를 줄 것입니다.
# 6) : 반복
이렇게하면 정렬 된 순서로 각 노드 집합 (@select (필수) 속성에 정의 된 xpath)에 대한 지침이 처리됩니다.
위의 코드는 상점 / 책의 각 노드 집합에 대해 다음을 의미합니다.
/ store / book (1)
/ store / book (2)
/ store / book (3)
정렬 순서를 정의하기 위해 xsl : for-each의 자식으로 사용할 수도 있습니다.
# 7) : 조건부 처리
xsl : if 명령어는 @test 속성의 부울 값이 참일 경우에만 처리됩니다. 그렇지 않으면 명령어가 평가되지 않고 빈 시퀀스가 반환됩니다.
2'> Condition True: Count of books are more than two.
결과: 조건 참 : 도서 수가 2 개 이상입니다.
여기서 count ()는 미리 정의 된 함수입니다.
# 8) : 대안 조건 처리
xsl : choose는 xsl : when 요소의 @test 속성 내에서 테스트되는 여러 조건에 대해 여러 케이스를 가지고 있으며, 모든 xsl : when 중에서 먼저 true가되는 테스트 조건은 먼저 처리되고 선택적 xls : otherwise가 있습니다. 조건 테스트 중 어느 것도 충족되지 않으면이 xsl : otherwise가 고려됩니다.
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
결과: 조건 참 : 책의 개수가 3 개입니다.
# 9)
xsl : copy는 컨텍스트 항목에서 작동합니다. 즉 노드 인 경우 컨텍스트 노드를 새로 생성 된 노드에 복사하고 컨텍스트 노드의 자식을 복사하지 않습니다. 이러한 이유로이를 얕은 사본이라고합니다. xsl : copy-of 요소와 달리 xsl : copy에는 @select 속성이 없습니다.
아래 코드에서 컨텍스트 항목은 출력에 복사되고 모든 하위 항목은 xsl : apply-template에 의해 재귀 적으로 호출 및 복사됩니다.
node () | @ * 모든 노드와 모든 속성을 재귀 적으로 나타냅니다.
결과: 이렇게하면 소스 문서의 모든 노드와 속성이 반복적으로 출력 문서에 복사됩니다. 즉, 소스 문서의 정확한 사본이 생성됩니다.
# 10)
xsl : copy-of는 기본적으로 모든 하위 및 속성이있는 노드 시퀀스를 반복적으로 복사합니다. 이러한 특성으로 인해이를 딥 복사라고도합니다. @select 속성은 XPath 평가에 필요합니다.
결과: 이렇게하면 소스 문서의 모든 노드와 속성이 반복적으로 출력 문서에 복사됩니다. 즉, 소스 문서의 정확한 사본이 생성됩니다.
현재 노드 및 현재 속성의 복사본을 나타냅니다.
#열한)
이 요소는 대상 결과에 주석을 쓰는 데 사용되며이 태그 옆에있는 모든 텍스트 내용은 주석 처리 된 출력으로 인쇄됩니다.
이것은 주석 노드로 출력되도록 인쇄됩니다.
결과:
# 12)
이렇게하면 결과 문서에 대한 텍스트 노드가 생성되고 xsl : text 내부의 값은 출력 할 문자열로 인쇄됩니다.
이것은
텍스트 줄.
산출:
이것은
텍스트 줄.
# 13)
이것은 @name 속성에 언급 된 이름을 가진 결과 문서에 요소를 생성합니다. 이름 속성은 필수 속성입니다.
결과: 5350192956
# 14)
이렇게하면 결과 문서의 상위 요소에 대한 속성이 생성됩니다. 속성의 이름은 name 속성에 의해 정의되고 속성의 값은 아래 코드에 주어진 것처럼 select 속성에 언급 된 XPath에 의해 계산됩니다. 이름 속성은 필수 속성입니다.
결과:
Salesforce 개발자 인터뷰 질문 및 답변 pdf
#열 다섯)
이 요소는 선택한 노드를 오름차순 또는 내림차순으로 순서대로 정렬합니다. 노드 또는 XPath는 @select 속성을 통해 제공되며 정렬 방향은 @order 속성에 의해 정의됩니다.
아래 코드에서 우리는 알파벳 순서로 책 이름에 따라 모든 책 목록을 얻을 것입니다.
Books:-
Book ID Book Name Author Name Publisher Price Edition
강조 표시된 영역은이 스크린 샷을 참조하십시오.
결과: 아래 목록에는 알파벳 순서, 즉 오름차순으로 책 이름이 포함되어 있습니다.
서적:
도서 ID | 책 이름 | 저자명 | 발행자 | 가격 | 판 |
---|---|---|---|---|---|
3741122298 | 헤드 퍼스트 자바 | 캐시 시에라 | O'reilly | 19 달러 | 1 위 |
9987436700 | SQL 전체 참조 | 제임스 R. 그 로프 | McGraw-Hill | 45 달러 | 3 차 |
5350192956 | XSLT 프로그래머 참조 | 마이클 케이 | Wrox | 40 달러 | 4 위 |
# 16)
이 요소는 값을 포함하는 변수를 선언합니다. 변수는 전역 변수 또는 지역 변수 일 수 있습니다. 변수의 이름은 @name 속성으로 정의되고이 변수가 보유 할 값은 @select 속성으로 정의됩니다.
전역 변수에 대한 액세스는 전역입니다. 즉, 변수는 모든 요소 내에서 호출 될 수 있으며 스타일 시트 내에서 계속 액세스 가능합니다.
전역 변수를 정의하려면 아래 코드에서 노란색으로 강조 표시된대로 스타일 시트의 루트 요소 옆에 'SecondBook'변수가 전역 변수이며 두 번째 책의 이름을 포함하고 있음을 선언하면됩니다.
지역 변수에 대한 액세스는 정의 된 요소에 로컬입니다. 즉, 해당 변수는 회색으로 강조 표시된 아래 코드에 표시된대로 정의 된 요소 외부에서 액세스 할 수 없습니다. 변수 'first book'은 지역 변수이며 첫 번째 책의 이름을 보유합니다.
전역 변수를 로컬 변수로 호출하려면 아래 노란색으로 강조 표시된 것처럼 변수 이름 앞에 달러 기호 ($)가 사용됩니다. $ .
First Book Name: Second Book Name:
강조 표시된 영역은 스크린 샷을 참조하십시오.
결과:
첫 번째 책 이름 : XSLT 프로그래머 참고 자료
두 번째 책 이름 : Head First Java
# 17)
이 요소는 특정 키와 일치하는 패턴 값에 대해 키를 선언하는 데 사용됩니다.
이름은 @name 속성 (“ 게시자 가져 오기 “), 나중에 key () 함수 내에서 사용됩니다. @match 속성은 XPath 표현식 (“ 책 “), 아래 노란색 강조 표시된 @match는 상점에서 사용 가능한 모든 책의 색인을 생성하는 데 사용됩니다.
@match 속성에 비해 @use 속성이 사용되며 XPath 표현식 ( 'publisher')을 통해 해당 키에 대한 값을 가져 오는 노드를 선언합니다.
이제 'Wrox'출판사 만 출판 한 책의 세부 사항이 필요하다면 키-값 쌍을 만들어 xsl : key 요소를 통해 해당 값을 쉽게 얻을 수 있습니다.
key (‘get-publisher’,‘Wrox’) Key ()는 두 개의 매개 변수를 취합니다. 첫 번째는 키의 이름입니다.이 경우에는 'get-publisher'이고 두 번째는 검색해야하는 문자열 값이며이 경우에는 'Wrox'입니다.
Books:-
Book ID Book Name Author Name Publisher Price Edition
강조 표시된 영역은 스크린 샷을 참조하십시오.
dwg 파일을 열 수있는 프로그램
결과:
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
결과 / HTML보기 :
서적:
도서 ID | 책 이름 | 저자명 | 발행자 | 가격 | 판 |
---|---|---|---|---|---|
5350192956 | XSLT 프로그래머 참조 | 마이클 케이 | Wrox | 40 달러 | 4 위 |
# 18)
이 요소는 XSLT 개발에서 디버깅 목적으로 사용됩니다. 요소는 응용 프로그램의 표준 출력 화면에 출력을 제공합니다.
@terminate 속성은 'yes'또는 'no'의 두 가지 값과 함께 사용됩니다. 값이 'yes'로 설정되면 메시지가 실행되기 위해 테스트 조건이 충족되는 즉시 구문 분석기가 종료됩니다.
이를 이해하기 위해 입력 문서에서 가격 요소가 아래 코드에서와 같이 우연히 비워지면 프로세서가 xsl을 사용하여 쉽게 얻을 수있는 빈 가격 요소를 만나는 즉시 처리가 중지되어야한다고 가정 해 보겠습니다. 아래 XSLT 코드와 같이 if 테스트 조건 안에 메시지가 표시됩니다.
디버거 경고는 응용 프로그램 표준 화면에 표시됩니다. 21 행에서 xsl : message에 의해 처리가 종료되었습니다.
입력 XML 코드 :
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
강조 표시된 영역은 스크린 샷 참조 :
XSLT 코드 :
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
강조 표시된 영역은 스크린 샷 참조 :
결과: 파서가 빈 가격표를 발견하면 즉시 처리를 종료합니다., 파일 끝에 오지 않습니다.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st 강조 표시된 영역은 스크린 샷 참조 :

# 19) &
요소는 내부에 정의 된 경우 템플릿에 대한 매개 변수를 정의합니다. 내부에 전역 매개 변수로 정의하거나 내부에 해당 템플릿에 대한 로컬 매개 변수로 정의 할 수 있습니다.
의 값은 템플릿이 byor를 호출 할 때 전달 / 제공됩니다.

내부에 정의 된 매개 변수의 값을 템플릿에 전달합니다. @name과 같은 속성은 요소의 @name 속성과 일치해야하는 매개 변수의 이름을 포함합니다. @Select 속성은 해당 매개 변수에 값을 설정하는 데 사용됩니다.

매개 변수의 값을 가져 오려면 변수 달러 기호 ($)가 사용됩니다.

소스 XML 코드 :
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
XSLT 코드 :
List of Books Name :-
Book Name:
강조 표시된 영역은 스크린 샷을 참조하십시오.

결과 출력 :
List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference