重度のチェリャビンスク1C開発者とXSLTの使用方法

「テンプレートエンジン」とは何であり、それらのポイントは何ですか?という質問に戸惑いました。



読むのは便利ですが、どういうわけか「sipulariaでの飲酒のための口ip」についてです。 しかし、半日で、全体として、プレゼンテーションとロジックの分離、および何かを修正するためにエンコーダーを引っ張る必要のない大規模プロジェクトのテンプレートエンジンの利点について話している人々の正確な理解を始めました。それは仕事です。」



このトピックの全体的な複雑さは、実際のテンプレートエンジン(XML-> XLST-> "Hello world!"など)と、実際には言語拡張のライブラリであるためにのみ発生します。



それはどういう意味ですか? はい、たとえばSmartyはテンプレートエンジンではなく、書くことを可能にする頭字語のライブラリにすぎないという事実(PHPまたはSmartyのいずれかはわかりません。これは単に指で説明するための試みであり、コードに煩わされることはありません)

{foreach from=$data item="entry"}

{$entry.Comment|escape}



{/foreach}







代わりに

<?php

//... ,

$output = $output.''.$entry.''

//...

?>







つまり ロジックとマッピングの分離は発生しません- 言語拡張のみを使用します 。 メインコードから返す変数と形式(タイプ)を正確に認識し、その後、表示用の「テンプレートエンジン」でこれらの変数を使用する必要があります。



データのシリアル化は行われず、ソースロジックからのデータの「純度」を保証できるのはシリアル化のみです。 シリアル化されたデータにコードを含めることはできないと言っているのではなく、実行不可能になっていると言っています。 データの受信者は、受信したデータの復元方法を独自に決定する必要がありますが、「文章」には、言われたことの本質を独立して復元できるように、少なくとも主語と述語の両方を含める必要があります。 含まれているデータは、他の何かを「暗示し」たり、何かについて沈黙していません。まさにそのとおりです。



たとえば、「このロールには5ルーブルかかります」という表現を受け入れた場合、シリアル化の場合、未実現の表現のバリエーションは次のようになります。 (何?) "、"パンには5ルーブルがかかります(何?) "、"このパンには5(何?) "、"このパンには5ルーブルがかかります!(現地通貨パン?)「そして神格化されるでしょう」 money(???) "and"価格表をご覧ください! (wtf?!)。」



Smartyを使用すると、開発者は「-このパンはトリュスカヤのパトスブティックであるため、5000ルーブルかかります!」などのように発言できます。 そして、彼から受け取ったデータに基づいて、彼の論理の境界内にある決定を下すべきです。 つまり、「ああ、トヴェルスカヤ、あそこではすべてが高価なので、彼らが言ったように戦利品をばらばらにしなければならない」と考え始めるのです。



シリアル化により、ソースのロジックから自分を遠ざけて、「-それは少し高価です!」



連載は、村で祖母を見せるために一緒に撮った最後の旅行の写真のパックです。 シリアル化されていないデータ-マット紙に印刷された13x15の写真カードの代わりに、Blu-rayディスクを持ち歩くと、Blu-rayをサポートするラップトップがどこかにあることがわかります。



さて、「シリアル化」は良いという考えに触発されましたが、1Cはそれと何の関係があるのでしょうか?



少なくとも、Ryzhikov氏は、XML / XSLTテクノロジーのイリュージョンの忘れられない詩を作成したこのアイデアで啓発したようです。 私は個人的に漠然とどのくらい、何を吸う必要があるか想像します。

テンプレートエンジンを作成する、またはデータの外観を抽象化する最良の方法は、すべてをXMLに挿入し、XSLTを通過してHTML出力を取得することであるとプログラマーとデザイナーに教えられた多くの書籍と教科書があります。



バックエンドロジックをタブー化し、

誰もが文字通りそれを受け取り、同様の製品を作り始めました。 そしてもちろん、私たちは十分に耳を傾け、私たちの未来はXML / XSLTテクノロジーであると信じていました。

彼らは偉業を成し遂げ、XSLTテンプレートを十分な速さで動作させ、技術の開発に多大な労力と時間とお金を費やしました...最大の製品カタログには7万個の製品が含まれていました。



結論:

開発者は試していないため、業界のあらゆる努力にもかかわらず、XML / XSLTシステムのパフォーマンスは非常に低いままです。 はい、このパフォーマンスを絞る方法は? まず、SQLデータベースのデータがXMLに変換されます(これは、その構造のために大きなテキストファイルです)。 次に、XMLデータはサーバー部分に既にあるXMLパーサーにロードされます。そこでは、XPATHが動作するためにさらに多くのメモリを使用し、ロード時のXMLデータのインデックスの形成などを行います。 さらに、XSLTは膨大な量のデータを通過し、メモリを占有するテキストの出力を受け取ります。



同時に彼は、「ページのコンテンツが最大100キロの場合、膨大な量のデータはどこから来るのか」という質問をされたときに何が起こっているのかを心から理解していませんでした。



実際、ベースのxml-dumpをXSL-templateで処理する場合、どのようにして膨大なボリュームを占有できないのでしょうか?



勇気の狂気に私たちは歌を歌います!



マスターに同意する「独立した開発者」-「XSLT-ブレーキとサック!」



いいえ、まあ、想像してみてください-これは、LJのトピックにつまずく方法です(完全に同等の意味で)。

-今日、私は裸のワイヤーを取り上げて、濡れたお風呂に立ちました。 ネキーロは感電で私に衝撃を与えました、3時間は私の感覚になりました!



たくさんのコメントで:

-そして今日、私はワイヤーを取り上げました! そして、私はおかしくなりました!



-+ 1、お風呂が悪い! ラバーマットが支配的!



-ゴムが吸う、より良いプラスチック!



-あなた自身が吸うと、あなたのプラスチックはでたらめです!



-プラスチックはでたらめだとバザールで答えましたか?



-ハ、はい、私には友人がいます-タイヤ工場のディレクター、彼らはゴムだけを使用し、ある種のgovnoplastikは使用していません。 タイヤを作るのがいかにクールかを説明する必要はありません! これは、ウリュピンスクにあるろうそく工場ではなく、生産工場です!



-しかし、電流でbeatられたときはいつでも、ワイヤーをとると疲れました!



-はい、あなたはロサラ、ここで私はかつてワイヤーから風呂でめちゃくちゃにされたので、私は地下のシールドでノックアウトされた彼らをめちゃくちゃにした! わたしも家族も隣人もnorられないように! 他の人についても考えなければなりません!



一言で言えば、クリニック:)



これをしないでください!



テンプレートは、テンプレートとまったく同じように機能する必要があります。OEMか小売かによって、棚から取り出して、製品にアクセサリを装備します。 リテールの場合-その後、すべての言語のディスク、ケーブル、マニュアル、およびキーチェーンを入れます。 そして、OEMの場合-鉄片自体にキットのパッケージでくしゃみをします。 同時に、ピッカーは特定の鉄片とこのデバイスに適した有限量の付属品で動作します。 追加のコネクタがあるため、電源をビデオカードの箱に詰め込もうとはしていません。電源はTIによるとパッケージに含まれていません。 さらに、彼らは彼に言うことはありません-「ここにvidyuhaがあり、ここにセットの倉庫があります-どのスレッドを選択してそこに置くか、あなたは大きな頭です!」



論理の分離とは、論理、分離、それ以上でもそれ以下でもないことを意味します!

(あなたがそのような定式化によって歪められている場合-それを無視してください、そしてあなたの脳で曖昧な推測がフラッシュした場合-啓発のために再読してください)



(まともなSQLデータベースがそうであるように)大量のレコードのあるSQLデータベースがまだあります。 データベースにアクセスし、そこから12レコード半のレコードを受信するバックエンド(ユーザーの要求と15ページのレコードを表示するページごとの順序のロジックに従って、ユーザーが「お尻」という単語を含んでいない場合、 18に))彼の仕事の結果をXMLでラップする出力; フロントエンドは短いXMLを受け取り、独自のスタイルシート(XLST)を重ねて、最初の<bullshit> Suit and tie-$ 5000 </ bullshit>ノードが<Haute couture> Suit and tieに変更される新しいXMLファイルを作成します- 5000ドル</オートクチュール>。



そして、HTMLはどこにありますか? はい、ここ、私の親愛なる、ちょうど別のテンプレート-toHTML、<bullshit>ノードに別のルールを設定し、それを<span class = "amazing">に変換します。これは、ユーザーが読めない場合に同じフロントエンドによってクライアントに与えられますXML はい、フロントエンドの本質はクライアントと同じ言語を話すことですが、彼は彼が話していることを気にしません-服や酒についてです。 彼はそれについても、プロンプターバックエンドが「これは非常にクールなものです、私たちのもの」の後に何を挿入するかを教えてくれます...



要するに、これを読むことができ、XMLデータベースダンプのXLST変換としてバックエンドを実装しようとしている場合は、1Cでそれを行うことができます。BitrixはRyzhikov氏の指示の下で行います。 または、XMLとXSLTの言葉をあなたに教えません。彼らはすでにこれに「固定」しており、もう「悪くなる」ことはありません。 それでは、この作品をもう一度読み直すか、各フレーズについて考えて、怒りの回答を書いてみてください。



アップ。 免責事項-テキストの複雑さ、混乱、主題と例からの例の分離-議論中の主題における著者の非常に表面的な知識の結果。 現時点では、XLSTのすべてのトレーニングは、XLSTの最初の文を読むことです。

この仕様は、XMLドキュメントを他のXMLドキュメントに変換するための言語であるXSLTの構文とセマンティクスを定義します。


他に質問はありますか?



All Articles