IT Share you

XSLT 1.0을 XSLT 2.0으로 업그레이드

shareyou 2020. 12. 14. 21:07
반응형

XSLT 1.0을 XSLT 2.0으로 업그레이드


XSLT 1.0에서 2.0으로 업그레이드하는 데 관련된 사항은 무엇입니까?
1-업그레이드의 가능한 이유는 무엇입니까?
2-업그레이드하지 않는 이유는 무엇입니까?
3-마지막으로 업그레이드 단계는 무엇입니까?

나는 요약 요약을 기대하고있다-짧은 버전 :)


XSLT 1.0에서 2.0으로 업그레이드하는 데 관련된 사항은 무엇입니까?

1-업그레이드의 가능한 이유는 무엇입니까?

XSLT 프로그래머라면보다 편리하고 표현력이 뛰어난 XSLT 2.0 언어 + XPath 2.0 및 새로운 XDM (XPath 데이터 모델)의 이점을 크게 누릴 수 있습니다.

XSLT 2.0 Pluralsight 과정 을 시청하여 XSLT 2.0 의 힘에 대해 확고하고 체계적으로 이해하는 것이 좋습니다.

당신은 :

  • 강력한 타이핑 및 모든 XSD 유형을 사용할 수 있습니다.

  • 고유 한 (스키마) 유형을 정의하는 기능.

  • XPath 1.0에서 대응하는 요소가없는 (단순히 누락 된) XPath 2.0 시퀀스 유형.

  • 순수 XSLT ( 명령어)로 함수 를 정의하고 작성하는 기능xsl:function .

  • XPath 표현식 ( for절)의 범위 변수 .

  • 훨씬 더 강력하고 강력한 문자열 처리-XPath 2.0은 tokenize(), matches()replace()함수 에서 정규식을 지원 합니다.

  • 훨씬 더 강력한 문자열 처리 - 정규 표현식 XSLT 2.0 지원 - xsl:analyze-string, xsl:matching-substringxsl:non-matching-substring새 XSLT 지침.

  • 보다 편리하고 강력하며 표현력이 풍부한 그룹화 : xsl:for-each-group지침.

  • 날짜, 시간 및 기간에 대한 기능과 같은 새롭고 매우 강력한 XPath 2.0 기능이 많이 있습니다.

  • 새로운 XPath는 운영자 intersect, except, is, >>, <<, some, every, instance of, castable as, ... 등

  • 일반 XPath 연산자 >, <등은 이제 순서가 지정된 모든 값 유형에서 작동합니다 (XPath 1.0에서와 같은 숫자뿐만 아니라).

  • 새로운 안전한 값 비교 연산자 : lt, le, eq, gt, ge, ne.

  • XPath 2.0 to연산자는xsl:for-each select="1 to $N"

이러한 기능과 기타 많은 개선 사항 / 새로운 기능은 XSLT 프로그래머의 생산성을 크게 향상시켜 XSLT 1.0을 사용하여 동일한 모듈을 개발하는 데 필요한 짧은 시간 내에 XSLT 2.0 개발을 완료 할 수 있습니다.

강력한 타이핑을 사용하면 컴파일 시간에 많은 오류를 포착하고 즉시 수정할 수 있습니다. 저에게있어이 강력한 형식 안전성은 XSLT 2.0을 사용하는 가장 큰 장점입니다.

2-업그레이드하지 않는 이유는 무엇입니까?

  • 기존의 레거시 XSLT 1.0 응용 프로그램을 그대로두고 XSLT 1.0과 함께 계속 사용하는 동시에 XSLT 2.0을 사용하여 응용 프로그램 만 개발하는 것이 가능하고 합리적이며 비용 효율적 입니다.

  • 귀하의 경영진 + 기타 비 기술적 이유.

  • 잘못된 스타일로 작성된 레거시 XSLT 1.0 응용 프로그램이 많이 있습니다 (예 : 이제 다시 작성하고 코드를 리팩터링해야하는 DOE 또는 확장 기능 사용).

  • XSLT 2.0 프로세서를 사용할 수 없습니다.

3-마지막으로 업그레이드 단계는 무엇입니까?

  • 변화 version의 속성 xsl:stylesheet또는 xsl:transform에서 요소 "1.0""2.0".

  • 모든 xxx:node-set()기능을 제거하십시오 .

  • DOE를 제거하십시오.

  • xsl:value-of이제 첫 번째 항목 뿐만 아니라 시퀀스의 모든 항목을 출력 하는 놀라움에 대비하십시오 .

  • xsl:sequence가능한 한 새 지침을 사용하십시오. 모든 xsl:copy-of지침 을 대체하는 데 사용하십시오. xsl:value-of출력 유형이 문자열 또는 텍스트 노드가 아닌 경우 언제든지 대신 사용하십시오 .

  • 광범위하게 테스트하십시오.

  • When the testing has verified that the code works as expected, start refactoring (if deemed necessary). It is a good idea to declare types for any variables, parameters, templates and functions. Doing so may reveal new, hidden errors and fixing them increases the quality of your code.

  • Optionally, decide which named templates to rewrite as xsl:function.

  • Decide if you still need some extension functions that are used in the old version, or you can rewrite them easily using the new, powerful capabilities of XSLT.

Final remarks: Not all of the above steps are necessary and one can stop and declare the migration successful on zero bug testing results. It is much cleaner to start using all XSLT 2.0/XPath 2.0 features in new projects.


Dimitre's answer is very comprehensive and 100% accurate (as always) but there is one point I would add. When upgrading to a 2.0 processor, you have a choice of leaving the version attribute set to "1.0" and running in "backwards compatibility mode", or changing the version attribute to "2.0". People often ask which approach is recommended.

My advice is, if you have a good set of tests for your stylesheets, take the plunge: set version="2.0", run the tests, and if there are any problems, fix them. Usually the problems will be code that was never quite right in the first place and only worked by accident. But if you don't have a good set of tests and are concerned about the reliability of your workload, then leaving version="1.0" is a lower-risk approach: the processor will then emulate all the quirks of XSLT 1.0, such as xsl:value-of ignoring all but the first item, and the strange rules for comparing numbers with strings.

참고URL : https://stackoverflow.com/questions/9387396/upgrading-xslt-1-0-to-xslt-2-0

반응형