Home > C# > 目的別資料 > Web関連 > AngleSharp

AngleSharpドキュメントのInterfacesの日本語訳

新規作成日 2018-07-08
最終更新日

AngleSharpドキュメントの日本語訳. C#で利用できるhtmlパーサーのAngleSharpプロジェクトのドキュメントの翻訳です。

このページは、Florian Rapplによって編集されました。 2015年4月21日・4改訂

拡張機能点

Extension points

AngleSharpは、一般的な、HTML5パーサを作成することを想定しています。それは、.NETの世界でアクセス可能で、完全に、管理されたコードで記述されています。しかしながら、一部のアプリケーションは、パーサを越えることを望むかもしれません。パーサーだけでは、DOMを作成するために、外部から多くの助けが必要です。

AngleSharpのユーザーに、完全なDOM実装を提供するために、AngleSharpは、本物のDOM実装でHTML5パーサを拡張します。それにもかかわらず、これは、改めて、いくつかの追加の依存関係を導入します。たとえば、HtmlAudioElementが、ソースからオーディオを再生する必要がある場合はどうなりますか?もちろん、1つは、要素のまわりで、ラッバーを記述するだけで、Sourceを読み出し、変更を管理することができます。しかし、続いて、この唯一のラッバーは、おそらく、残りのDOMと互換性がありません(そして/あるいは、異なる動作をします)

インターフェイスのフォ-ムのような外部の動作として、この不整合は、定義することによって避けることができます。インターフェイスのような、オブジェクトの実装は、おそらく、AngleSharpに登録されます。

このページでは、さまざまな拡張ポイントが、一覧にされ、説明されます。現在欠けている(しかし、企画されている)インターフェイスの概略を記されます。

IStylingServiceとIScriptingService

IStylingService and IScriptingService

スタイル(また、<link>タグの外部のスタイルシート)やスクリプト・ブロックが直面される場合、 AngleSharpは、一致エンジンを見つけようとします。たとえば、IStylingServiceの実装は、提供されたmime型を調べます。そして、関連付けられたIStyleEngineオブジェクトやnullを返します。 後者に遭遇した場合、他のIStylingServiceオブジェクトが、試されます。適切なエンジンが見つかるまで、あるいは、すべてのスタイル・サービスが、要求されます。同じアルゴリズムが、IScriptingServiceに適用されます。これらのサービスは、ファクトリー、フライウエイト・リポジトリーや結合の機能を記述しているだけです。

IStyleEngine

IStyleEngine

AngleSharpには、既にCSSパーサーが含まれています。これは、AngleSharpの設計目標の1つでした。さらに、それは、いくつかの点で(HTML)DOMは、CSSに強く結合しているため、必要とされます。1つの例は、querySelectorとquerySelectorAllメソッドです。これらのメソッドには、CSSパーサー(あるいは、少なくともCSSセレクタ・パーサ)が必要です。結局は、特定の要素に一致するオブジェクトが生成されます。

それにもかかわらず、HTMLブラウザは、CSS以外のスタイリングの可能性を知っていても、いなくてもよい。現在、(例えば、type属性のtext / cssを指定することが無ければ)CSSが、既定で使用されています。しかしながら、特定の(あるいは、複数の)型のスタイル・パーサーを登録することができます。この方法の後、また、カスタムCSSパーサーを登録することも可能です。現在提供されているものを上書きします。

IScriptEngine

IScriptEngine

AngleSharpは、デフォルトで、スクリプト・エンジンを提供していません。もちろん、JavaScriptが、Webのプログラミング言語であるため、どんなJavaScriptエンジンでも、すばらしい追加になるでしょう。

しかしながら、現在、公式/統合ソリューションを提供する意図はありません。解決法が含まれている、AngleSharp.Scriptingプロジェクトは、そのような拡張機能を記述することが、どれくらい簡単か説明するためのサンプル・プロジェクトです。

最後に、私たちは、C#をスクリプト言語として使用できるようにする必要があります。これは、確実にできます。スクリプトや他の解決法(Roslyn?)でもバックアップされています。これは、大きな追加になるでしょう。それは、また別のものかもしれません。長い目で見れば、AngleSharpが、複数のスクリプト用エンジンをサポートすることは、素晴らしいことです。

スクリプト用エンジンを登録して、スクリプト用機能を提供することは、靴の二つの異なる対です。AngleSharpは、スクリプトが実行される前に、(スクリプト・エンジンが、利用可能であるかどうかに関係なく)スクリプトを起動するためのユーザーが必要です。

ISpellCheckService

ISpellCheckService

それぞれのスペルチェッカーの登録を可能にします。各スペルチェッカーは、そのカルチャに登録されており、どのカルチャにも敏感です。Webページやテキストは、おそらく、使用します。

単語が、適切につづられているか、単語の適切なつづりのための、提案を取得している場合、APIは、実行しているクエリの特定の単語を無視できます。現在、APIは、同期して実装されていますが、将来は、完全に非同期のより優れたバージョンに切り換えるかもしれません。

IResourceService

IResourceService

この拡張機能は、さまざまなインターフェイスで実装されています。ほら:

  • HtmlAudioElementのためのIAudioService
  • HtmlVideoElementのためのIVideoService
  • HtmlImageElementのためのIImageService
  • HtmlObjectElementのためのIObjectService

基本的な考え方は、含まれているリソースの特定のプロパティを決定することです。IResourceInfoの専門化の実装は、寸法とより多くの画像のリソースに依存する情報をもたらします。HtmlAudioElementの場合、完全なメディア・コントローラーが、適切に実装されています。メディア・ストリームの再生ができます。

HtmlObjectElementの場合、これは、Adobe Flashなどのような、プラグインに直接つながります。 言うまでもなく、AngleSharpコアは、これらの非常に特殊なタスクの役割を果たしません。

INavigatorService

INavigatorService

与えられたIWindowインスタンスのためのINavigatorインスタンスを作成します。INavigatorは、最初は、かなり一般的なようです。しかしながら、それは、特にメディア・リソースを呼び出す観点から、根底にあるIWindowインスタンスに、本当に専門化することができます。(例えば、ウェブカメラやマイク)。

AngleSharpは、より適切で特殊な実装の余地を残すために、インタフェースを実装していません。 また、外部周辺機器でユーザー体験を強化する前に述べた機能は、魅力がありそうです。

IHistoryService

IHistoryService

IHistoryServiceは、ブラウジング・コンテキストで関連付けられる、新しいDOM IHistoryオブジェクトを作成するための機能を記述します。ブラウジング・コンテキストは、インタフェースによって記述されたコンストラクタ関数に渡されます。

IWindowService

IWindowService

更に専門化して役に立つ方法で実装することができた、複数のDOM要素があります。重要な要素は、IWindowの実装です。それは、すべてのDOM相互作用が、IWindowに依存していないIDocumentを必要とするため、直接、必要とされていません。しかしながら、特にスクリプト環境では、 IWindowインスタンスは、極めて重要な役割を満たします。

レンダリングのような、より高度な筋書きのために、IWindowインターフェイスのカスタム実装は、重要と思われます。その結果、与えられたサービスは、ユーザーに、カスタムIWindow作者を登録するための機能を与えます。備考:現時点では、カスタム作者のようなものは、少なくともEventTargetから、継承する必要があります。(それは、IEventTargetを実装する)。将来は、この必要条件は、うまくいけば省略されます。

ILoaderService

ILoaderService

AngleSharpの読み込み文書やリソースは、完全にカスタマイズすることができます。メインのインターフェイスは、2つのコンストラクタ関数を定義するILoaderServiceです。新しいIDocumentLoaderを作成する1つのコンストラクタ関数、そして、新しいIResourceLoaderを作成する別のコンストラクタ関数。前者は、ブラウジング・コンテキストのコンテキストで、実際のドキュメントを読み込むために使用されますが(したがって、最大値があります。IBrowsingContextごとに1つのIDocumentLoader)、後者は、IDocumentのコンテクストの読み込みリソースのために使用されます。言うまでもなく、私たちは、IDocumentごとに最大1つのIResourceLoaderが必要です。

このアーキテクチャには、2つの大きな利点があります。:

  1. 役割が、明白に切り離されています。そして、(メインやドキュメントの)すべてのコンテキストは、それらの自身の要求を追跡することができます。
  2. すべてのドキュメントの読み込み/フォ-ムの送信に影響することなく、(特定の要素の場合でも)リソースの読み込みをオフにすることは簡単です。

また、リソース、および/あるいは、ドキュメントの読み込みをオンやオフに切り替える、ブーリアン・プロパティを持っている、LoaderServiceと呼ばれるデフォルトの実装が、あります。デフォルトの実装は、利用可能なリクエスターが使用されます。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」