web-dev-qa-db-ja.com

XSLTとXSL-FOの違いは何ですか?

XSLTとXSL-FOの違いは何ですか?

私が読んだすべてのリソースは、まるでそれらが1であるか、少なくとも非常に密接に結びついているかのようにそれらを扱います。

42
cwap

頭字語の類似性を除いて、2つのテクノロジーは同じW3C仕様(ドラフト形式)の一部でした。 XSL(XSL-fo)とXSLTを2つの個別の仕様に分割することが後で決定されました。

W3Schoolsからの引用

XSL-FOは正式にXSLと命名されています

なぜこの混乱なのか? XSL-FOとXSLは同じものですか?

はい、そうですが、説明します。

スタイリングは、情報の変換とフォーマットの両方に関するものです。 World Wide Web Consortium(W3C)が最初のXSLワーキングドラフトを作成したとき、XMLドキュメントの変換とフォーマットの両方の言語構文が含まれていました。

その後、W3Cのワーキンググループは、元の草案を個別の勧告に分割しました。

* XSLT, a language for transforming XML documents
* XSL or XSL-FO, a language for formatting XML documents
* XPath, a language for navigating in XML documents

年表の詳細な注釈は、Dave Pawsonのホームページにあります: http://www.dpawson.co.uk/xsl /sect1/history.html

19
Mads Hansen

[〜#〜] xsl [〜#〜]は、XMLドキュメントの変換とレンダリングに使用される言語のファミリーです

[〜#〜] xslt [〜#〜](XSL Transformations):XMLドキュメントを他のXMLに変換するための言語ドキュメント、またはWebページの[〜#〜] html [〜#〜]などのその他の形式、プレーンテキストまたはXSL Formatting Objects、これは後で[〜#〜] pdf [〜#〜]などの他の形式に変換される可能性があります、PostScript、PNG。

変換には、次の3つの方法があります:

  1. 参照:ブラウザに変換を実行させます:<xsl:processing-instruction>を使用して
  2. 埋め込み:JavaScriptを使用したクライアント側の変換
  3. ランタイム:あらゆる種類のブラウザでXMLデータを利用できるようにするために、サーバー上でXMLドキュメントを変換できます。

enter image description hereXSL-FO(XSL Formatting Objects):オンライン表示ではなく印刷出力用に設計されているため、Webブラウザーではサポートされていません。 (@Hobbesから)
現在サポートされている出力形式には、PDF、PCL、PS、AFP、TIFF、PNG、SVG、XML(エリアツリー表現)、印刷、AWT、TXTがあります。主な出力ターゲットはPDFです。 ソース

コード例:

<fo:table-row height=".5cm">
            <fo:table-cell>
                <fo:block></fo:block>
            </fo:table-cell>
        </fo:table-row>

フローチャート: enter image description here

7
Premraj

XSLTは変換に使用され、XSL(XSL-FOと同じ)はフォーマットに使用されます。

http://www.w3schools.com/xslfo/xslfo_intro.asp

6
Björn

ウィキペディアの定義 はどうですか?

XSL Formatting Objects(XSL-FO)は、PDFを生成するために最もよく使用されるXMLドキュメントフォーマット用のマークアップ言語です。 XSL-FOは、XMLデータの変換とフォーマットのために設計されたW3CテクノロジーのセットであるXSLの一部です。 XSLの他の部分は、XSLTとXPathです。 2006年12月12日現在、XSL-FOの現在のバージョンはv1.1です。

3
Manuel

w3schools tutorial site (w3.orgとは関係ありません)が言っているように、これはかなり混乱する可能性があります。

XSL-FOは正式にXSLと名付けられました

enter image description here

つまり、XSL-FOとXSLは同じものですが、違います。

XSLは基本的に、XMLデータをHTMLドキュメントに表現します。XSL-FOは、ドキュメント自体のフォーマットについてです。たとえば、XMLをWord文書に変換する場合は、ページ番号の追加、マージンまたはページレイアウトの変更、ヘッダーとフッターの追加などを行います。これらのアイテムは、XSL FOタグ、XSLTはドキュメントプロパティにアクセスする方法がありません。技術分野では、XMLデータがWordまたはPDFドキュメントでレンダリングされます。ページ番号、レイアウトが必要になります。形式、ヘッダーなど。これらはドキュメントの非常に重要な部分です。

もう1つの大きな違いは、XSLとXSL FOには異なるエンジンがあります。XSLはXSL-FOタグをレンダリングできません。この質問では、XSL FOに使用するエンジンについて説明します

ベスト商用xsl foエンジンはどれですか?

このような典型的なXSL Fo tempate lools

<?xml version="1.0" encoding="ISO-8859-1"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

<fo:layout-master-set>
  <fo:simple-page-master master-name="A4">
    <fo:region-body />
  </fo:simple-page-master>
</fo:layout-master-set>

<fo:page-sequence master-reference="A4">
  <fo:flow flow-name="xsl-region-body">
    <fo:block>Hello W3Schools</fo:block>
  </fo:flow>
</fo:page-sequence>

</fo:root> 

XMLデータへの参照がないことに注意してください。それはすべてドキュメント自体をフォーマットすることです。これは、XMLデータを法的文書に変換する際に非常に重要な要素です。出力ドキュメントがPDFまたはWordの場合、ポケットベル番号、ドキュメント番号、レイアウトなどが必要になるためです。この情報がなければ、ページ番号やヘッダーなどを実装するのは非常に困難です。

XMLデータをプルするので、このドキュメントにはほぼ確実にXSLタグが含まれるため、混乱が生じます。ただし、XSL Foエンジンがない場合、ドキュメントはレンダリングされません。

要するに、それらは似ており、一緒に機能しますが、同じものではありません。それらは異なるエンジンによってレンダリングされます。

2
Hammad Khan

他の多くのことと同様に、それはあなたの見方と歴史に依存します。

XSLTは、「XMLドキュメントを他のXMLドキュメントに変換するための」言語(XMLで記述)ですが、現在のXSLT 3.0 CR( http://www.w3.org/TR/xslt-30/ =)これを「XMLドキュメントを他のXMLドキュメントに変換するために設計された言語主に」に変更します。 (強調が追加されました。)

XSL-FOは、「フォーマットのセマンティクスを指定するためのXMLボキャブラリ」です。これは、「Extensible Stylesheet Language(XSL)Version 1.1」勧告( http://www.w3.org/TR/xsl11/ )で定義されています。 Antenna Houseなどからのフォーマッターは、FOボキャブラリーのXML文書を取り、スタイル付きのページ付けされた出力を生成します。

歴史が入るところは、最初はたった1つの仕様-拡張スタイルシート言語(XSL)-が両方の変換を定義していました-XMLをFO XMLボキャブラリーに取り込む-スタイリング-FOをスタイル付きのページ付けされた形式に取得します。DavePawsonの履歴ページ( http://www.dpawson.co.uk/xsl/sect1/history。 html )はMads Hansenの回答からリンクされており、完全な詳細がありますが、XSLが勧告になるまでの過程で、変換部分は一般的に有用であると見なされ、「XSL Transformations(XSLT)」として分類されました。マークアップは新しいものではありませんでしたが、複数の(ほとんどの)互換性のある実装を備えた標準を用意することは、新鮮な息吹でした。

XSLTがXMLドキュメントの一部をアドレス指定できる方法も一般的に有用であると見なされ、「XMLパス言語(XPath)」として分割されたため、他の仕様で使用できました。 (XPathは、XQueryやXLinkなどで使用されます。)

XSL 1.1勧告は依然として変換とフォーマットのプロセスを定義しているという見方が重要ですが、変換部分はたまたま別のドキュメントで定義されています。 http://www.w3.org/TR/xsl11/#d0e386 を参照してください

公式のXSL 1.1 PoVは、XSLTとXSL-FOはどちらもXSLの一部であり、おそらくFO=フォーマッターは変換の一部を実行できますが、実際には、ほとんどの人がXMLをFO外部XSLTプロセッサを使用したボキャブラリと、そのFO XMLをフォーマッタにフィードします。

歴史と見解が一致するのは、XSLT 1.0( http://www.w3.org/TR/xslt )がXSLシステムの一部として定義されていることです。

XSLTは、XMLのスタイルシート言語であるXSLの一部として使用するために設計されています。 XSLTに加えて、XSLにはフォーマットを指定するためのXMLボキャブラリーが含まれています。 XSLは、XSLTを使用してXMLドキュメントのスタイルを指定し、ドキュメントがフォーマットボキャブラリを使用する別のXMLドキュメントに変換される方法を記述します。

しかし、そのような見方はXSLT 2.0( http://www.w3.org/TR/xslt20/ )には存在せず、XSLT 3.0の時代にはもうなくなっていました。

観点の最後の部分は、多くの人が「XSL」と言うときは、XSLTだけを意味しますが、「XSL」と言うときは、XSL-FOを意味しますが、FO =フォーマッタは両方を実行できます。

1
Tony Graham

XSL-FOはExtensible Stylesheet Language Formatting Objectsの略で、フォーマットに関するものであり、すべての混乱を避けるためにXSLと呼ばれています。そのため、XSL-FOについてもう心配する必要はありません。

ただし、XSLTはxMLの変換に関するものです。したがって、それは非常に明確です。 XSLはフォーマットについてであり、XSLTは変換についてです。

0
Srikar Doddi