インターネット ブームのときに登場した他の多くの言語ほど XSLT が人気がなかったのはなぜですか?[閉まっている]

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

  •  09-06-2019
  •  | 
  •  

質問

XSLT (XML スタイルシート言語変換) の使用は、インターネット ブームのときに登場した他の多くの言語ほど人気が​​ありませんでした。それは使用されていますが、場合によっては大規模な成功した企業によって使用されています(つまり、Blizzard Entertainment)、主流には到達していないようです。これはなぜだと思いますか?

役に立ちましたか?

解決

1 つの問題は、XSLT です。 見た目 複雑。他のほとんどの言語にも類似した言語構造があるため、開発者は誰でも言語構造を理解できるはずです。問題は、構成要素とデータがすべてまったく同じに見えるため、両者を区別することが難しく、XSLT が他の言語よりも読みにくくなっているということです。

2 つ目の問題は、その用途が他の言語に比べて限定されていることです。XSLT はその機能において優れています。XML に対して複雑または根本的な変換を行う。ただし、他の言語ほど幅広い問題に適用できるわけではないため、あまり使用されません。

第三に、多くのプログラミング言語には、XML を変換するための独自のライブラリがあります。XML を使用する場合、ほとんどの場合、小さな変更または検索のみが必要です。XML は、開発者がすでに別の言語で作成しているプログラムによって生成または消費されている可能性もあります。これらの要因は、言語の組み込みユーティリティを使用する方が便利であることを意味します。

これらすべての問題が寄与するもう 1 つの問題は、慣性です。つまり、人々はそれを知りませんし、その必要性があまりないと考えているため、別の選択肢がある場合に解決策としてそれを避けます。

最終的に行き着くのは、ソリューションを作成する際に多くの開発者が最終的に選択する言語です。結果として、XSLT が仕事に最適なツールである場合でも、XSLT が避けられる可能性さえあります。

他のヒント

XSLT は関数型プログラミングを使用しますが、これはほとんどのプログラマーが慣れていないことです (そのため、一部の人々はそれが直感的ではないと考えているのだと思います)。

私の意見では、標準 XSLT (私が使用した唯一のバージョンである XSLT 1.0 について話しているのです) で最も厄介なことの 1 つは、文字列変換といくつかの基本的な日付/時刻関数の操作がサポートされていないことです。

私がどうしても理解できなかったのは、なぜ、translate() などの便利な関数が設計され xpath に実装されたのかということです。 交換する, to_ lower, to_upper、 あるいは、クレイジーなことを言いましょうが、正規表現はそうではありませんでした。

これらの問題のいくつかはおそらく次の方法で解決されたと思います eXSLT (拡張 xslt ?) Microsoft の MSXML 以外のパーサー用。推測だと言うのは、MSXML と互換性がないと宣言されていたため、実際に使用したことがないからです。

ファイルを変換するときは常に文字列変換の問題 (例::フランス形式で指定された不規則に埋め込まれた日付をアメリカ形式、2008/1/31 から 2008-01-31 に変換します) そうですね...

これらのテキスト操作の問題は一般に非常に基本的なものであり、MSXML では XSL を JScript 関数で拡張できるようにすることで簡単に対処できます。XSL テンプレートを呼び出すのと同じように、JScript 関数を呼び出して何らかの処理を実行することもできますが、私は常にそのソリューションが洗練されていないと感じ、最終的には独自の XSL テンプレート ライブラリを作成することになりました。まず、JScript の方法では XSL の移植性が損なわれ、次にプログラミング ロジックを混在させる必要があるためです。純粋な XPath/XSLT 式の一部と、JScript を使用した DOM/オブジェクト表記の他のビット。

更新可能な変数がないことも、初心者にとって非常に混乱を招くもう 1 つの制限であり、これを克服できずに苦労し続ける人もいます。いくつかの単純なケースでは、パラメータ化されたテンプレートと再帰呼び出しを組み合わせて回避策を講じることができます (たとえば、増加または減少するカウンターを実装するため) が、正直に言って、再帰はそれほど自然ではありません。

これらすべての制限は XSLT 2.0 仕様で対処されたと聞いたと思いますが、残念ながら MS はそれを実装せず、代わりに XQuery を推進することを決定しました。それは悲しいことです。なぜ両方とも実装しないのでしょうか?XSLT は、CSS が HTML として普及したのと同じくらい普及する可能性がまだ十分にあると思います。考えてみると、XSLT の学習で最も難しいのは XPath で、残りは CSS のカスケード動作を理解するほど難しくはなく、CSS は非常に普及しました...

したがって、私の意見では、ここで言及したこれらすべての小さな点の欠如と、XSLT 2.0 でそれらに対処するのに時間がかかったことが (MS ですらそれをサポートしていなかったので)、この不人気な状況を引き起こしたのです。結局のところ、MSがそれを実装することを決定したことをどれほど願っているか...

ほとんどの XSLT 実装はメモリ フットプリントが大きいため (これは言語の設計によるものだと思います)、XSLT が特に適していないあらゆる種類の事柄に XSLT を悪用する傾向があり、XSL の純粋に宣言的な性質があるためです。そのため、特定の種類の変換は非常に困難になります。

XML には最適ですが、一般的なコーディングには適していません。典型的な基本概念 (可変変数など) が欠如しており、単純であるべきものが非常に複雑 (または不可能) になってしまいます。その問題のほとんどは、xml が優れたデータ表現言語であるが、優れたプログラミング言語ではないという事実に起因しています。そうは言っても、私は毎日使用しているので、意味のある場合にはお勧めします。外部名前空間と併用すると、さらに便利になります (Java の呼び出しなど)。結局のところ、これは学ぶべき別の言語であり、多くのプログラマーは、使い慣れたもの、または使い慣れたものに似たものを使い続けることを好みます。

Java、C#、JavaScript などを使用したコードの作成と保守が容易だからです。XML ストリームを逆シリアル化し、変換し、目的の出力をエクスポートする場合、XSLT はパフォーマンス上の大きな利点を提供しません。

XSLT は何かを簡単にしますが、他のことを非常に困難にします。

良い...xsltsを書くのが面倒だからかもしれません...数か月前にいくつかの xslt を書かなければならなかったのですが、私はとがった括弧を夢見ていました...

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

(これが xslt ではないことはわかっています)

一般に、XML データを別の形式の XML データに変換する必要があるが、それに対して他の処理を実行する必要がない場合は、非常に限られています。通常、XML は 2 つの別個のシステム間の仲介として使用され、一方は通常、他方の出力を処理するためにカスタムメイドされます。そのため、何らかの変換を実行するという追加の手順を必要とせずに、一方のシステムを作成して他方の XML 出力を処理するだけの方が簡単です。

XSL は主流であり、広く採用されています。他にどのような言語を指しますか?XSL はプログラミング言語ではありません。 ただの変換言語, したがって、範囲はかなり限られています。

要約すると、XML 構文はデータを記述するのには間違いなく優れていますが、本質的にプログラミング言語 (XSLT) であるものにとっては優れた構文ではない、ということだと思います。

前述したように、XSLT (JavaScript の「良い部分」のようなもの) は関数型プログラミング言語です。従来のプログラマーのほとんどは、このステートレスを嫌います。また、従来のプログラマの多くは山括弧を嫌います。

しかし、最も重要なことは、XSLT を正しく使用すると、プラットフォームに依存しない方法で、宣言型 GUI の生成と Web サーバーのデータ バインディングの問題の両方が解決されることです。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 を使用すると、出力をスタイルで実装するのがはるかに簡単になります。

これは「複合 Web サービス アーキテクチャ」に最適であることがわかりました。最終出力を得るために、多くの Web サービスが連携して動作することがあります。それらの Web サービス間で XML 経由で通信する必要がある場合、XSLT は XML メッセージを 1 つの形式から別の形式に変換できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top