HTML-Parser-3.66 > HTML::Parser
HTML-Parser-3.66

名前

HTML::Parser - HTML parser class

HTML::Parser - HTMLパーサクラス

(訳注: (TBR)がついている段落は「みんなの自動翻訳@TexTra」による 機械翻訳です。)

概要

 use HTML::Parser ();

 # Create parser object
 $p = HTML::Parser->new( api_version => 3,
                         start_h => [\&start, "tagname, attr"],
                         end_h   => [\&end,   "tagname"],
                         marked_sections => 1,
                       );

 # Parse document text chunk by chunk
 $p->parse($chunk1);
 $p->parse($chunk2);
 #...
 $p->eof;                 # signal end of document

 # Parse directly from file
 $p->parse_file("foo.html");
 # or
 open(my $fh, "<:utf8", "foo.html") || die;
 $p->parse_file($fh);

説明

Objects of the HTML::Parser class will recognize markup and separate it from plain text (alias data content) in HTML documents. As different kinds of markup and text are recognized, the corresponding event handlers are invoked.

HTML::Parserクラスのオブジェクトはマークアップを認識し、HTML文書内のプレーンテキスト(別名データコンテンツ)からマークアップを分離します。 異なる種類のマークアップとテキストが認識されると、対応するイベントハンドラが起動されます。 (TBR)

HTML::Parser is not a generic SGML parser. We have tried to make it able to deal with the HTML that is actually "out there", and it normally parses as closely as possible to the way the popular web browsers do it instead of strictly following one of the many HTML specifications from W3C. Where there is disagreement, there is often an option that you can enable to get the official behaviour.

HTML::Parserは一般的なSGMLパーサーではありません。 私たちは、実際に「存在する」HTMLを処理できるようにしようとしました。 HTML::Parserは通常、W3Cの多くのHTML仕様の1つに厳密に従うのではなく、一般的なWebブラウザの方法にできるだけ近い方法で解析します。 意見の相違がある場合は、公式の動作を取得できるオプションがあります。 (TBR)

The document to be parsed may be supplied in arbitrary chunks. This makes on-the-fly parsing as documents are received from the network possible.

解析される文書は、任意のチャンクで提供される場合がある。 これにより、ネットワークから文書を受信したときに、その場で解析することが可能になる。 (TBR)

If event driven parsing does not feel right for your application, you might want to use HTML::PullParser. This is an HTML::Parser subclass that allows a more conventional program structure.

イベント駆動型の解析がアプリケーションに適していない場合は、HTML::PullParserを使用できます。 これは、より一般的なプログラム構造を可能にするHTML::Parserサブクラスです。 (TBR)

メソッド

The following method is used to construct a new HTML::Parser object:

新しいHTML::Parserオブジェクトを構築するには、次のメソッドを使用します。 (TBR)

$p = HTML::Parser->new( %options_and_handlers )

This class method creates a new HTML::Parser object and returns it. Key/value argument pairs may be provided to assign event handlers or initialize parser options. The handlers and parser options can also be set or modified later by the method calls described below.

このクラスメソッドは、新しいHTML::Parserオブジェクトを作成し、それを返します。 イベントハンドラを割り当てたり、パーサオプションを初期化したりするために、キーと値の引数のペアを指定できます。 ハンドラとパーサオプションは、後で後述するメソッドコールによって設定または変更することもできます。 (TBR)

If a top level key is in the form "<event>_h" (e.g., "text_h") then it assigns a handler to that event, otherwise it initializes a parser option. The event handler specification value must be an array reference. Multiple handlers may also be assigned with the 'handlers => [%handlers]' option. See examples below.

最上位レベルのキーが"<event>_h"("text_h"など)の形式の場合は、そのイベントにハンドラが割り当てられます。 それ以外の場合は、パーサーオプションが初期化されます。 イベントハンドラの指定値は配列参照である必要があります。 'handlers=>[%handlers]'オプションを使用して複数のハンドラを割り当てることもできます。 次の例を参照してください。 (TBR)

If new() is called without any arguments, it will create a parser that uses callback methods compatible with version 2 of HTML::Parser. See the section on "version 2 compatibility" below for details.

引数を指定せずにnew()を呼び出すと、バージョン2のHTML::Parserと互換性のあるコールバックメソッドを使用するパーサが作成されます。 詳細については、後述の「バージョン2との互換性」のセクションを参照してください。 (TBR)

The special constructor option 'api_version => 2' can be used to initialize version 2 callbacks while still setting other options and handlers. The 'api_version => 3' option can be used if you don't want to set any options and don't want to fall back to v2 compatible mode.

特別なコンストラクタオプション'api_version=>2'は、他のオプションとハンドラを設定しながらバージョン2コールバックを初期化するために使用できます。 'api_version=>3'オプションは、オプションを設定せず、v2互換モードにフォールバックしない場合に使用できます。 (TBR)

Examples:

例: (TBR)

 $p = HTML::Parser->new(api_version => 3,
                        text_h => [ sub {...}, "dtext" ]);

This creates a new parser object with a text event handler subroutine that receives the original text with general entities decoded.

これにより、テキストイベントハンドラーサブルーチンを持つ新しいパーサーオブジェクトが作成されます。 このサブルーチンは、汎用エンティティーがデコードされた元のテキストを受け取ります。 (TBR)

 $p = HTML::Parser->new(api_version => 3,
                        start_h => [ 'my_start', "self,tokens" ]);

This creates a new parser object with a start event handler method that receives the $p and the tokens array.

これにより、$pとtokens配列を受け取る開始イベントハンドラーメソッドを持つ新しいパーサーオブジェクトが作成されます。 (TBR)

 $p = HTML::Parser->new(api_version => 3,
                        handlers => { text => [\@array, "event,text"],
                                      comment => [\@array, "event,text"],
                                    });

This creates a new parser object that stores the event type and the original text in @array for text and comment events.

これにより、テキストイベントとコメントイベントのイベントタイプと元のテキストを@arrayに格納する新しいパーサーオブジェクトが作成されます。 (TBR)

The following methods feed the HTML document to the HTML::Parser object:

次のメソッドは、HTML文書をHTML::Parserオブジェクトに渡します。 (TBR)

$p->parse( $string )

Parse $string as the next chunk of the HTML document. Handlers invoked should not attempt to modify the $string in-place until $p->parse returns.

$stringをHTML文書の次のチャンクとして解析します。 呼び出されたハンドラは、$p->parseが返されるまで、$stringをその場で変更しようとしてはなりません。 (TBR)

If an invoked event handler aborts parsing by calling $p->eof, then $p->parse() will return a FALSE value. Otherwise the return value is a reference to the parser object ($p).

呼び出されたイベントハンドラが$p->eofを呼び出して解析を中断した場合、$p->parse()はFALSE値を返します。 それ以外の場合、戻り値はパーサオブジェクト($p)への参照です。 (TBR)

$p->parse( $code_ref )

If a code reference is passed as the argument to be parsed, then the chunks to be parsed are obtained by invoking this function repeatedly. Parsing continues until the function returns an empty (or undefined) result. When this happens $p->eof is automatically signaled.

解析される引数としてコード参照が渡された場合、解析されるチャンクは、この関数を繰り返し呼び出すことによって取得されます。 解析は、関数が空の(または未定義の)結果を返すまで続行されます。 これが発生すると、$p->eofが自動的にシグナリングされます。 (TBR)

Parsing will also abort if one of the event handlers calls $p->eof.

イベントハンドラーの1つが$p->eofを呼び出した場合にも、構文解析は中断されます。 (TBR)

The effect of this is the same as:

この効果は、次と同じです。 (TBR)

 while (1) {
    my $chunk = &$code_ref();
    if (!defined($chunk) || !length($chunk)) {
        $p->eof;
        return $p;
    }
    $p->parse($chunk) || return undef;
 }

But it is more efficient as this loop runs internally in XS code.

しかし、このループはXSコード内で内部的に実行されるので、より効率的です。 (TBR)

$p->parse_file( $file )

Parse text directly from a file. The $file argument can be a filename, an open file handle, or a reference to an open file handle.

ファイルからテキストを直接解析します。 $file引数には、ファイル名、開いているファイルハンドル、または開いているファイルハンドルへの参照を指定できます。 (TBR)

If $file contains a filename and the file can't be opened, then the method returns an undefined value and $! tells why it failed. Otherwise the return value is a reference to the parser object.

$fileにファイル名が含まれており、そのファイルを開くことができない場合、メソッドは未定義の値を返し、$!は失敗した理由を示します。 それ以外の場合、戻り値はパーサーオブジェクトへの参照です。 (TBR)

If a file handle is passed as the $file argument, then the file will normally be read until EOF, but not closed.

ファイルハンドルが$file引数として渡された場合、ファイルは通常EOFまで読み込まれますが、閉じられることはありません。 (TBR)

If an invoked event handler aborts parsing by calling $p->eof, then $p->parse_file() may not have read the entire file.

呼び出されたイベントハンドラが$p->eofを呼び出して解析を中止した場合、$p->parse_file()はファイル全体を読み込んでいない可能性があります。 (TBR)

On systems with multi-byte line terminators, the values passed for the offset and length argspecs may be too low if parse_file() is called on a file handle that is not in binary mode.

複数バイトの行ターミネータを持つシステムでは、バイナリモードでないファイルハンドルに対してparse_file()が呼び出された場合、offsetとlength argspecsに渡される値が小さすぎる可能性があります。 (TBR)

If a filename is passed in, then parse_file() will open the file in binary mode.

ファイル名が渡された場合、parse_file()はそのファイルをバイナリモードで開きます。 (TBR)

$p->eof

Signals the end of the HTML document. Calling the $p->eof method outside a handler callback will flush any remaining buffered text (which triggers the text event if there is any remaining text).

HTML文書の終了を通知します。 ハンドラコールバックの外部で$p->eofメソッドを呼び出すと、バッファに残っているテキストがフラッシュされます(テキストが残っている場合は、textイベントがトリガーされます)。 (TBR)

Calling $p->eof inside a handler will terminate parsing at that point and cause $p->parse to return a FALSE value. This also terminates parsing by $p->parse_file().

ハンドラ内で$p->eofを呼び出すと、その時点で解析が終了し、$p->parseはFALSE値を返します。 これにより、$p->parse_file()による解析も終了します。 (TBR)

After $p->eof has been called, the parse() and parse_file() methods can be invoked to feed new documents with the parser object.

$p->eofが呼び出された後、parse()メソッドとparse_file()メソッドを呼び出して、新しい文書にパーサーオブジェクトを渡すことができます。 (TBR)

The return value from eof() is a reference to the parser object.

eof()からの戻り値は、パーサーオブジェクトへの参照です。 (TBR)

Most parser options are controlled by boolean attributes. Each boolean attribute is enabled by calling the corresponding method with a TRUE argument and disabled with a FALSE argument. The attribute value is left unchanged if no argument is given. The return value from each method is the old attribute value.

ほとんどのパーサーオプションは、ブール属性によって制御されます。 各ブール属性は、対応するメソッドをTRUE引数でコールすると使用可能になり、FALSE引数でコールすると使用不可になります。 引数を指定しない場合、属性値は変更されません。 各メソッドからの戻り値は、古い属性値です。 (TBR)

Methods that can be used to get and/or set parser options are:

パーサーオプションの取得または設定に使用できるメソッドは次のとおりです。 (TBR)

$p->attr_encoded
$p->attr_encoded( $bool )

By default, the attr and @attr argspecs will have general entities for attribute values decoded. Enabling this attribute leaves entities alone.

デフォルトでは、attrおよび@attrargspecsには、デコードされたアトリビュート値の一般エンティティがあります。 このアトリビュートを有効にすると、エンティティはそのままになります。 (TBR)

$p->backquote
$p->backquote( $bool )

By default, only ' and " are recognized as quote characters around attribute values. MSIE also recognizes backquotes for some reason. Enabling this attribute provides compatibility with this behaviour.

デフォルトでは、属性値を囲む引用符として認識されるのは'と"のみです。 MSIEは、何らかの理由で逆引用符も認識します。 この属性を有効にすると、この動作との互換性が提供されます。 (TBR)

$p->boolean_attribute_value( $val )

This method sets the value reported for boolean attributes inside HTML start tags. By default, the name of the attribute is also used as its value. This affects the values reported for tokens and attr argspecs.

このメソッドは、HTML開始タグ内のブール属性に対してレポートされる値を設定します。 デフォルトでは、属性の名前も値として使用されます。 これは、tokensおよびattrargspecsに対してレポートされる値に影響します。 (TBR)

$p->case_sensitive
$p->case_sensitive( $bool )

By default, tagnames and attribute names are down-cased. Enabling this attribute leaves them as found in the HTML source document.

デフォルトでは、タグ名と属性名は小文字に変換されます。 この属性を有効にすると、HTMLソース文書内のタグ名と属性名のままになります。 (TBR)

$p->closing_plaintext
$p->closing_plaintext( $bool )

By default, "plaintext" element can never be closed. Everything up to the end of the document is parsed in CDATA mode. This historical behaviour is what at least MSIE does. Enabling this attribute makes closing "</plaintext>" tag effective and the parsing process will resume after seeing this tag. This emulates early gecko-based browsers.

デフォルトでは、"plaintext"要素は決して閉じることができません。 文書の最後までのすべてがCDATAモードで解析されます。 この歴史的な動作は、少なくともMSIEが行っていることです。 この属性を有効にすると、閉じる"</plaintext>"タグが有効になり、このタグを見た後に解析プロセスが再開されます。 これは初期のgeckoベースのブラウザをエミュレートします。 (TBR)

$p->empty_element_tags
$p->empty_element_tags( $bool )

By default, empty element tags are not recognized as such and the "/" before ">" is just treated like a normal name character (unless strict_names is enabled). Enabling this attribute make HTML::Parser recognize these tags.

デフォルトでは、空の要素タグは認識されず、「>」の前の「/」は通常の名前文字と同じように扱われます(strict_namesが有効になっていない場合)。 この属性を有効にすると、HTML::Parserはこれらのタグを認識します。 (TBR)

Empty element tags look like start tags, but end with the character sequence "/>" instead of ">". When recognized by HTML::Parser they cause an artificial end event in addition to the start event. The text for the artificial end event will be empty and the tokenpos array will be undefined even though the the token array will have one element containing the tag name.

空の要素タグは開始タグのように見えますが、">"ではなく"/>"で終わります。 HTML::Parserによって認識されると、開始イベントに加えて人工的な終了イベントが発生します。 トークン配列にタグ名を含む要素が1つあっても、人工的な終了イベントのtextは空になり、tokenpos配列は未定義になります。 (TBR)

$p->marked_sections
$p->marked_sections( $bool )

By default, section markings like <![CDATA[...]]> are treated like ordinary text. When this attribute is enabled section markings are honoured.

デフォルトでは、<![CDATA[.]]>などのセクションマーキングは通常のテキストと同様に扱われます。 この属性が有効になっている場合、セクションマーキングは受け入れられます。 (TBR)

There are currently no events associated with the marked section markup, but the text can be returned as skipped_text.

現在、マーク区間のマークアップに関連付けられたイベントはありませんが、テキストはskipped_textとして返されます。 (TBR)

$p->strict_comment
$p->strict_comment( $bool )

By default, comments are terminated by the first occurrence of "-->". This is the behaviour of most popular browsers (like Mozilla, Opera and MSIE), but it is not correct according to the official HTML standard. Officially, you need an even number of "--" tokens before the closing ">" is recognized and there may not be anything but whitespace between an even and an odd "--".

デフォルトでは、コメントは「-->」の最初の出現で終了します。 これはほとんどの一般的なブラウザ(Mozilla、Opera、MSIEなど)の動作ですが、公式のHTML標準によれば正しくありません。 公式には、閉じる「>」が認識される前に偶数の「--」トークンが必要であり、偶数と奇数の「--」の間には空白文字しかない場合があります。 (TBR)

The official behaviour is enabled by enabling this attribute.

正式な動作は、この属性を有効にすることで有効になります。 (TBR)

Enabling of 'strict_comment' also disables recognizing these forms as comments:

'strict_comment'を有効にすると、これらのフォームがコメントとして認識されなくなります。 (TBR)

  </ comment>
  <! comment>
$p->strict_end
$p->strict_end( $bool )

By default, attributes and other junk are allowed to be present on end tags in a manner that emulates MSIE's behaviour.

デフォルトでは、属性やその他のジャンクは、MSIEの動作をエミュレートする方法でエンドタグに存在することが許可されている。 (TBR)

The official behaviour is enabled with this attribute. If enabled, only whitespace is allowed between the tagname and the final ">".

この属性を使用すると、公式の動作が有効になります。 有効にすると、タグ名と最後の「>」の間に空白のみが許可されます。 (TBR)

$p->strict_names
$p->strict_names( $bool )

By default, almost anything is allowed in tag and attribute names. This is the behaviour of most popular browsers and allows us to parse some broken tags with invalid attribute values like:

デフォルトでは、タグ名と属性名にはほとんどすべてのものが許可されています。 これは最も一般的なブラウザの動作であり、次のような無効な属性値を持つ壊れたタグを解析できます。 (TBR)

   <IMG SRC=newprevlstGr.gif ALT=[PREV LIST] BORDER=0>

By default, "LIST]" is parsed as a boolean attribute, not as part of the ALT value as was clearly intended. This is also what Mozilla sees.

デフォルトでは、"LIST]"はブール値として解析され、意図したとおりにALT値の一部として解析されることはありません。 Mozillaも同じことを考えている。 (TBR)

The official behaviour is enabled by enabling this attribute. If enabled, it will cause the tag above to be reported as text since "LIST]" is not a legal attribute name.

正式な動作は、この属性を有効にすることで有効になります。 有効にすると、「LIST]」は有効な属性名ではないため、上記のタグがテキストとして報告されます。 (TBR)

$p->unbroken_text
$p->unbroken_text( $bool )

By default, blocks of text are given to the text handler as soon as possible (but the parser takes care always to break text at a boundary between whitespace and non-whitespace so single words and entities can always be decoded safely). This might create breaks that make it hard to do transformations on the text. When this attribute is enabled, blocks of text are always reported in one piece. This will delay the text event until the following (non-text) event has been recognized by the parser.

デフォルトでは、テキストのブロックはできるだけ早くテキストハンドラに渡されます(ただし、パーサーは、単一の単語やエンティティを常に安全にデコードできるように、空白と空白以外の境界でテキストを分割するように常に注意します)。 これにより、テキストの変換を困難にする分割が作成される場合があります。 この属性が有効になっている場合、テキストのブロックは常に1つに報告されます。 これにより、次の(テキスト以外の)イベントがパーサーによって認識されるまで、テキストイベントが遅延されます。 (TBR)

Note that the offset argspec will give you the offset of the first segment of text and length is the combined length of the segments. Since there might be ignored tags in between, these numbers can't be used to directly index in the original document file.

offsetargspecはテキストの最初のセグメントのオフセットを与え、lengthはセグメントの結合長であることに注意してください。 間に無視されるタグがある可能性があるため、これらの番号を使用して元の文書ファイル内で直接インデックスを付けることはできません。 (TBR)

$p->utf8_mode
$p->utf8_mode( $bool )

Enable this option when parsing raw undecoded UTF-8. This tells the parser that the entities expanded for strings reported by attr, @attr and dtext should be expanded as decoded UTF-8 so they end up compatible with the surrounding text.

デコードされていない未加工のUTF-8を解析する場合、このオプションを有効にします。 これにより、attr@attr、およびdtextによって報告された文字列に対して展開されたエンティティは、デコードされたUTF-8として展開され、周囲のテキストとの互換性が保たれるようにする必要があることがパーサーに通知されます。 (TBR)

If utf8_mode is enabled then it is an error to pass strings containing characters with code above 255 to the parse() method, and the parse() method will croak if you try.

utf8_modeが有効になっている場合、255を超えるコードの文字を含む文字列をparse()メソッドに渡すとエラーとなり、parse()メソッドは試行するとクルックします。 (TBR)

Example: The Unicode character "\x{2665}" is "\xE2\x99\xA5" when UTF-8 encoded. The character can also be represented by the entity "&hearts;" or "&#x2665". If we feed the parser:

例:UTF-8でエンコードされた場合、Unicode文字「\x{2665}」は「\xE2\x 99\xA 5」です。 この文字は、エンティティ「&hearts;」または「&#x2665」で表すこともできます。 パーサーに次のように入力します。 (TBR)

  $p->parse("\xE2\x99\xA5&hearts;");

then dtext will be reported as "\xE2\x99\xA5\x{2665}" without utf8_mode enabled, but as "\xE2\x99\xA5\xE2\x99\xA5" when enabled. The later string is what you want.

dtextは、utf8_modeが有効になっていない場合は"\xE2\x 99\xA 5\x{2665}"と報告されますが、dtextが有効になっている場合は"\xE2\x 99\xA 5\xE 2\x 99\xA 5"と報告されます。 後の文字列が必要な文字列です。 (TBR)

This option is only available with perl-5.8 or better.

このオプションはperl-5.8以降でのみ使用できます。 (TBR)

$p->xml_mode
$p->xml_mode( $bool )

Enabling this attribute changes the parser to allow some XML constructs. This enables the behaviour controlled by individually by the case_sensitive, empty_element_tags, strict_names and xml_pic attributes and also suppresses special treatment of elements that are parsed as CDATA for HTML.

この属性を有効にすると、一部のXML構造を許可するようにパーサーが変更されます。 これにより、case_sensitiveempty_element_tagsstrict_namesおよびxml_pic属性によって個別に制御される動作が有効になり、HTMLのCDATAとして解析される要素の特別な処理も抑制されます。 (TBR)

$p->xml_pic
$p->xml_pic( $bool )

By default, processing instructions are terminated by ">". When this attribute is enabled, processing instructions are terminated by "?>" instead.

デフォルトでは、processing instructionsは">"で終了します。 この属性を有効にすると、処理命令は代わりに"?>"で終了します。 (TBR)

As markup and text is recognized, handlers are invoked. The following method is used to set up handlers for different events:

マークアップとテキストが認識されると、ハンドラが呼び出されます。 さまざまなイベントのハンドラを設定するには、次のメソッドを使用します。 (TBR)

$p->handler( event => \&subroutine, $argspec )
$p->handler( event => $method_name, $argspec )
$p->handler( event => \@accum, $argspec )
$p->handler( event => "" );
$p->handler( event => undef );
$p->handler( event );

This method assigns a subroutine, method, or array to handle an event.

このメソッドは、イベントを処理するサブルーチン、メソッド、または配列を割り当てます。 (TBR)

Event is one of text, start, end, declaration, comment, process, start_document, end_document or default.

イベントは、textstartenddeclarationcommentprocessstart_documentend_document、またはdefaultのいずれかです。 (TBR)

The \&subroutine is a reference to a subroutine which is called to handle the event.

\&subroutineは、イベントを処理するために呼び出されるサブルーチンへの参照である。 (TBR)

The $method_name is the name of a method of $p which is called to handle the event.

$method_nameは、イベントを処理するために呼び出される$pのメソッドの名前です。 (TBR)

The @accum is an array that will hold the event information as sub-arrays.

@accumは、イベント情報をサブ配列として保持する配列です。 (TBR)

If the second argument is "", the event is ignored. If it is undef, the default handler is invoked for the event.

2番目の引数が""の場合、イベントは無視されます。 undefの場合、イベントに対してデフォルトのハンドラが呼び出されます。 (TBR)

The $argspec is a string that describes the information to be reported for the event. Any requested information that does not apply to a specific event is passed as undef. If argspec is omitted, then it is left unchanged.

$argspecは、イベントについて報告される情報を記述する文字列です。 特定のイベントに適用されない要求された情報は、undefとして渡されます。 argspecが省略された場合、変更されないままになります。 (TBR)

The return value from $p->handler is the old callback routine or a reference to the accumulator array.

$p->ハンドラからの戻り値は、古いコールバックルーチンまたはアキュムレータ配列への参照です。 (TBR)

Any return values from handler callback routines/methods are always ignored. A handler callback can request parsing to be aborted by invoking the $p->eof method. A handler callback is not allowed to invoke the $p->parse() or $p->parse_file() method. An exception will be raised if it tries.

ハンドラコールバックルーチン/メソッドからの戻り値は、常に無視されます。 ハンドラコールバックは、$p->eofメソッドを呼び出すことによって、解析の中止を要求できます。 ハンドラコールバックは、$p->parse()または$p->parse_file()メソッドを呼び出すことはできません。 試行すると、例外が発生します。 (TBR)

Examples:

例: (TBR)

    $p->handler(start =>  "start", 'self, attr, attrseq, text' );

This causes the "start" method of object $p to be called for 'start' events. The callback signature is $p->start(\%attr, \@attr_seq, $text).

これにより、オブジェクト$pの"start"メソッドが'start'イベントに対して呼び出されます。 コールバックシグネチャは$p->start(\%attr, \@attr_seq, $text)です。 (TBR)

    $p->handler(start =>  \&start, 'attr, attrseq, text' );

This causes subroutine start() to be called for 'start' events. The callback signature is start(\%attr, \@attr_seq, $text).

これにより、'start'イベントに対してサブルーチンstart()が呼び出されます。 コールバックシグネチャはstart(\%attr, \@attr_seq, $text)です。 (TBR)

    $p->handler(start =>  \@accum, '"S", attr, attrseq, text' );

This causes 'start' event information to be saved in @accum. The array elements will be ['S', \%attr, \@attr_seq, $text].

これにより、'start'イベント情報が@accumに保存されます。 配列要素は['S',\%attr, \@attr_seq, $text]となります。 (TBR)

   $p->handler(start => "");

This causes 'start' events to be ignored. It also suppresses invocations of any default handler for start events. It is in most cases equivalent to $p->handler(start => sub {}), but is more efficient. It is different from the empty-sub-handler in that skipped_text is not reset by it.

これにより、「開始」イベントが無視されます。 また、開始イベントのデフォルトハンドラの呼び出しも抑制されます。 ほとんどの場合、$p->handler(start=>sub{})と同等ですが、より効率的です。 空のサブハンドラとは異なり、skipped_textはリセットされません。 (TBR)

   $p->handler(start => undef);

This causes no handler to be associated with start events. If there is a default handler it will be invoked.

これにより、開始イベントにハンドラが関連付けられなくなります。 デフォルトのハンドラがある場合は、それが呼び出されます。 (TBR)

Filters based on tags can be set up to limit the number of events reported. The main bottleneck during parsing is often the huge number of callbacks made from the parser. Applying filters can improve performance significantly.

タグに基づくフィルタを設定して、報告されるイベントの数を制限できます。 解析中の主なボトルネックは、多くの場合、パーサーから行われる膨大な数のコールバックです。 フィルタを適用すると、パフォーマンスを大幅に向上させることができます。 (TBR)

The following methods control filters:

次のメソッドは、フィルタを制御します。 (TBR)

$p->ignore_elements( @tags )

Both the start event and the end event as well as any events that would be reported in between are suppressed. The ignored elements can contain nested occurrences of itself. Example:

startイベントとendイベントの両方、およびその間に報告されるイベントは抑制されます。 無視された要素には、それ自体のネストされたオカレンスを含めることができます。 例: (TBR)

   $p->ignore_elements(qw(script style));

The script and style tags will always nest properly since their content is parsed in CDATA mode. For most other tags ignore_elements must be used with caution since HTML is often not well formed.

scriptタグとstyleタグは、その内容がCDATAモードで解析されるため、常に適切にネストされます。 他のほとんどのタグでは、HTMLがwell formedでないことが多いため、ignore_elementsは注意して使用する必要があります。 (TBR)

$p->ignore_tags( @tags )

Any start and end events involving any of the tags given are suppressed. To reset the filter (i.e. don't suppress any start and end events), call ignore_tags without an argument.

指定されたタグを含むstartおよびendイベントは抑制されます。 フィルタをリセットするには(つまり、startおよびendイベントを抑制しないには)、引数なしでignore_tagsを呼び出します。 (TBR)

$p->report_tags( @tags )

Any start and end events involving any of the tags not given are suppressed. To reset the filter (i.e. report all start and end events), call report_tags without an argument.

指定されたタグ<not>のいずれかを含むstartおよびendイベントは抑制されます。 フィルタをリセットする(つまり、すべてのstartおよびendイベントをレポートする)には、引数なしでreport_tagsを呼び出します。 (TBR)

Internally, the system has two filter lists, one for report_tags and one for ignore_tags, and both filters are applied. This effectively gives ignore_tags precedence over report_tags.

内部的には、システムにはreport_tags用とignore_tags用の2つのフィルタリストがあり、両方のフィルタが適用されます。 これにより、ignore_tagsreport_tagsよりも優先されます。 (TBR)

Examples:

例: (TBR)

   $p->ignore_tags(qw(style));
   $p->report_tags(qw(script style));

results in only script events being reported.

scriptイベントのみが報告されます。 (TBR)

Argspec

Argspec is a string containing a comma-separated list that describes the information reported by the event. The following argspec identifier names can be used:

Argspecは、イベントによって報告される情報を説明するコンマ区切りのリストを含む文字列です。 次のargspec ID名を使用できます。 (TBR)

attr

Attr causes a reference to a hash of attribute name/value pairs to be passed.

Attrは、属性名と値のペアのハッシュへの参照を渡します。 (TBR)

Boolean attributes' values are either the value set by $p->boolean_attribute_value, or the attribute name if no value has been set by $p->boolean_attribute_value.

ブール属性の値は、$p->boolean_attribute_valueによって設定された値か、$p->boolean_attribute_valueによって値が設定されていない場合は属性名です。 (TBR)

This passes undef except for start events.

startイベントを除き、undefを渡します。 (TBR)

Unless xml_mode or case_sensitive is enabled, the attribute names are forced to lower case.

xml_modeまたはcase_sensitiveが有効になっていない限り、属性名は小文字になります。 (TBR)

General entities are decoded in the attribute values and one layer of matching quotes enclosing the attribute values is removed.

一般エンティティは属性値でデコードされ、属性値を囲む一致する引用符の1つのレイヤーが削除される。 (TBR)

The Unicode character set is assumed for entity decoding. With Perl version 5.6 or earlier only the Latin-1 range is supported, and entities for characters outside the range 0..255 are left unchanged.

エンティティのデコードでは、Unicodeキャラクタセットが想定されます。 Perlバージョン5.6以前では、Latin-1の範囲のみがサポートされ、0.255の範囲外の文字のエンティティは変更されません。 (TBR)

@attr

Basically the same as attr, but keys and values are passed as individual arguments and the original sequence of the attributes is kept. The parameters passed will be the same as the @attr calculated here:

基本的にはattrと同じですが、キーと値が個々の引数として渡され、属性の元の順序が保持されます。 渡されるパラメータは、ここで計算される@attrと同じになります。 (TBR)

   @attr = map { $_ => $attr->{$_} } @$attrseq;

assuming $attr and $attrseq here are the hash and array passed as the result of attr and attrseq argspecs.

ここで$attrと$attrseqは、attrattrseqargspecsの結果として渡されたハッシュと配列であると仮定します。 (TBR)

This passes no values for events besides start.

これは、start以外のイベントに値を渡しません。 (TBR)

attrseq

Attrseq causes a reference to an array of attribute names to be passed. This can be useful if you want to walk the attr hash in the original sequence.

Attrseqを指定すると、アトリビュート名の配列への参照が渡されます。 これは、元のシーケンスでattrハッシュをウォークする場合に便利です。 (TBR)

This passes undef except for start events.

startイベントを除き、undefを渡します。 (TBR)

Unless xml_mode or case_sensitive is enabled, the attribute names are forced to lower case.

xml_modeまたはcase_sensitiveが有効になっていない限り、属性名は小文字になります。 (TBR)

column

Column causes the column number of the start of the event to be passed. The first column on a line is 0.

[列]:イベントの開始の列番号が渡されます。 行の最初の列は0です。 (TBR)

dtext

Dtext causes the decoded text to be passed. General entities are automatically decoded unless the event was inside a CDATA section or was between literal start and end tags (script, style, xmp, iframe, title, textarea and plaintext).

Dtextを指定すると、デコードされたテキストが渡されます。 イベントがCDATAセクション内にある場合、またはリテラルの開始タグと終了タグ(scriptstylexmpiframetitletextareaおよびplaintext)の間にある場合を除き、一般エンティティは自動的にデコードされます。 (TBR)

The Unicode character set is assumed for entity decoding. With Perl version 5.6 or earlier only the Latin-1 range is supported, and entities for characters outside the range 0..255 are left unchanged.

エンティティのデコードでは、Unicodeキャラクタセットが想定されます。 Perlバージョン5.6以前では、Latin-1の範囲のみがサポートされ、0.255の範囲外の文字のエンティティは変更されません。 (TBR)

This passes undef except for text events.

textイベントを除き、undefを渡します。 (TBR)

event

Event causes the event name to be passed.

Eventを指定すると、イベント名が渡されます。 (TBR)

The event name is one of text, start, end, declaration, comment, process, start_document or end_document.

イベント名は、textstartenddeclarationcommentprocessstart_document、またはend_documentのいずれかです。 (TBR)

is_cdata

Is_cdata causes a TRUE value to be passed if the event is inside a CDATA section or between literal start and end tags (script, style, xmp, iframe, title, textarea and plaintext).

Is_cdataは、イベントがCDATAセクション内、またはリテラルの開始タグと終了タグ(scriptstylexmpiframetitletextareaplaintext)の間にある場合に、TRUE値が渡されるようにします。 (TBR)

if the flag is FALSE for a text event, then you should normally either use dtext or decode the entities yourself before the text is processed further.

テキストイベントのフラグがFALSEの場合、通常はdtextを使用するか、テキストがさらに処理される前にエンティティをデコードする必要があります。 (TBR)

length

Length causes the number of bytes of the source text of the event to be passed.

Lengthは、渡されるイベントのソーステキストのバイト数を指定します。 (TBR)

line

Line causes the line number of the start of the event to be passed. The first line in the document is 1. Line counting doesn't start until at least one handler requests this value to be reported.

Lineを指定すると、イベントの開始行の行番号が渡されます。 文書の最初の行は1です。 少なくとも1つのハンドラがこの値の報告を要求するまで、行カウントは開始されません。 (TBR)

offset

Offset causes the byte position in the HTML document of the start of the event to be passed. The first byte in the document has offset 0.

Offsetを指定すると、イベントの開始位置を示すHTML文書内のバイト位置が渡されます。 文書内の最初のバイトのオフセットは0です。 (TBR)

offset_end

Offset_end causes the byte position in the HTML document of the end of the event to be passed. This is the same as offset + length.

offset_endを指定すると、HTML文書内のイベント終了位置を示すバイト位置が渡されます。 これは、offset+lengthと同じです。 (TBR)

self

Self causes the current object to be passed to the handler. If the handler is a method, this must be the first element in the argspec.

Selfを指定すると、現在のオブジェクトがハンドラに渡されます。 ハンドラがメソッドの場合、これはargspecの最初の要素である必要があります。 (TBR)

An alternative to passing self as an argspec is to register closures that capture $self by themselves as handlers. Unfortunately this creates circular references which prevent the HTML::Parser object from being garbage collected. Using the self argspec avoids this problem.

selfをargspecとして渡す代わりに、$self自身をハンドラとして取得するクロージャを登録することもできます。 残念ながら、これにより循環参照が作成され、HTML::Parserオブジェクトがガベージコレクションされなくなります。 selfargspecを使用すると、この問題を回避できます。 (TBR)

skipped_text

Skipped_text returns the concatenated text of all the events that have been skipped since the last time an event was reported. Events might be skipped because no handler is registered for them or because some filter applies. Skipped text also includes marked section markup, since there are no events that can catch it.

Skipped_textは、イベントが最後に報告されてからスキップされたすべてのイベントの連結テキストを返します。 イベントは、ハンドラが登録されていないか、フィルタが適用されているためにスキップされる可能性があります。 スキップされたテキストには、マーク区間のマークアップも含まれます。 これは、スキップされたテキストをキャッチできるイベントがないためです。 (TBR)

If an ""-handler is registered for an event, then the text for this event is not included in skipped_text. Skipped text both before and after the ""-event is included in the next reported skipped_text.

""-ハンドラがイベントに登録されている場合、このイベントのテキストはskipped_textに含まれません。 ""-イベントの前後のスキップされたテキストは、次に報告されるskipped_textに含まれます。 (TBR)

tag

Same as tagname, but prefixed with "/" if it belongs to an end event and "!" for a declaration. The tag does not have any prefix for start events, and is in this case identical to tagname.

tagnameと同じですが、endイベントに属する場合は接頭辞「/」、宣言の場合は接頭辞「!」が付きます。 tagにはstartイベント用の接頭辞はなく、この場合はtagnameと同じです。 (TBR)

tagname

This is the element name (or generic identifier in SGML jargon) for start and end tags. Since HTML is case insensitive, this name is forced to lower case to ease string matching.

これは開始タグと終了タグの要素名(SGML用語ではgeneric identifier)です。 HTMLは大文字と小文字を区別しないので、文字列のマッチングを容易にするために、この名前は強制的に小文字にされます。 (TBR)

Since XML is case sensitive, the tagname case is not changed when xml_mode is enabled. The same happens if the case_sensitive attribute is set.

XMLでは大文字と小文字が区別されるため、xml_modeが有効になっている場合、tagnameの大文字と小文字は変更されません。 case_sensitive属性が設定されている場合も同様です。 (TBR)

The declaration type of declaration elements is also passed as a tagname, even if that is a bit strange. In fact, in the current implementation tagname is identical to token0 except that the name may be forced to lower case.

宣言要素の宣言型もtagnameとして渡されますが、これは少し奇妙です。 実際、現在の実装では、tagnameはtoken0と同じですが、名前を小文字にすることができる点が異なります。 (TBR)

token0

Token0 causes the original text of the first token string to be passed. This should always be the same as $tokens->[0].

トークン0を指定すると、最初のトークン文字列の元のテキストが渡されます。 これは常に$tokens->[0]と同じである必要があります。 (TBR)

For declaration events, this is the declaration type.

declarationイベントの場合、これは宣言型です。 (TBR)

For start and end events, this is the tag name.

startおよびendイベントの場合、これはタグ名です。 (TBR)

For process and non-strict comment events, this is everything inside the tag.

processおよび非厳密なcommentイベントの場合、これはタグ内のすべてです。 (TBR)

This passes undef if there are no tokens in the event.

イベント内にトークンがない場合はundefを渡します。 (TBR)

tokenpos

Tokenpos causes a reference to an array of token positions to be passed. For each string that appears in tokens, this array contains two numbers. The first number is the offset of the start of the token in the original text and the second number is the length of the token.

Tokenposにより、トークン位置の配列への参照が渡されます。 tokensに表示される各文字列に対して、この配列には2つの数値が含まれます。 最初の数値は元のtextのトークンの開始位置のオフセットで、2番目の数値はトークンの長さです。 (TBR)

Boolean attributes in a start event will have (0,0) for the attribute value offset and length.

startイベント内のブール属性は、属性値のオフセットと長さが(0,0)になります。 (TBR)

This passes undef if there are no tokens in the event (e.g., text) and for artificial end events triggered by empty element tags.

イベント内にトークンがない場合(textなど)、および空の要素タグによってトリガーされる人工的なendイベントの場合は、undefを渡します。 (TBR)

If you are using these offsets and lengths to modify text, you should either work from right to left, or be very careful to calculate the changes to the offsets.

これらのオフセットと長さを使用してtextを修正する場合は、右から左に作業するか、オフセットへの変更を慎重に計算する必要があります。 (TBR)

tokens

Tokens causes a reference to an array of token strings to be passed. The strings are exactly as they were found in the original text, no decoding or case changes are applied.

トークンを使用すると、トークン文字列の配列への参照が渡されます。 文字列は元のテキストとまったく同じで、デコードや大文字と小文字の変更は適用されません。 (TBR)

For declaration events, the array contains each word, comment, and delimited string starting with the declaration type.

declarationイベントの場合、配列には、宣言型で始まる各単語、コメント、および区切り文字列が含まれます。 (TBR)

For comment events, this contains each sub-comment. If $p->strict_comments is disabled, there will be only one sub-comment.

commentイベントの場合、これには各サブコメントが含まれます。 $p->strict_commentsが無効になっている場合、サブコメントは1つだけになります。 (TBR)

For start events, this contains the original tag name followed by the attribute name/value pairs. The values of boolean attributes will be either the value set by $p->boolean_attribute_value, or the attribute name if no value has been set by $p->boolean_attribute_value.

startイベントの場合、これには元のタグ名とそれに続く属性名/値のペアが含まれます。 ブール属性の値は、$p->boolean_attribute_valueによって設定された値、または$p->boolean_attribute_valueによって値が設定されていない場合は属性名のいずれかになります。 (TBR)

For end events, this contains the original tag name (always one token).

endイベントの場合、これには元のタグ名が含まれます(常に1つのトークン)。 (TBR)

For process events, this contains the process instructions (always one token).

processイベントの場合、これにはプロセス命令(常に1つのトークン)が含まれます。 (TBR)

This passes undef for text events.

これはundeffor textイベントを渡します。 (TBR)

text

Text causes the source text (including markup element delimiters) to be passed.

Textを指定すると、ソーステキスト(マークアップ要素の区切り文字を含む)が渡されます。 (TBR)

undef

Pass an undefined value. Useful as padding where the same handler routine is registered for multiple events.

未定義の値を渡します。 複数のイベントに対して同じハンドラルーチンが登録されている場合のパディングとして役立ちます。 (TBR)

'...'

A literal string of 0 to 255 characters enclosed in single (') or double (") quotes is passed as entered.

単一引用符(')または二重引用符(")で囲まれた0〜255文字のリテラル文字列は、入力されたとおりに渡されます。 (TBR)

The whole argspec string can be wrapped up in '@{...}' to signal that the resulting event array should be flattened. This only makes a difference if an array reference is used as the handler target. Consider this example:

argspec文字列全体を'@{...}'でラップして、結果のイベント配列をフラット化する必要があることを示すことができます。 これは、配列参照がハンドラターゲットとして使用される場合にのみ違いが生じます。 次の例を検討してください。 (TBR)

   $p->handler(text => [], 'text');
   $p->handler(text => [], '@{text}']);

With two text events; "foo", "bar"; then the first example will end up with [["foo"], ["bar"]] and the second with ["foo", "bar"] in the handler target array.

"foo""bar"という2つのテキストイベントがある場合、最初の例は[["foo"],["bar"]]で終了し、2番目の例はハンドラターゲット配列の["foo","bar"]で終了します。 (TBR)

Events

Handlers for the following events can be registered:

次のイベントのハンドラを登録できます。 (TBR)

comment

This event is triggered when a markup comment is recognized.

このイベントは、マークアップコメントが認識されたときにトリガされます。 (TBR)

Example:

例: (TBR)

  <!-- This is a comment -- -- So is this -->
declaration

This event is triggered when a markup declaration is recognized.

このイベントは、マークアップ宣言が認識されたときにトリガされます。 (TBR)

For typical HTML documents, the only declaration you are likely to find is <!DOCTYPE ...>.

一般的なHTML文書では、<!DOCTYPE.>のみが使用されます。 (TBR)

Example:

例: (TBR)

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
      "http://www.w3.org/TR/html4/strict.dtd">

DTDs inside <!DOCTYPE ...> will confuse HTML::Parser.

<!DOCTYPE.>内のDTDはHTML::Parserを混乱させます。 (TBR)

default

This event is triggered for events that do not have a specific handler. You can set up a handler for this event to catch stuff you did not want to catch explicitly.

このイベントは、特定のハンドラを持たないイベントに対してトリガーされます。 このイベントのハンドラを設定して、明示的にキャッチしたくないものをキャッチできます。 (TBR)

end

This event is triggered when an end tag is recognized.

このイベントは、終了タグが認識されたときにトリガーされます。 (TBR)

Example:

例: (TBR)

  </A>
end_document

This event is triggered when $p->eof is called and after any remaining text is flushed. There is no document text associated with this event.

このイベントは、$p->eofが呼び出され、残りのテキストがフラッシュされた後にトリガーされます。 このイベントに関連付けられた文書テキストはありません。 (TBR)

process

This event is triggered when a processing instructions markup is recognized.

このイベントは、処理命令マークアップが認識されたときにトリガされます。 (TBR)

The format and content of processing instructions are system and application dependent.

処理命令のフォーマットおよび内容は、システムおよびアプリケーションに依存する。 (TBR)

Examples:

例: (TBR)

  <? HTML processing instructions >
  <? XML processing instructions ?>
start

This event is triggered when a start tag is recognized.

このイベントは、開始タグが認識されたときにトリガーされます。 (TBR)

Example:

例: (TBR)

  <A HREF="http://www.perl.com/">
start_document

This event is triggered before any other events for a new document. A handler for it can be used to initialize stuff. There is no document text associated with this event.

このイベントは、新しい文書に対する他のイベントの前にトリガされます。 このイベントのハンドラを使用して、スタッフを初期化できます。 このイベントに関連付けられた文書テキストはありません。 (TBR)

text

This event is triggered when plain text (characters) is recognized. The text may contain multiple lines. A sequence of text may be broken between several text events unless $p->unbroken_text is enabled.

このイベントは、プレーンテキスト(文字)が認識されたときにトリガーされます。 テキストには複数の行が含まれる場合があります。 $p->unbroken_textが有効になっていない限り、一連のテキストは複数のテキストイベント間で分割される場合があります。 (TBR)

The parser will make sure that it does not break a word or a sequence of whitespace between two text events.

パーサーは、2つのテキストイベント間の単語または一連の空白を分割しないようにします。 (TBR)

Unicode

HTML::Parser can parse Unicode strings when running under perl-5.8 or better. If Unicode is passed to $p->parse() then chunks of Unicode will be reported to the handlers. The offset and length argspecs will also report their position in terms of characters.

HTML::Parserは、perl-5.8以上で実行されている場合、ユニコード文字列を解析できます。 ユニコードが$p->parse()に渡されると、ユニコードのチャンクがハンドラに報告されます。 offsetとlength argspecsも、文字単位での位置を報告します。 (TBR)

It is safe to parse raw undecoded UTF-8 if you either avoid decoding entities and make sure to not use argspecs that do, or enable the utf8_mode for the parser. Parsing of undecoded UTF-8 might be useful when parsing from a file where you need the reported offsets and lengths to match the byte offsets in the file.

エンティティのデコードを避け、デコードするargspecsを使用しないようにするか、またはパーサーに対してutf8_modeを有効にする場合は、デコードされていない未加工のUTF-8を安全に解析できます。 デコードされていないUTF-8の解析は、レポートされたオフセットと長さがファイル内のバイトオフセットと一致する必要があるファイルから解析する場合に便利です。 (TBR)

If a filename is passed to $p->parse_file() then the file will be read in binary mode. This will be fine if the file contains only ASCII or Latin-1 characters. If the file contains UTF-8 encoded text then care must be taken when decoding entities as described in the previous paragraph, but better is to open the file with the UTF-8 layer so that it is decoded properly:

ファイル名が$p->parse_file()に渡された場合、ファイルはバイナリモードで読み込まれます。 これは、ファイルにASCIIまたはLatin-1文字しか含まれていない場合には問題ありません。 ファイルにUTF-8でエンコードされたテキストが含まれている場合は、前の段落で説明したように、エンティティをデコードするときに注意が必要ですが、適切にデコードされるように、UTF-8レイヤでファイルを開くことをお勧めします。 (TBR)

   open(my $fh, "<:utf8", "index.html") || die "...: $!";
   $p->parse_file($fh);

If the file contains text encoded in a charset besides ASCII, Latin-1 or UTF-8 then decoding will always be needed.

ASCII、Latin-1、UTF-8以外の文字セットでエンコードされたテキストがファイルに含まれている場合は、常にデコードが必要になります。 (TBR)

VERSION 2 COMPATIBILITY

When an HTML::Parser object is constructed with no arguments, a set of handlers is automatically provided that is compatible with the old HTML::Parser version 2 callback methods.

HTML::Parserオブジェクトが引数なしで構築されると、古いHTML::Parserバージョン2コールバックメソッドと互換性のあるハンドラのセットが自動的に提供されます。 (TBR)

This is equivalent to the following method calls:

これは、次のメソッド呼び出しと同じです。 (TBR)

   $p->handler(start   => "start",   "self, tagname, attr, attrseq, text");
   $p->handler(end     => "end",     "self, tagname, text");
   $p->handler(text    => "text",    "self, text, is_cdata");
   $p->handler(process => "process", "self, token0, text");
   $p->handler(comment =>
             sub {
                 my($self, $tokens) = @_;
                 for (@$tokens) {$self->comment($_);}},
             "self, tokens");
   $p->handler(declaration =>
             sub {
                 my $self = shift;
                 $self->declaration(substr($_[0], 2, -1));},
             "self, text");

Setting up these handlers can also be requested with the "api_version => 2" constructor option.

これらのハンドラの設定は、"api_version=>2"コンストラクタオプションで要求することもできる。 (TBR)

SUBCLASSING

The HTML::Parser class is subclassable. Parser objects are plain hashes and HTML::Parser reserves only hash keys that start with "_hparser". The parser state can be set up by invoking the init() method, which takes the same arguments as new().

HTML::Parserクラスはサブクラス化可能です。 パーサーオブジェクトはプレーンハッシュであり、HTML::Parserは"_hparser"で始まるハッシュキーのみを予約します。 パーサーの状態は、new()と同じ引数を取るinit()メソッドを呼び出すことで設定できます。 (TBR)

The first simple example shows how you might strip out comments from an HTML document. We achieve this by setting up a comment handler that does nothing and a default handler that will print out anything else:

最初の簡単な例は、HTML文書からコメントを取り除く方法を示しています。 これを実現するには、何もしないコメントハンドラと、それ以外のものを出力するデフォルトハンドラを設定します。 (TBR)

  use HTML::Parser;
  HTML::Parser->new(default_h => [sub { print shift }, 'text'],
                    comment_h => [""],
                   )->parse_file(shift || die) || die $!;

An alternative implementation is:

別の実装は次のとおりです。 (TBR)

  use HTML::Parser;
  HTML::Parser->new(end_document_h => [sub { print shift },
                                       'skipped_text'],
                    comment_h      => [""],
                   )->parse_file(shift || die) || die $!;

This will in most cases be much more efficient since only a single callback will be made.

これは、単一のコールバックしか行われないので、ほとんどの場合、はるかに効率的です。 (TBR)

The next example prints out the text that is inside the <title> element of an HTML document. Here we start by setting up a start handler. When it sees the title start tag it enables a text handler that prints any text found and an end handler that will terminate parsing as soon as the title end tag is seen:

次の例では、HTML文書の<title>要素内のテキストを出力します。 ここでは、開始ハンドラを設定することから始めます。 タイトル開始タグが検出されると、検出されたテキストを出力するテキストハンドラと、タイトル終了タグが検出されるとすぐに解析を終了する終了ハンドラが有効になります。 (TBR)

  use HTML::Parser ();

  sub start_handler
  {
    return if shift ne "title";
    my $self = shift;
    $self->handler(text => sub { print shift }, "dtext");
    $self->handler(end  => sub { shift->eof if shift eq "title"; },
                           "tagname,self");
  }

  my $p = HTML::Parser->new(api_version => 3);
  $p->handler( start => \&start_handler, "tagname,self");
  $p->parse_file(shift || die) || die $!;
  print "\n";

More examples are found in the eg/ directory of the HTML-Parser distribution: the program hrefsub shows how you can edit all links found in a document; the program htextsub shows how to edit the text only; the program hstrip shows how you can strip out certain tags/elements and/or attributes; and the program htext show how to obtain the plain text, but not any script/style content.

その他の例は、HTML-Parserディストリビューションのeg/ディレクトリにあります。 プログラムhrefsubは、文書内のすべてのリンクを編集する方法を示します。 プログラムhtextsubは、テキストのみを編集する方法を示します。 プログラムhstripは、特定のタグ/要素および/または属性を取り除く方法を示します。 プログラムhtextは、プレーンテキストを取得する方法を示しますが、スクリプト/スタイルコンテンツは取得しません。 (TBR)

You can browse the eg/ directory online from the [Browse] link on the http://search.cpan.org/~gaas/HTML-Parser/ page.

eg/ディレクトリは、http://search.cpan.org/~gaas/HTML-Parser/ページの[Browse]リンクからオンラインで参照できます。 (TBR)

バグ

The <style> and <script> sections do not end with the first "</", but need the complete corresponding end tag. The standard behaviour is not really practical.

<style>セクションと<script>セクションは最初の"</"で終わらないが、対応する完全な終了タグが必要である。 標準的な動作は実際には実用的ではない。 (TBR)

When the strict_comment option is enabled, we still recognize comments where there is something other than whitespace between even and odd "--" markers.

strict_commentオプションが有効になっている場合でも、偶数と奇数の「--」マーカーの間に空白以外のものがあるコメントは認識されます。 (TBR)

Once $p->boolean_attribute_value has been set, there is no way to restore the default behaviour.

$p->boolean_attribute_valueが設定されると、デフォルトの動作を復元する方法はありません。 (TBR)

There is currently no way to get both quote characters into the same literal argspec.

現在、両方の引用符文字を同じリテラルargspecに入れる方法はありません。 (TBR)

Empty tags, e.g. "<>" and "</>", are not recognized. SGML allows them to repeat the previous start tag or close the previous start tag respectively.

「<>」や「</>」などの空のタグは認識されません。 SGMLでは、前の開始タグを繰り返すことも、前の開始タグを閉じることもできます。 (TBR)

NET tags, e.g. "code/.../" are not recognized. This is SGML shorthand for "<code>...</code>".

"code/./"などのNETタグは認識されません。 これは"<code>.</code>"のSGMLの省略形です。 (TBR)

Unclosed start or end tags, e.g. "<tt<b>...</b</tt>" are not recognized.

"<tt<b>.</b</tt>"のような閉じていない開始タグや終了タグは認識されません。 (TBR)

DIAGNOSTICS

The following messages may be produced by HTML::Parser. The notation in this listing is the same as used in perldiag:

次のメッセージは、HTML::Parserによって生成される場合があります。 このリストの表記は、perldiagで使用される表記と同じです。 (TBR)

Not a reference to a hash

(F) The object blessed into or subclassed from HTML::Parser is not a hash as required by the HTML::Parser methods.

(F)HTML::Parserに祝福された、またはHTML::Parserからサブクラス化されたオブジェクトは、HTML::Parserメソッドで要求されるハッシュではありません。 (TBR)

Bad signature in parser state object at %p

(F) The _hparser_xs_state element does not refer to a valid state structure. Something must have changed the internal value stored in this hash element, or the memory has been overwritten.

(F)_hparser_xs_state要素が有効な状態構造を参照していません。 このハッシュ要素に格納されている内部値が何かによって変更されたか、メモリが上書きされた可能性があります。 (TBR)

_hparser_xs_state element is not a reference

(F) The _hparser_xs_state element has been destroyed.

(F)_hparser_xs_state要素が破棄された。 (TBR)

Can't find '_hparser_xs_state' element in HTML::Parser hash

(F) The _hparser_xs_state element is missing from the parser hash. It was either deleted, or not created when the object was created.

(F)_hparser_xs_state要素がパーサーハッシュにありません。 この要素は削除されたか、オブジェクトの作成時に作成されませんでした。 (TBR)

API version %s not supported by HTML::Parser %s

(F) The constructor option 'api_version' with an argument greater than or equal to 4 is reserved for future extensions.

(F)4以上の引数を持つコンストラクタオプション'api_version'は、将来の拡張のために予約されています。 (TBR)

Bad constructor option '%s'

(F) An unknown constructor option key was passed to the new() or init() methods.

(F)不明なコンストラクタオプションキーがnew()またはinit()メソッドに渡されました。 (TBR)

Parse loop not allowed

(F) A handler invoked the parse() or parse_file() method. This is not permitted.

(F)ハンドラがparse()またはparse_file()メソッドを呼び出しました。 これは許可されていません。 (TBR)

marked sections not supported

(F) The $p->marked_sections() method was invoked in a HTML::Parser module that was compiled without support for marked sections.

(F)$p->marked_sections()メソッドが、マーク区間をサポートせずにコンパイルされたHTML::Parserモジュールで呼び出されました。 (TBR)

Unknown boolean attribute (%d)

(F) Something is wrong with the internal logic that set up aliases for boolean attributes.

(F)ブール属性の別名を設定する内部ロジックに問題があります。 (TBR)

Only code or array references allowed as handler

(F) The second argument for $p->handler must be either a subroutine reference, then name of a subroutine or method, or a reference to an array.

(F)$p->handlerの2番目の引数は、サブルーチン参照、サブルーチンまたはメソッドの名前、または配列への参照のいずれかである必要があります。 (TBR)

No handler for %s events

(F) The first argument to $p->handler must be a valid event name; i.e. one of "start", "end", "text", "process", "declaration" or "comment".

(F)$p->handlerの最初の引数は、有効なイベント名である必要があります。 つまり、「start」、「end」、「text」、「process」、「declaration」、「comment」のいずれかです。 (TBR)

Unrecognized identifier %s in argspec

(F) The identifier is not a known argspec name. Use one of the names mentioned in the argspec section above.

(F)識別名は既知のargspec名ではありません。 上記のargspecのセクションに記載されている名前のいずれかを使用してください。 (TBR)

Literal string is longer than 255 chars in argspec

(F) The current implementation limits the length of literals in an argspec to 255 characters. Make the literal shorter.

(F)現在の実装では、argspecのリテラル長は255文字に制限されています。 リテラルを短くしてください。 (TBR)

Backslash reserved for literal string in argspec

(F) The backslash character "\" is not allowed in argspec literals. It is reserved to permit quoting inside a literal in a later version.

(F)バックスラッシュ文字「\」は、argspecリテラルでは使用できません。 これは、後のバージョンでリテラル内での引用を許可するために予約されています。 (TBR)

Unterminated literal string in argspec

(F) The terminating quote character for a literal was not found.

(F)リテラルの終了引用符文字が見つかりませんでした。 (TBR)

Bad argspec (%s)

(F) Only identifier names, literals, spaces and commas are allowed in argspecs.

(F)argspecsでは、識別名、リテラル、スペース、およびカンマのみが許可されます。 (TBR)

Missing comma separator in argspec

(F) Identifiers in an argspec must be separated with ",".

(F)argspecの識別子は、「,」で区切らなければならない。 (TBR)

Parsing of undecoded UTF-8 will give garbage when decoding entities

(W) The first chunk parsed appears to contain undecoded UTF-8 and one or more argspecs that decode entities are used for the callback handlers.

(W)解析された最初のチャンクには、デコードされていないUTF-8が含まれているように見えます。 また、エンティティをデコードする1つ以上のargspecsがコールバックハンドラに使用されています。 (TBR)

The result of decoding will be a mix of encoded and decoded characters for any entities that expand to characters with code above 127. This is not a good thing.

デコードの結果は、127を超えるコードを持つ文字に展開されるエンティティのエンコードされた文字とデコードされた文字の混合になります。 これは良いことではありません。 (TBR)

The solution is to use the Encode::encode_utf8() on the data before feeding it to the $p->parse(). For $p->parse_file() pass a file that has been opened in ":utf8" mode.

この問題を解決するには、$p->parse()に渡す前に、データに対してEncode::encode_utf8()を使用します。 $p->parse_file()には、":utf8"モードで開かれたファイルを渡します。 (TBR)

The parser can process raw undecoded UTF-8 sanely if the utf8_mode is enabled or if the "attr", "@attr" or "dtext" argspecs is avoided.

utf8_modeが有効になっているか、"attr"、"@attr"、または"dtext"argspecsが回避されている場合、パーサーはデコードされていない生のUTF-8を正常に処理できます。 (TBR)

Parsing string decoded with wrong endianness

(W) The first character in the document is U+FFFE. This is not a legal Unicode character but a byte swapped BOM. The result of parsing will likely be garbage.

(W)文書の最初の文字はU+FFFEです。 これは有効なUnicode文字ではなく、バイトスワップされたBOMです。 解析の結果はガベージになる可能性があります。 (TBR)

Parsing of undecoded UTF-32

(W) The parser found the Unicode UTF-32 BOM signature at the start of the document. The result of parsing will likely be garbage.

(W)パーサーは文書の先頭にUnicode UTF-32 BOM署名を見つけました。 構文解析の結果はおそらくゴミになります。 (TBR)

Parsing of undecoded UTF-16

(W) The parser found the Unicode UTF-16 BOM signature at the start of the document. The result of parsing will likely be garbage.

(W)パーサーは文書の先頭にUnicode UTF-16 BOMシグネチャを検出しました。 解析の結果はガベージになる可能性があります。 (TBR)

SEE ALSO

HTML::Entities, HTML::PullParser, HTML::TokeParser, HTML::HeadParser, HTML::LinkExtor, HTML::Form

HTML::TreeBuilder (part of the HTML-Tree distribution)

HTML::TreeBuilder (HTML-Tree 配布物の一部)

http://www.w3.org/TR/html4/

More information about marked sections and processing instructions may be found at http://www.is-thought.co.uk/book/sgml-8.htm.

マーク区間と処理命令の詳細については、http://www.is-thought.co.uk/book/sgml-8.htmを参照してください。 (TBR)

コピーライト

 Copyright 1996-2008 Gisle Aas. All rights reserved.
 Copyright 1999-2000 Michael A. Chase.  All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.