HTML::Tagset(3)
π HTML::Tagset(3) β the perl manual page, but make it make sense
okay so bestie, you're looking at the manual page for HTML::Tagset, which lives in the User Contributed Perl Documentation section (section 3, for the uninitiated π). This is Version 3.24, and honestly? It's giving "quietly essential infrastructure" and I'm obsessed.
β¨ NAME β¨
HTML::Tagset β data tables useful in parsing HTML. that's it, that's the whole vibe. it's a little grab-bag of lookup tables and it carries half the HTML-parsing ecosystem on its back, no cap.
πΈ VERSION πΈ
Version 3.24. periodt.
π¦ SYNOPSIS π¦
use HTML::Tagset;
# Then use any of the items in the HTML::Tagset package
# as need arises
literally that's the whole thing. use it, then grab whatever item from the HTML::Tagset package you need as the need arises. slay.
π DESCRIPTION π
This module contains several data tables useful in various kinds of HTML parsing operations. it's a toolbox, not a parser β know the difference, iykyk.
Note that all tag names used are lowercase. all of them. no uppercase shenanigans. lowercase or nothing, bestie.
okay so before we go any further, a definition, because the docs keep saying "hashset" and you deserve to know: in the following documentation, a "hashset" is a hash being used as a set β the hash conveys that its keys are there, and the actual values associated with the keys are not significant. (But what values are there, are always true.) so like, exists is your bestie here, not truthiness of the value. π
π VARIABLES π
Note that none of these variables are exported. none. zero. you want 'em, you fully qualify 'em. main character energy only.
π§ hashset %HTML::Tagset::emptyElement
This hashset has as values the tag-names (GIs) of elements that cannot have content. (For example, base, br, hr.) So $HTML::Tagset::emptyElement{'hr'} exists and is true. And $HTML::Tagset::emptyElement{'dl'} does not exist, and so is not true. see? simple. iconic.
π hashset %HTML::Tagset::optionalEndTag
This hashset lists tag-names for elements that can have content, but whose end-tags are generally, "safely", omissible. Example: $HTML::Tagset::emptyElement{'li'} exists and is true. β¨
π okay, yes, the example in the original doc genuinely says$HTML::Tagset::emptyElement{'li'}inside theoptionalEndTagsection. that's what it says, so that's what I'm telling you. I don't make the rules, I just relabel the vibe check.
π hash %HTML::Tagset::linkElements
Values in this hash are tagnames for elements that might contain links, and the value for each is a reference to an array of the names of attributes whose values can be links. so: tag name as key, arrayref of link-capable attribute names as value. cute.
π₯ hash %HTML::Tagset::boolean_attr
This hash (not a hashset, keep up π) lists what attributes of what elements can be printed without showing the value (for example, the noshade attribute of hr elements). For elements with only one such attribute, its value is simply that attribute name. For elements with many such attributes, the value is a reference to a hashset containing all such attributes. so the value type depends on the count. messy? a little. useful? absolutely.
π«Ά hashset %HTML::Tagset::isPhraseMarkup
This hashset contains all phrasal-level elements. phrasing girlies rise.
β hashset %HTML::Tagset::is_Possible_Strict_P_Content
This hashset contains all phrasal-level elements that be content of a P element, for a strict model of HTML. (yes, the original wording is "that be content". we stan grammatical chaos.)
π§ hashset %HTML::Tagset::isHeadElement
This hashset contains all elements that elements that should be present only in the 'head' element of an HTML document. (yes β "that elements that". I'm preserving the original's whole vibe, okay π)
π hashset %HTML::Tagset::isList
This hashset contains all elements that can contain li elements. list girlies, this one's for you.
πΈ hashset %HTML::Tagset::isTableElement
This hashset contains all elements that are to be found only in/under a table element.
π hashset %HTML::Tagset::isFormElement
This hashset contains all elements that are to be found only in/under a form element.
π¦ hashset %HTML::Tagset::isBodyElement
This hashset contains all elements that are to be found only in/under the body element of an HTML document.
π hashset %HTML::Tagset::isHeadOrBodyElement
This hashset includes all elements that I notice can fall either in the head or in the body. flexible icons only.
π hashset %HTML::Tagset::isKnown
This hashset lists all known HTML elements. the whole roster. the whole cast.
β¨ hashset %HTML::Tagset::canTighten
This hashset lists elements that might have ignorable whitespace as children or siblings. whitespace-tightening candidates, fr fr.
π
array @HTML::Tagset::p_closure_barriers
This array has a meaning that I have only seen a need for in HTML::TreeBuilder, but I include it here on the off chance that someone might find it of use:
okay so the lore π΅ β when we see a <p> token, we go lookup up the lineage for a p element we might have to minimize. At first sight, we might say that if there's a p anywhere in the lineage of this new p, it should be closed. But that's wrong. Consider this document:
<html>
<head>
<title>foo</title>
</head>
<body>
<p>foo
<table>
<tr>
<td>
foo
<p>bar
</td>
</tr>
</table>
</p>
</body>
</html>
The second p is quite legally inside a much higher p.
My formalization of the reason why this is legal, but this:
<p>foo<p>bar</p></p>
isn't, is that something about the table constitutes a "barrier" to the application of the rule about what p must minimize.
So @HTML::Tagset::p_closure_barriers is the list of all such barrier-tags. that's the tea. β
π§ hashset %isCDATA_Parent
This hashset includes all elements whose content is CDATA.
π CAVEATS π
You may find it useful to alter the behavior of modules (like HTML::Element or HTML::TreeBuilder) that use HTML::Tagset's data tables by altering the data tables themselves. You are welcome to try, but be careful; and be aware that different modules may or may react differently to the data tables being changed. (yes, the original says "may or may react". I'm not touching it. that's the original's little quirk and I respect it.)
π«Ά Note that it may be inappropriate to use these tables for producing HTML β for example,%isHeadOrBodyElementlists the tagnames for all elements that can appear either in the head or in the body, such asscript. That doesn't mean that I am saying your code that produces HTML should feel free to put script elements in either place! If you are producing programs that spit out HTML, you should be intimately familiar with the DTDs for HTML or XHTML (available athttp://www.w3.org/), and you should slavishly obey them, not the data tables in this document. like, these tables are for parsing, not for emitting. do not come for me. π
π SEE ALSO π
HTML::ElementHTML::TreeBuilderHTML::LinkExtor
go read those, they're the ones actually doing the heavy lifting with these tables. π«Ά
π COPYRIGHT & LICENSE π
Copyright 1995-2000 Gisle Aas.
Copyright 2000-2005 Sean M. Burke.
Copyright 2005-2024 Andy Lester.
This library is free software; you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.
π¦ ACKNOWLEDGEMENTS π¦
Most of the code/data in this module was adapted from code written by Gisle Aas for HTML::Element, HTML::TreeBuilder, and HTML::LinkExtor. Then it was maintained by Sean M. Burke. lineage! we love a documented lineage. π
πΈ AUTHOR πΈ
Current maintainer: Andy Lester, "<andy at petdance.com>"
π BUGS π
Please report any bugs or feature requests to "bug-html-tagset at rt.cpan.org", or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=HTML-Tagset. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. closed loop communication, we love to see it. β¨
and that's the page, bestie π«Ά β this was perl v5.42.0, dated 2024-03-22, and it's HTML::Tagset(3) all the way down. go parse something cute. π
π¦ where this page comes from
- opensuse-leap 16.0: perl-HTML-Tagset 3.240.0-160000.2.2 Β· Artistic-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms