XSLT가 인터넷 붐 기간에 등장한 다른 많은 언어의 인기를 한 번도 본 적이 없는 이유는 무엇입니까?[닫은]

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

  •  09-06-2019
  •  | 
  •  

문제

XSLT(XML 스타일시트 언어 변환)의 사용은 인터넷 붐 중에 나온 다른 많은 언어만큼 인기를 얻은 적이 없습니다.사용 중이고 경우에 따라 성공적인 대규모 회사(예:블리자드 엔터테인먼트), 주류에 도달한 적이 없는 것 같습니다.왜 이것이다고 생각합니까?

도움이 되었습니까?

해결책

한 가지 문제는 XSLT입니다. 외모 복잡한.대부분의 다른 언어에도 유사점이 있으므로 모든 개발자는 언어 구성을 선택할 수 있어야 합니다.문제는 구조와 데이터가 모두 똑같아 보이기 때문에 두 언어를 구별하기 어렵게 만들어 XSLT를 다른 언어보다 읽기 어렵게 만든다는 것입니다.

두 번째 문제는 이 언어의 용도가 다른 언어보다 더 제한적이라는 것입니다.XSLT는 그 기능이 훌륭합니다.XML을 복잡하거나 급진적으로 변환합니다.하지만 다른 언어만큼 광범위한 문제에 적용되지는 않아서 많이 사용되지는 않습니다.

셋째, 많은 프로그래밍 언어에는 XML 변환을 위한 자체 라이브러리가 있습니다.XML로 작업할 때 대부분의 경우 약간의 변경이나 조회만 필요합니다.XML은 개발자가 이미 다른 언어로 작성 중인 프로그램에 의해 생성되거나 소비될 수도 있습니다.이러한 요소는 언어에 내장된 유틸리티를 사용하는 것이 더 편리하다는 것을 의미합니다.

이러한 모든 문제의 원인이 되는 또 다른 문제는 관성입니다.즉, 사람들은 그것을 모르고, 그것이 많이 필요하다는 것을 알지 못하므로, 다른 옵션이 있으면 해결책으로 그것을 피합니다.

결국에는 솔루션을 만들 때 많은 개발자가 마지막으로 선택하는 언어가 됩니다.결과적으로 XSLT가 작업에 가장 적합한 도구인 경우에도 XSLT를 피할 가능성이 높습니다.

다른 팁

XSLT는 함수형 프로그래밍을 사용합니다. 이는 대부분의 프로그래머에게 익숙하지 않은 것입니다(따라서 일부 사람들은 이를 직관적이지 않다고 생각하는 것 같습니다).

제 생각에는 표준 XSLT에서 가장 짜증나는 점 중 하나(XSLT 1.0이 제가 사용한 유일한 버전이기 때문에 XSLT 1.0에 대해 이야기하고 있습니다)에는 문자열 변환 및 일부 기본 날짜-시간 함수 조작에 대한 지원이 부족하다는 것입니다.

내가 결코 이해할 수 없는 한 가지는 왜 Translate()와 같은 함수가 xpath에 설계되고 구현되었는지, 반면에 다음과 같은 다른 더 유용한 함수는 무엇인지입니다. 바꾸다, to_lower, to_upper, 또는 - 미친 짓을 해보자 - 정규 표현식은 그렇지 않았습니다.

이러한 문제 중 일부는 다음과 같이 해결되었습니다. eXSLT (확장 xslt ?) Microsoft의 MSXML 이외의 파서용입니다.MSXML과 호환되지 않는다고 선언되었기 때문에 실제로 사용한 적이 없기 때문에 추측한다고 말합니다.

파일을 변환할 때마다 문자열 변환 문제(예::프랑스어 형식으로 주어진 불규칙하게 패딩된 날짜를 미국 형식으로 변환합니다(2008년 31월 1일에서 2008-01-31) 허...

이러한 텍스트 조작 문제는 일반적으로 매우 기본적이었고 JScript 기능을 사용하여 XSL을 확장할 수 있도록 함으로써 MSXML에서 쉽게 해결되었습니다.XSL 템플릿을 호출하는 것처럼 JScript 함수를 호출하여 일부 처리를 수행할 수 있지만 항상 그 솔루션이 우아하지 않다는 것을 알았고 결국 나만의 XSL 템플릿 라이브러리를 만들었습니다.먼저 JScript 방식으로 인해 XSL 이식성이 손상되었고 다음에는 프로그래밍 논리를 혼합해야 했기 때문입니다.순수 XPath/XSLT 표현의 일부 비트와 JScript를 사용한 DOM/객체 표기법의 기타 비트.

업데이트 가능한 변수가 없다는 것은 초보자에게 매우 혼란스러운 또 다른 제한 사항입니다. 일부 사람들은 이를 극복하지 못하고 계속 어려움을 겪습니다.일부 간단한 경우에는 매개변수화된 템플릿과 재귀 호출(예: 증가 또는 감소 카운터 구현)을 혼합하여 해결 방법을 사용할 수 있지만 현실을 직시하면 재귀는 그다지 자연스럽지 않습니다.

XSLT 2.0 사양에서 이러한 모든 제한 사항이 해결되었다고 들었는데, 안타깝게도 MS는 이를 구현하지 않고 대신 XQuery를 홍보하기로 결정했습니다.안타깝지만 두 가지를 모두 구현해 보는 것은 어떨까요?나는 XSLT가 HTML의 CSS만큼 인기를 끌 가능성이 여전히 높다고 생각합니다.생각해보면 XSLT를 배우는데 가장 어려운 부분이 XPath이고, 나머지는 CSS의 캐스케이딩 동작을 이해하는 것만큼 어렵지 않고 CSS가 워낙 유명해졌는데...

따라서 내 의견으로는 여기에 언급된 모든 작은 사항이 부족하고 XSLT 2.0에서 이를 해결하는 데 걸린 시간(어차피 MS도 이를 지원하지 않음)이 이러한 인기 없는 상황을 초래했다는 것입니다.결국 MS가 이를 구현하기로 결정했다면 얼마나 좋았을지...

대부분의 XSLT 구현은 메모리 사용량이 높기 때문에(언어 설계로 인해 발생한다고 가정합니다), 사람들은 XSLT가 특히 적합하지 않은 모든 종류의 작업과 XSL의 순전히 선언적 특성을 위해 XSLT를 남용하는 경향이 있기 때문입니다. 이는 특정 유형의 변환을 매우 어렵게 만듭니다.

XML에는 적합하지만 일반적인 코딩에는 적합하지 않습니다.여기에는 일반적인 기본 개념(예: 변경 가능한 변수)이 부족하고 단순해야 할 것을 상당히 복잡하게 만듭니다(또는 불가능하게 만듭니다).대부분의 문제는 xml이 훌륭한 데이터 표현 언어이지만 훌륭한 프로그래밍 언어는 아니라는 사실에서 비롯됩니다.즉, 저는 매일 사용하며 합리적인 곳에 추천하고 싶습니다.외부 네임스페이스와 함께 사용하면 더욱 유용해질 수 있습니다(Java 호출 등).결국, 그것은 배워야 할 또 다른 언어이며, 많은 코더는 자신에게 익숙하거나 익숙한 것과 유사한 것을 고수하는 것을 선호합니다.

Java, C#, JavaScript 등을 사용하는 코드를 작성하고 유지 관리하는 것이 더 쉽기 때문입니다.XML 스트림을 역직렬화하고, 변환하고, 원하는 출력을 내보내는 경우 XSLT는 실질적인 성능 이점을 제공하지 않습니다.

XSLT는 어떤 일을 쉽게 해주지만 다른 일을 아주 아주 어렵게 만듭니다.

잘...어쩌면 xslts를 작성하는 것이 고통스럽기 때문일 수도 있습니다.몇 달 전에 몇 개의 xslt를 작성해야 했고 뾰족한 괄호를 꿈꾸고 있었습니다...

<Really> 
    <No>
        <fun/>
    </No>
</Really>         

(나는 이것이 xslt가 아니라는 것을 안다)

일반적으로 XML 데이터를 다른 형식의 XML 데이터로 변환해야 하지만 다른 처리는 수행하지 않는 경우는 매우 제한적입니다.일반적으로 XML은 두 개의 개별 시스템 사이의 중개자로 사용되며, 그 중 하나는 일반적으로 다른 시스템의 출력을 처리하기 위해 맞춤 제작됩니다.따라서 일종의 변환을 수행해야 하는 추가 단계 없이 시스템 중 하나를 작성하여 다른 시스템의 XML 출력을 처리하는 것이 더 간단합니다.

XSL은 주류이며 널리 채택됩니다.다른 어떤 언어를 말씀하시는 건가요?XSL은 프로그래밍 언어가 아닙니다. 그냥 변환 언어, 그래서 범위가 꽤 제한되어 있습니다.

내 생각에 XML 구문은 데이터를 설명하는 데는 분명 좋지만 본질적으로 프로그래밍 언어(XSLT)에 대한 훌륭한 구문은 아닙니다.

이전에 언급했듯이 XSLT(JavaScript의 "좋은 부분"과 같은)는 함수형 프로그래밍 언어입니다.대부분의 전통적인 프로그래머는 이러한 무국적 상태를 싫어합니다.또한 너무 많은 기존 프로그래머가 꺾쇠 괄호를 싫어합니다.

그러나 가장 중요한 것은 XSLT를 올바르게 사용하면 플랫폼에 구애받지 않는 방식으로 웹 서버의 선언적 GUI 생성 및 데이터 바인딩 문제를 모두 해결할 수 있다는 것입니다.Microsoft와 같은 공급업체는 이러한 "불편한" 기능을 칭찬할 의욕이 없습니다.

그러나 나는 Microsoft가 IDE(Visual Studio)에 대한 최고의 XSLT 지원을 갖고 있다고 주장할 것입니다. 세상에.

내 생각에는 너무 많은 사용 사례를 다루려고 하여 튜링 완전(또는 제가 듣기로는) 언어가 되려고 한 것 같습니다.사소한 변환을 시도하면 결국 복잡한 루프, 조건을 작성하게 됩니다...추악하고 장황한 언어로 작성하는 것이 GPL을 사용하는 것이 가장 좋습니다.

내 생각에는 이러한 복잡성으로 인해 XSLT의 올바른 구현을 작성하기가 어렵고 사용 가능한 선택이 제한되므로 엔터프라이즈 코드가 아닌 작고 효율적인 코드를 조작하기를 좋아하는 해커들 사이에서 널리 사용됩니다.

XSLT는 매우 강력하지만 문제에 대해 다른 사고 방식이 필요합니다.또한 초기 버전에서는 유용한 데이터 기능을 제공하지 않아 생활 자체를 어렵게 만들었습니다.예를 들어 ToUpper() 스타일 메서드를 사용하면 일반적으로 다음과 같이 구현합니다.

<xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>  

<xsl:value-of select="translate($toconvert,$lcletters,$ucletters)"/>

가장 쉬운 코딩 방법은 아닙니다!

xslt는 이미 이스케이프된 데이터와 입력 및 출력의 명확한 정의가 있는 경우 xml에서 xml로 변환하는 데 적합합니다.xml2html과 같은 작업에 사용하는 것은 나에게 매우 골치 아픈 것처럼 보이며 거의 모든 동적 언어와 CSS를 사용하면 출력을 스타일로 구현하기가 훨씬 쉽습니다.

나는 이것이 '복합 웹 서비스 아키텍처'에 적합하다는 것을 알았습니다. 때로는 여러 웹 서비스가 함께 작동하여 최종 출력을 얻습니다. 해당 웹 서비스가 XML을 통해 서로 통신해야 하는 경우 XSLT는 xml 메시지를 한 형식에서 다른 형식으로 변환할 수 있습니다.

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