feat(html): Support in-line anchor tags in HTML texts (#1659)

* re-implement links for html backend.

Signed-off-by: Roman Kayan BAZG <roman.kayan@bazg.admin.ch>

* fix inline groups in list items. write specific test for find_parent_annotation of _extract_text_and_hyperlink_recursively.

Signed-off-by: Roman Kayan BAZG <roman.kayan@bazg.admin.ch>

* implement hack for images.

Signed-off-by: Roman Kayan BAZG <roman.kayan@bazg.admin.ch>

---------

Signed-off-by: Roman Kayan BAZG <roman.kayan@bazg.admin.ch>
This commit is contained in:
krrome
2025-08-18 09:57:16 +02:00
committed by GitHub
parent 76c1fbd6e8
commit 9687297262
25 changed files with 21059 additions and 4111 deletions

View File

@@ -1,8 +1,11 @@
import logging import logging
import re import re
from contextlib import contextmanager
from copy import deepcopy
from io import BytesIO from io import BytesIO
from pathlib import Path from pathlib import Path
from typing import Final, Optional, Union, cast from typing import Final, Optional, Union, cast
from urllib.parse import urljoin
from bs4 import BeautifulSoup, NavigableString, PageElement, Tag from bs4 import BeautifulSoup, NavigableString, PageElement, Tag
from bs4.element import PreformattedString from bs4.element import PreformattedString
@@ -18,7 +21,7 @@ from docling_core.types.doc import (
TextItem, TextItem,
) )
from docling_core.types.doc.document import ContentLayer from docling_core.types.doc.document import ContentLayer
from pydantic import BaseModel from pydantic import AnyUrl, BaseModel, ValidationError
from typing_extensions import override from typing_extensions import override
from docling.backend.abstract_backend import DeclarativeDocumentBackend from docling.backend.abstract_backend import DeclarativeDocumentBackend
@@ -56,12 +59,76 @@ class _Context(BaseModel):
list_start_by_ref: dict[str, int] = {} list_start_by_ref: dict[str, int] = {}
class AnnotatedText(BaseModel):
text: str
hyperlink: Union[AnyUrl, Path, None] = None
class AnnotatedTextList(list):
def to_single_text_element(self) -> AnnotatedText:
current_h = None
current_text = ""
for at in self:
t = at.text
h = at.hyperlink
current_text += t.strip() + " "
if h is not None and current_h is None:
current_h = h
elif h is not None and current_h is not None and h != current_h:
_log.warning(
f"Clashing hyperlinks: '{h}' and '{current_h}'! Chose '{current_h}'"
)
return AnnotatedText(text=current_text.strip(), hyperlink=current_h)
def simplify_text_elements(self) -> "AnnotatedTextList":
simplified = AnnotatedTextList()
if not self:
return self
text = self[0].text
hyperlink = self[0].hyperlink
last_elm = text
for i in range(1, len(self)):
if hyperlink == self[i].hyperlink:
sep = " "
if not self[i].text.strip() or not last_elm.strip():
sep = ""
text += sep + self[i].text
last_elm = self[i].text
else:
simplified.append(AnnotatedText(text=text, hyperlink=hyperlink))
text = self[i].text
last_elm = text
hyperlink = self[i].hyperlink
if text:
simplified.append(AnnotatedText(text=text, hyperlink=hyperlink))
return simplified
def split_by_newline(self):
super_list = []
active_annotated_text_list = AnnotatedTextList()
for el in self:
sub_texts = el.text.split("\n")
if len(sub_texts) == 1:
active_annotated_text_list.append(el)
else:
for text in sub_texts:
sub_el = deepcopy(el)
sub_el.text = text
active_annotated_text_list.append(sub_el)
super_list.append(active_annotated_text_list)
active_annotated_text_list = AnnotatedTextList()
if active_annotated_text_list:
super_list.append(active_annotated_text_list)
return super_list
class HTMLDocumentBackend(DeclarativeDocumentBackend): class HTMLDocumentBackend(DeclarativeDocumentBackend):
@override @override
def __init__( def __init__(
self, self,
in_doc: InputDocument, in_doc: InputDocument,
path_or_stream: Union[BytesIO, Path], path_or_stream: Union[BytesIO, Path],
original_url: Optional[AnyUrl] = None,
): ):
super().__init__(in_doc, path_or_stream) super().__init__(in_doc, path_or_stream)
self.soup: Optional[Tag] = None self.soup: Optional[Tag] = None
@@ -74,6 +141,8 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
self.ctx = _Context() self.ctx = _Context()
for i in range(self.max_levels): for i in range(self.max_levels):
self.parents[i] = None self.parents[i] = None
self.hyperlink = None
self.original_url = original_url
try: try:
raw = ( raw = (
@@ -160,26 +229,32 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
element: The XML tag to parse. element: The XML tag to parse.
doc: The Docling document to be updated with the parsed content. doc: The Docling document to be updated with the parsed content.
""" """
buffer: list[str] = [] buffer: AnnotatedTextList = AnnotatedTextList()
def flush_buffer(): def flush_buffer():
if not buffer: if not buffer:
return return
text = "".join(buffer).strip() annotated_text_list = buffer.simplify_text_elements()
parts = annotated_text_list.split_by_newline()
buffer.clear() buffer.clear()
if not text:
if not "".join([el.text for el in annotated_text_list]):
return return
for part in text.split("\n"):
seg = part.strip() for annotated_text_list in parts:
seg_clean = HTMLDocumentBackend._clean_unicode(seg) with self.use_inline_group(annotated_text_list, doc):
if seg: for annotated_text in annotated_text_list:
doc.add_text( if annotated_text.text.strip():
label=DocItemLabel.TEXT, seg_clean = HTMLDocumentBackend._clean_unicode(
text=seg_clean, annotated_text.text.strip()
orig=seg, )
parent=self.parents[self.level], doc.add_text(
content_layer=self.content_layer, parent=self.parents[self.level],
) label=DocItemLabel.TEXT,
text=seg_clean,
content_layer=self.content_layer,
hyperlink=annotated_text.hyperlink,
)
for node in element.contents: for node in element.contents:
if isinstance(node, Tag): if isinstance(node, Tag):
@@ -187,6 +262,9 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
if name == "img": if name == "img":
flush_buffer() flush_buffer()
self._emit_image(node, doc) self._emit_image(node, doc)
elif name == "a":
with self.use_hyperlink(node):
self._walk(node, doc)
elif name in _BLOCK_TAGS: elif name in _BLOCK_TAGS:
flush_buffer() flush_buffer()
self._handle_block(node, doc) self._handle_block(node, doc)
@@ -194,28 +272,154 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
flush_buffer() flush_buffer()
self._walk(node, doc) self._walk(node, doc)
else: else:
buffer.append(node.text) buffer.extend(
self._extract_text_and_hyperlink_recursively(
node, find_parent_annotation=True, keep_newlines=True
)
)
elif isinstance(node, NavigableString) and not isinstance( elif isinstance(node, NavigableString) and not isinstance(
node, PreformattedString node, PreformattedString
): ):
buffer.append(str(node)) if str(node).strip("\n\r") == "":
flush_buffer()
else:
buffer.extend(
self._extract_text_and_hyperlink_recursively(
node, find_parent_annotation=True, keep_newlines=True
)
)
flush_buffer() flush_buffer()
def _extract_text_and_hyperlink_recursively(
self,
item: PageElement,
ignore_list=False,
find_parent_annotation=False,
keep_newlines=False,
) -> AnnotatedTextList:
result: AnnotatedTextList = AnnotatedTextList()
# If find_parent_annotation, make sure that we keep track of
# any a-tag that has been present in the DOM-parents already.
if find_parent_annotation:
this_parent = item.parent
while this_parent is not None:
if this_parent.name == "a" and this_parent.get("href"):
with self.use_hyperlink(this_parent):
return self._extract_text_and_hyperlink_recursively(
item, ignore_list
)
this_parent = this_parent.parent
if isinstance(item, PreformattedString):
return AnnotatedTextList()
if isinstance(item, NavigableString):
text = item.strip()
if text:
return AnnotatedTextList(
[AnnotatedText(text=text, hyperlink=self.hyperlink)]
)
if keep_newlines and item.strip("\n\r") == "":
return AnnotatedTextList(
[AnnotatedText(text="\n", hyperlink=self.hyperlink)]
)
return AnnotatedTextList()
tag = cast(Tag, item)
if not ignore_list or (tag.name not in ["ul", "ol"]):
for child in tag:
if isinstance(child, Tag) and child.name == "a":
with self.use_hyperlink(child):
result.extend(
self._extract_text_and_hyperlink_recursively(
child, ignore_list, keep_newlines=keep_newlines
)
)
else:
# Recursively get the child's text content
result.extend(
self._extract_text_and_hyperlink_recursively(
child, ignore_list, keep_newlines=keep_newlines
)
)
return result
@contextmanager
def use_hyperlink(self, tag):
this_href = tag.get("href")
if this_href is None:
yield None
else:
if this_href:
old_hyperlink = self.hyperlink
if self.original_url is not None:
this_href = urljoin(self.original_url, this_href)
# ugly fix for relative links since pydantic does not support them.
try:
AnyUrl(this_href)
except ValidationError:
this_href = Path(this_href)
self.hyperlink = this_href
try:
yield None
finally:
if this_href:
self.hyperlink = old_hyperlink
@contextmanager
def use_inline_group(
self, annotated_text_list: AnnotatedTextList, doc: DoclingDocument
):
"""Create an inline group for annotated texts.
Checks if annotated_text_list has more than one item and if so creates an inline
group in which the text elements can then be generated. While the context manager
is active the inline group is set as the current parent.
Args:
annotated_text_list (AnnotatedTextList): Annotated text
doc (DoclingDocument): Currently used document
Yields:
None: _description_
"""
if len(annotated_text_list) > 1:
inline_fmt = doc.add_group(
label=GroupLabel.INLINE,
parent=self.parents[self.level],
content_layer=self.content_layer,
)
self.parents[self.level + 1] = inline_fmt
self.level += 1
try:
yield None
finally:
self.parents[self.level] = None
self.level -= 1
else:
yield None
def _handle_heading(self, tag: Tag, doc: DoclingDocument) -> None: def _handle_heading(self, tag: Tag, doc: DoclingDocument) -> None:
tag_name = tag.name.lower() tag_name = tag.name.lower()
# set default content layer to BODY as soon as we encounter a heading # set default content layer to BODY as soon as we encounter a heading
self.content_layer = ContentLayer.BODY self.content_layer = ContentLayer.BODY
level = int(tag_name[1]) level = int(tag_name[1])
text = tag.get_text(strip=True, separator=" ") annotated_text_list = self._extract_text_and_hyperlink_recursively(
text_clean = HTMLDocumentBackend._clean_unicode(text) tag, find_parent_annotation=True
)
annotated_text = annotated_text_list.to_single_text_element()
text_clean = HTMLDocumentBackend._clean_unicode(annotated_text.text)
# the first level is for the title item # the first level is for the title item
if level == 1: if level == 1:
for key in self.parents.keys(): for key in self.parents.keys():
self.parents[key] = None self.parents[key] = None
self.level = 0 self.level = 0
self.parents[self.level + 1] = doc.add_title( self.parents[self.level + 1] = doc.add_title(
text=text_clean, orig=text, content_layer=self.content_layer text_clean,
content_layer=self.content_layer,
hyperlink=annotated_text.hyperlink,
) )
# the other levels need to be lowered by 1 if a title was set # the other levels need to be lowered by 1 if a title was set
else: else:
@@ -241,9 +445,10 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
self.parents[self.level + 1] = doc.add_heading( self.parents[self.level + 1] = doc.add_heading(
parent=self.parents[self.level], parent=self.parents[self.level],
text=text_clean, text=text_clean,
orig=text, orig=annotated_text.text,
level=self.level, level=self.level,
content_layer=self.content_layer, content_layer=self.content_layer,
hyperlink=annotated_text.hyperlink,
) )
self.level += 1 self.level += 1
for img_tag in tag("img"): for img_tag in tag("img"):
@@ -292,37 +497,69 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
marker = "" marker = ""
# 2) extract only the "direct" text from this <li> # 2) extract only the "direct" text from this <li>
parts: list[str] = [] parts = self._extract_text_and_hyperlink_recursively(
for child in li.contents: li, ignore_list=True, find_parent_annotation=True
if isinstance(child, NavigableString) and not isinstance( )
child, PreformattedString min_parts = parts.simplify_text_elements()
): li_text = re.sub(
parts.append(child) r"\s+|\n+", " ", "".join([el.text for el in min_parts])
elif isinstance(child, Tag) and child.name not in ("ul", "ol"): ).strip()
text_part = HTMLDocumentBackend.get_text(child)
if text_part:
parts.append(text_part)
li_text = re.sub(r"\s+|\n+", " ", "".join(parts)).strip()
li_clean = HTMLDocumentBackend._clean_unicode(li_text)
# 3) add the list item # 3) add the list item
if li_text: if li_text:
self.parents[self.level + 1] = doc.add_list_item( if len(min_parts) > 1:
text=li_clean, # create an empty list element in order to hook the inline group onto that one
enumerated=is_ordered, self.parents[self.level + 1] = doc.add_list_item(
marker=marker, text="",
orig=li_text, enumerated=is_ordered,
parent=list_group, marker=marker,
content_layer=self.content_layer, parent=list_group,
) content_layer=self.content_layer,
)
self.level += 1
with self.use_inline_group(min_parts, doc):
for annotated_text in min_parts:
li_text = re.sub(
r"\s+|\n+", " ", annotated_text.text
).strip()
li_clean = HTMLDocumentBackend._clean_unicode(li_text)
doc.add_text(
parent=self.parents[self.level],
label=DocItemLabel.TEXT,
text=li_clean,
content_layer=self.content_layer,
hyperlink=annotated_text.hyperlink,
)
# 4) recurse into any nested lists, attaching them to this <li> item # 4) recurse into any nested lists, attaching them to this <li> item
for sublist in li({"ul", "ol"}, recursive=False): for sublist in li({"ul", "ol"}, recursive=False):
if isinstance(sublist, Tag): if isinstance(sublist, Tag):
self.level += 1 self._handle_block(sublist, doc)
self._handle_block(sublist, doc)
self.parents[self.level + 1] = None # now the list element with inline group is not a parent anymore
self.level -= 1 self.parents[self.level] = None
self.level -= 1
else:
annotated_text = min_parts[0]
li_text = re.sub(r"\s+|\n+", " ", annotated_text.text).strip()
li_clean = HTMLDocumentBackend._clean_unicode(li_text)
self.parents[self.level + 1] = doc.add_list_item(
text=li_clean,
enumerated=is_ordered,
marker=marker,
orig=li_text,
parent=list_group,
content_layer=self.content_layer,
hyperlink=annotated_text.hyperlink,
)
# 4) recurse into any nested lists, attaching them to this <li> item
for sublist in li({"ul", "ol"}, recursive=False):
if isinstance(sublist, Tag):
self.level += 1
self._handle_block(sublist, doc)
self.parents[self.level + 1] = None
self.level -= 1
else: else:
for sublist in li({"ul", "ol"}, recursive=False): for sublist in li({"ul", "ol"}, recursive=False):
if isinstance(sublist, Tag): if isinstance(sublist, Tag):
@@ -351,17 +588,23 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
self._handle_list(tag, doc) self._handle_list(tag, doc)
elif tag_name in {"p", "address", "summary"}: elif tag_name in {"p", "address", "summary"}:
for part in tag.text.split("\n"): text_list = self._extract_text_and_hyperlink_recursively(
seg = part.strip() tag, find_parent_annotation=True
seg_clean = HTMLDocumentBackend._clean_unicode(seg) )
if seg: annotated_texts = text_list.simplify_text_elements()
doc.add_text( for part in annotated_texts.split_by_newline():
label=DocItemLabel.TEXT, with self.use_inline_group(part, doc):
text=seg_clean, for annotated_text in part:
orig=seg, if seg := annotated_text.text.strip():
parent=self.parents[self.level], seg_clean = HTMLDocumentBackend._clean_unicode(seg)
content_layer=self.content_layer, doc.add_text(
) parent=self.parents[self.level],
label=DocItemLabel.TEXT,
text=seg_clean,
content_layer=self.content_layer,
hyperlink=annotated_text.hyperlink,
)
for img_tag in tag("img"): for img_tag in tag("img"):
if isinstance(img_tag, Tag): if isinstance(img_tag, Tag):
self._emit_image(img_tag, doc) self._emit_image(img_tag, doc)
@@ -380,15 +623,21 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
elif tag_name in {"pre", "code"}: elif tag_name in {"pre", "code"}:
# handle monospace code snippets (pre). # handle monospace code snippets (pre).
text = tag.get_text(strip=True) text_list = self._extract_text_and_hyperlink_recursively(
text_clean = HTMLDocumentBackend._clean_unicode(text) tag, find_parent_annotation=True
if text: )
doc.add_code( annotated_texts = text_list.simplify_text_elements()
parent=self.parents[self.level], with self.use_inline_group(annotated_texts, doc):
text=text_clean, for annotated_text in annotated_texts:
orig=text, text_clean = HTMLDocumentBackend._clean_unicode(
content_layer=self.content_layer, annotated_text.text.strip()
) )
doc.add_code(
parent=self.parents[self.level],
text=text_clean,
content_layer=self.content_layer,
hyperlink=annotated_text.hyperlink,
)
elif tag_name == "details": elif tag_name == "details":
# handle details and its content. # handle details and its content.
@@ -405,22 +654,45 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
def _emit_image(self, img_tag: Tag, doc: DoclingDocument) -> None: def _emit_image(self, img_tag: Tag, doc: DoclingDocument) -> None:
figure = img_tag.find_parent("figure") figure = img_tag.find_parent("figure")
caption: str = "" caption: AnnotatedTextList = AnnotatedTextList()
# check if the figure has a link - this is HACK:
def get_img_hyperlink(img_tag):
this_parent = img_tag.parent
while this_parent is not None:
if this_parent.name == "a" and this_parent.get("href"):
return this_parent.get("href")
this_parent = this_parent.parent
return None
if img_hyperlink := get_img_hyperlink(img_tag):
caption.append(
AnnotatedText(text="Image Hyperlink.", hyperlink=img_hyperlink)
)
if isinstance(figure, Tag): if isinstance(figure, Tag):
caption_tag = figure.find("figcaption", recursive=False) caption_tag = figure.find("figcaption", recursive=False)
if isinstance(caption_tag, Tag): if isinstance(caption_tag, Tag):
caption = caption_tag.get_text() caption = self._extract_text_and_hyperlink_recursively(
if not caption: caption_tag, find_parent_annotation=True
caption = str(img_tag.get("alt", "")).strip() )
if not caption and img_tag.get("alt"):
caption = AnnotatedTextList([AnnotatedText(text=img_tag.get("alt"))])
caption_anno_text = caption.to_single_text_element()
caption_item: Optional[TextItem] = None caption_item: Optional[TextItem] = None
if caption: if caption_anno_text.text:
caption_clean = HTMLDocumentBackend._clean_unicode(caption) text_clean = HTMLDocumentBackend._clean_unicode(
caption_anno_text.text.strip()
)
print(caption_anno_text)
caption_item = doc.add_text( caption_item = doc.add_text(
label=DocItemLabel.CAPTION, label=DocItemLabel.CAPTION,
text=caption_clean, text=text_clean,
orig=caption, orig=caption_anno_text.text,
content_layer=self.content_layer, content_layer=self.content_layer,
hyperlink=caption_anno_text.hyperlink,
) )
doc.add_picture( doc.add_picture(

View File

@@ -0,0 +1,6 @@
item-0 at level 0: unspecified: group _root_
item-1 at level 1: title: Something
item-2 at level 2: inline: group group
item-3 at level 3: text: Please follow the link to:
item-4 at level 3: text: This page
item-5 at level 3: text: .

View File

@@ -0,0 +1,110 @@
{
"schema_name": "DoclingDocument",
"version": "1.5.0",
"name": "hyperlink_01",
"origin": {
"mimetype": "text/html",
"binary_hash": 17149231461445569313,
"filename": "hyperlink_01.html"
},
"furniture": {
"self_ref": "#/furniture",
"children": [],
"content_layer": "furniture",
"name": "_root_",
"label": "unspecified"
},
"body": {
"self_ref": "#/body",
"children": [
{
"$ref": "#/texts/0"
}
],
"content_layer": "body",
"name": "_root_",
"label": "unspecified"
},
"groups": [
{
"self_ref": "#/groups/0",
"parent": {
"$ref": "#/texts/0"
},
"children": [
{
"$ref": "#/texts/1"
}
],
"content_layer": "body",
"name": "group",
"label": "inline"
}
],
"texts": [
{
"self_ref": "#/texts/0",
"parent": {
"$ref": "#/body"
},
"children": [
{
"$ref": "#/groups/0"
},
{
"$ref": "#/texts/2"
},
{
"$ref": "#/texts/3"
}
],
"content_layer": "body",
"label": "title",
"prov": [],
"orig": "Something",
"text": "Something"
},
{
"self_ref": "#/texts/1",
"parent": {
"$ref": "#/groups/0"
},
"children": [],
"content_layer": "body",
"label": "text",
"prov": [],
"orig": "Please follow the link to:",
"text": "Please follow the link to:"
},
{
"self_ref": "#/texts/2",
"parent": {
"$ref": "#/texts/0"
},
"children": [],
"content_layer": "body",
"label": "text",
"prov": [],
"orig": "This page",
"text": "This page",
"hyperlink": "#"
},
{
"self_ref": "#/texts/3",
"parent": {
"$ref": "#/texts/0"
},
"children": [],
"content_layer": "body",
"label": "text",
"prov": [],
"orig": ".",
"text": "."
}
],
"pictures": [],
"tables": [],
"key_value_items": [],
"form_items": [],
"pages": {}
}

View File

@@ -0,0 +1,3 @@
# Something
Please follow the link to: [This page](#) .

View File

@@ -0,0 +1,3 @@
item-0 at level 0: unspecified: group _root_
item-1 at level 1: section: group header-1
item-2 at level 2: section_header: Home

View File

@@ -0,0 +1,65 @@
{
"schema_name": "DoclingDocument",
"version": "1.5.0",
"name": "hyperlink_02",
"origin": {
"mimetype": "text/html",
"binary_hash": 15683290523889238210,
"filename": "hyperlink_02.html"
},
"furniture": {
"self_ref": "#/furniture",
"children": [],
"content_layer": "furniture",
"name": "_root_",
"label": "unspecified"
},
"body": {
"self_ref": "#/body",
"children": [
{
"$ref": "#/groups/0"
}
],
"content_layer": "body",
"name": "_root_",
"label": "unspecified"
},
"groups": [
{
"self_ref": "#/groups/0",
"parent": {
"$ref": "#/body"
},
"children": [
{
"$ref": "#/texts/0"
}
],
"content_layer": "body",
"name": "header-1",
"label": "section"
}
],
"texts": [
{
"self_ref": "#/texts/0",
"parent": {
"$ref": "#/groups/0"
},
"children": [],
"content_layer": "body",
"label": "section_header",
"prov": [],
"orig": "Home",
"text": "Home",
"hyperlink": "/home.html",
"level": 1
}
],
"pictures": [],
"tables": [],
"key_value_items": [],
"form_items": [],
"pages": {}
}

View File

@@ -0,0 +1 @@
## [Home](/home.html)

View File

@@ -0,0 +1,21 @@
item-0 at level 0: unspecified: group _root_
item-1 at level 1: list: group list
item-2 at level 2: list_item: My Section
item-3 at level 3: list: group list
item-4 at level 4: list_item: Some page
item-5 at level 5: list: group list
item-6 at level 6: list_item: A sub page
item-7 at level 5: list: group list
item-8 at level 6: list_item:
item-9 at level 7: inline: group group
item-10 at level 8: text: This is my
item-11 at level 8: text: Homepage
item-12 at level 7: list: group list
item-13 at level 8: list_item: List item inner
item-14 at level 8: list_item:
item-15 at level 9: inline: group group
item-16 at level 10: text: More text
item-17 at level 10: text: with some links
item-18 at level 10: text: and more text.
item-19 at level 6: list_item: Main navigation
item-20 at level 2: list_item: My organisation

View File

@@ -0,0 +1,354 @@
{
"schema_name": "DoclingDocument",
"version": "1.5.0",
"name": "hyperlink_03",
"origin": {
"mimetype": "text/html",
"binary_hash": 8615138561433766155,
"filename": "hyperlink_03.html"
},
"furniture": {
"self_ref": "#/furniture",
"children": [],
"content_layer": "furniture",
"name": "_root_",
"label": "unspecified"
},
"body": {
"self_ref": "#/body",
"children": [
{
"$ref": "#/groups/0"
}
],
"content_layer": "body",
"name": "_root_",
"label": "unspecified"
},
"groups": [
{
"self_ref": "#/groups/0",
"parent": {
"$ref": "#/body"
},
"children": [
{
"$ref": "#/texts/0"
},
{
"$ref": "#/texts/12"
}
],
"content_layer": "body",
"name": "list",
"label": "list"
},
{
"self_ref": "#/groups/1",
"parent": {
"$ref": "#/texts/0"
},
"children": [
{
"$ref": "#/texts/1"
}
],
"content_layer": "body",
"name": "list",
"label": "list"
},
{
"self_ref": "#/groups/2",
"parent": {
"$ref": "#/texts/1"
},
"children": [
{
"$ref": "#/texts/2"
}
],
"content_layer": "body",
"name": "list",
"label": "list"
},
{
"self_ref": "#/groups/3",
"parent": {
"$ref": "#/texts/1"
},
"children": [
{
"$ref": "#/texts/3"
},
{
"$ref": "#/texts/11"
}
],
"content_layer": "body",
"name": "list",
"label": "list"
},
{
"self_ref": "#/groups/4",
"parent": {
"$ref": "#/texts/3"
},
"children": [
{
"$ref": "#/texts/4"
},
{
"$ref": "#/texts/5"
}
],
"content_layer": "body",
"name": "group",
"label": "inline"
},
{
"self_ref": "#/groups/5",
"parent": {
"$ref": "#/texts/3"
},
"children": [
{
"$ref": "#/texts/6"
},
{
"$ref": "#/texts/7"
}
],
"content_layer": "body",
"name": "list",
"label": "list"
},
{
"self_ref": "#/groups/6",
"parent": {
"$ref": "#/texts/7"
},
"children": [
{
"$ref": "#/texts/8"
},
{
"$ref": "#/texts/9"
},
{
"$ref": "#/texts/10"
}
],
"content_layer": "body",
"name": "group",
"label": "inline"
}
],
"texts": [
{
"self_ref": "#/texts/0",
"parent": {
"$ref": "#/groups/0"
},
"children": [
{
"$ref": "#/groups/1"
}
],
"content_layer": "body",
"label": "list_item",
"prov": [],
"orig": "My Section",
"text": "My Section",
"hyperlink": "#",
"enumerated": false,
"marker": ""
},
{
"self_ref": "#/texts/1",
"parent": {
"$ref": "#/groups/1"
},
"children": [
{
"$ref": "#/groups/2"
},
{
"$ref": "#/groups/3"
}
],
"content_layer": "body",
"label": "list_item",
"prov": [],
"orig": "Some page",
"text": "Some page",
"hyperlink": "/start.html",
"enumerated": false,
"marker": ""
},
{
"self_ref": "#/texts/2",
"parent": {
"$ref": "#/groups/2"
},
"children": [],
"content_layer": "body",
"label": "list_item",
"prov": [],
"orig": "A sub page",
"text": "A sub page",
"hyperlink": "/home2.html",
"enumerated": false,
"marker": ""
},
{
"self_ref": "#/texts/3",
"parent": {
"$ref": "#/groups/3"
},
"children": [
{
"$ref": "#/groups/4"
},
{
"$ref": "#/groups/5"
}
],
"content_layer": "body",
"label": "list_item",
"prov": [],
"orig": "",
"text": "",
"enumerated": false,
"marker": ""
},
{
"self_ref": "#/texts/4",
"parent": {
"$ref": "#/groups/4"
},
"children": [],
"content_layer": "body",
"label": "text",
"prov": [],
"orig": "This is my",
"text": "This is my"
},
{
"self_ref": "#/texts/5",
"parent": {
"$ref": "#/groups/4"
},
"children": [],
"content_layer": "body",
"label": "text",
"prov": [],
"orig": "Homepage",
"text": "Homepage",
"hyperlink": "/home.html"
},
{
"self_ref": "#/texts/6",
"parent": {
"$ref": "#/groups/5"
},
"children": [],
"content_layer": "body",
"label": "list_item",
"prov": [],
"orig": "List item inner",
"text": "List item inner",
"enumerated": false,
"marker": ""
},
{
"self_ref": "#/texts/7",
"parent": {
"$ref": "#/groups/5"
},
"children": [
{
"$ref": "#/groups/6"
}
],
"content_layer": "body",
"label": "list_item",
"prov": [],
"orig": "",
"text": "",
"enumerated": false,
"marker": ""
},
{
"self_ref": "#/texts/8",
"parent": {
"$ref": "#/groups/6"
},
"children": [],
"content_layer": "body",
"label": "text",
"prov": [],
"orig": "More text",
"text": "More text"
},
{
"self_ref": "#/texts/9",
"parent": {
"$ref": "#/groups/6"
},
"children": [],
"content_layer": "body",
"label": "text",
"prov": [],
"orig": "with some links",
"text": "with some links",
"hyperlink": "/some_links.html"
},
{
"self_ref": "#/texts/10",
"parent": {
"$ref": "#/groups/6"
},
"children": [],
"content_layer": "body",
"label": "text",
"prov": [],
"orig": "and more text.",
"text": "and more text."
},
{
"self_ref": "#/texts/11",
"parent": {
"$ref": "#/groups/3"
},
"children": [],
"content_layer": "body",
"label": "list_item",
"prov": [],
"orig": "Main navigation",
"text": "Main navigation",
"hyperlink": "#main-navigation",
"enumerated": false,
"marker": ""
},
{
"self_ref": "#/texts/12",
"parent": {
"$ref": "#/groups/0"
},
"children": [],
"content_layer": "body",
"label": "list_item",
"prov": [],
"orig": "My organisation",
"text": "My organisation",
"hyperlink": "#",
"enumerated": false,
"marker": ""
}
],
"pictures": [],
"tables": [],
"key_value_items": [],
"form_items": [],
"pages": {}
}

View File

@@ -0,0 +1,8 @@
- [My Section](#)
- [Some page](/start.html)
- [A sub page](/home2.html)
- This is my [Homepage](/home.html)
- List item inner
- More text [with some links](/some_links.html) and more text.
- [Main navigation](#main-navigation)
- [My organisation](#)

View File

@@ -0,0 +1,2 @@
item-0 at level 0: unspecified: group _root_
item-1 at level 1: text: This is some text.

View File

@@ -0,0 +1,49 @@
{
"schema_name": "DoclingDocument",
"version": "1.5.0",
"name": "hyperlink_04",
"origin": {
"mimetype": "text/html",
"binary_hash": 14205970924528394626,
"filename": "hyperlink_04.html"
},
"furniture": {
"self_ref": "#/furniture",
"children": [],
"content_layer": "furniture",
"name": "_root_",
"label": "unspecified"
},
"body": {
"self_ref": "#/body",
"children": [
{
"$ref": "#/texts/0"
}
],
"content_layer": "body",
"name": "_root_",
"label": "unspecified"
},
"groups": [],
"texts": [
{
"self_ref": "#/texts/0",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "text",
"prov": [],
"orig": "This is some text.",
"text": "This is some text.",
"hyperlink": "/start.html"
}
],
"pictures": [],
"tables": [],
"key_value_items": [],
"form_items": [],
"pages": {}
}

View File

@@ -0,0 +1 @@
[This is some text.](/start.html)

View File

@@ -0,0 +1,10 @@
item-0 at level 0: unspecified: group _root_
item-1 at level 1: caption: Image Hyperlink.
item-2 at level 1: picture
item-2 at level 2: caption: Image Hyperlink.
item-3 at level 1: caption: This is an example caption for the image.
item-4 at level 1: picture
item-4 at level 2: caption: This is an example caption for the image.
item-5 at level 1: caption: This is an example caption for the image.
item-6 at level 1: picture
item-6 at level 2: caption: This is an example caption for the image.

View File

@@ -0,0 +1,159 @@
{
"schema_name": "DoclingDocument",
"version": "1.5.0",
"name": "hyperlink_05",
"origin": {
"mimetype": "text/html",
"binary_hash": 13325077355174381809,
"filename": "hyperlink_05.html"
},
"furniture": {
"self_ref": "#/furniture",
"children": [],
"content_layer": "furniture",
"name": "_root_",
"label": "unspecified"
},
"body": {
"self_ref": "#/body",
"children": [
{
"$ref": "#/texts/0"
},
{
"$ref": "#/texts/1"
},
{
"$ref": "#/pictures/0"
},
{
"$ref": "#/texts/2"
},
{
"$ref": "#/pictures/1"
},
{
"$ref": "#/texts/3"
},
{
"$ref": "#/pictures/2"
}
],
"content_layer": "body",
"name": "_root_",
"label": "unspecified"
},
"groups": [],
"texts": [
{
"self_ref": "#/texts/0",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "furniture",
"label": "title",
"prov": [],
"orig": "Image Hyperlink and Caption Example",
"text": "Image Hyperlink and Caption Example"
},
{
"self_ref": "#/texts/1",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "caption",
"prov": [],
"orig": "Image Hyperlink.",
"text": "Image Hyperlink.",
"hyperlink": "https://www.example.com/"
},
{
"self_ref": "#/texts/2",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "caption",
"prov": [],
"orig": "This is an example caption for the image.",
"text": "This is an example caption for the image."
},
{
"self_ref": "#/texts/3",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "caption",
"prov": [],
"orig": "This is an example caption for the image.",
"text": "This is an example caption for the image.",
"hyperlink": "#caption"
}
],
"pictures": [
{
"self_ref": "#/pictures/0",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "picture",
"prov": [],
"captions": [
{
"$ref": "#/texts/1"
}
],
"references": [],
"footnotes": [],
"annotations": []
},
{
"self_ref": "#/pictures/1",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "picture",
"prov": [],
"captions": [
{
"$ref": "#/texts/2"
}
],
"references": [],
"footnotes": [],
"annotations": []
},
{
"self_ref": "#/pictures/2",
"parent": {
"$ref": "#/body"
},
"children": [],
"content_layer": "body",
"label": "picture",
"prov": [],
"captions": [
{
"$ref": "#/texts/3"
}
],
"references": [],
"footnotes": [],
"annotations": []
}
],
"tables": [],
"key_value_items": [],
"form_items": [],
"pages": {}
}

View File

@@ -0,0 +1,11 @@
Image Hyperlink.
<!-- image -->
This is an example caption for the image.
<!-- image -->
This is an example caption for the image.
<!-- image -->

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,26 +4,26 @@ move to sidebar
hide hide
- (Top) - [(Top)](#)
- 1 Etymology - [1 Etymology](#Etymology)
- 2 Taxonomy - [2 Taxonomy](#Taxonomy)
- 3 Morphology - [3 Morphology](#Morphology)
- 4 Distribution and habitat - [4 Distribution and habitat](#Distribution_and_habitat)
- 5 Behaviour Toggle Behaviour subsection - [5 Behaviour](#Behaviour) Toggle Behaviour subsection
- 5.1 Feeding - [5.1 Feeding](#Feeding)
- 5.2 Breeding - [5.2 Breeding](#Breeding)
- 5.3 Communication - [5.3 Communication](#Communication)
- 5.4 Predators - [5.4 Predators](#Predators)
- 6 Relationship with humans Toggle Relationship with humans subsection - [6 Relationship with humans](#Relationship_with_humans) Toggle Relationship with humans subsection
- 6.1 Hunting - [6.1 Hunting](#Hunting)
- 6.2 Domestication - [6.2 Domestication](#Domestication)
- 6.3 Heraldry - [6.3 Heraldry](#Heraldry)
- 6.4 Cultural references - [6.4 Cultural references](#Cultural_references)
- 7 See also - [7 See also](#See_also)
- 8 Notes Toggle Notes subsection - [8 Notes](#Notes) Toggle Notes subsection
- 8.1 Citations - [8.1 Citations](#Citations)
- 8.2 Sources - [8.2 Sources](#Sources)
- 9 External links - [9 External links](#External_links)
Toggle the table of contents Toggle the table of contents
@@ -31,153 +31,153 @@ Toggle the table of contents
136 languages 136 languages
- Acèh - [Acèh](https://ace.wikipedia.org/wiki/It%C3%A9k)
- Afrikaans - [Afrikaans](https://af.wikipedia.org/wiki/Eend)
- Alemannisch - [Alemannisch](https://als.wikipedia.org/wiki/Ente)
- አማርኛ - [አማርኛ](https://am.wikipedia.org/wiki/%E1%8B%B3%E1%8A%AD%E1%8B%AC)
- Ænglisc - [Ænglisc](https://ang.wikipedia.org/wiki/Ened)
- العربية - [العربية](https://ar.wikipedia.org/wiki/%D8%A8%D8%B7)
- Aragonés - [Aragonés](https://an.wikipedia.org/wiki/Anade)
- ܐܪܡܝܐ - [ܐܪܡܝܐ](https://arc.wikipedia.org/wiki/%DC%92%DC%9B%DC%90)
- Armãneashti - [Armãneashti](https://roa-rup.wikipedia.org/wiki/Paphi)
- Asturianu - [Asturianu](https://ast.wikipedia.org/wiki/Cor%C3%ADu)
- Atikamekw - [Atikamekw](https://atj.wikipedia.org/wiki/Cicip)
- Авар - [Авар](https://av.wikipedia.org/wiki/%D0%9E%D1%80%D0%B4%D0%B5%D0%BA)
- Aymar aru - [Aymar aru](https://ay.wikipedia.org/wiki/Unkalla)
- تۆرکجه - [تۆرکجه](https://azb.wikipedia.org/wiki/%D8%A7%D8%A4%D8%B1%D8%AF%DA%A9)
- Basa Bali - [Basa Bali](https://ban.wikipedia.org/wiki/B%C3%A9b%C3%A9k)
- বাংলা - [বাংলা](https://bn.wikipedia.org/wiki/%E0%A6%B9%E0%A6%BE%E0%A6%81%E0%A6%B8)
- 閩南語 / Bân-lâm-gú - [閩南語 / Bân-lâm-gú](https://zh-min-nan.wikipedia.org/wiki/Ah)
- Беларуская - [Беларуская](https://be.wikipedia.org/wiki/%D0%9A%D0%B0%D1%87%D0%BA%D1%96)
- Беларуская (тарашкевіца) - [Беларуская (тарашкевіца)](https://be-tarask.wikipedia.org/wiki/%D0%9A%D0%B0%D1%87%D0%BA%D1%96)
- Bikol Central - [Bikol Central](https://bcl.wikipedia.org/wiki/Itik)
- Български - [Български](https://bg.wikipedia.org/wiki/%D0%9F%D0%B0%D1%82%D0%B8%D1%86%D0%B0)
- Brezhoneg - [Brezhoneg](https://br.wikipedia.org/wiki/Houad_(evn))
- Буряад - [Буряад](https://bxr.wikipedia.org/wiki/%D0%9D%D1%83%D0%B3%D0%B0h%D0%B0%D0%BD)
- Català - [Català](https://ca.wikipedia.org/wiki/%C3%80necs)
- Чӑвашла - [Чӑвашла](https://cv.wikipedia.org/wiki/%D0%9A%C4%83%D0%B2%D0%B0%D0%BA%D0%B0%D0%BB%D1%81%D0%B5%D0%BC)
- Čeština - [Čeština](https://cs.wikipedia.org/wiki/Kachna)
- ChiShona - [ChiShona](https://sn.wikipedia.org/wiki/Dhadha)
- Cymraeg - [Cymraeg](https://cy.wikipedia.org/wiki/Hwyaden)
- Dagbanli - [Dagbanli](https://dag.wikipedia.org/wiki/Gbunya%C9%A3u)
- Dansk - [Dansk](https://da.wikipedia.org/wiki/%C3%86nder)
- Deitsch - [Deitsch](https://pdc.wikipedia.org/wiki/Ent)
- Deutsch - [Deutsch](https://de.wikipedia.org/wiki/Enten)
- डोटेली - [डोटेली](https://dty.wikipedia.org/wiki/%E0%A4%B9%E0%A4%BE%E0%A4%81%E0%A4%B8)
- Ελληνικά - [Ελληνικά](https://el.wikipedia.org/wiki/%CE%A0%CE%AC%CF%80%CE%B9%CE%B1)
- Emiliàn e rumagnòl - [Emiliàn e rumagnòl](https://eml.wikipedia.org/wiki/An%C3%A0dra)
- Español - [Español](https://es.wikipedia.org/wiki/Pato)
- Esperanto - [Esperanto](https://eo.wikipedia.org/wiki/Anaso)
- Euskara - [Euskara](https://eu.wikipedia.org/wiki/Ahate)
- فارسی - [فارسی](https://fa.wikipedia.org/wiki/%D9%85%D8%B1%D8%BA%D8%A7%D8%A8%DB%8C)
- Français - [Français](https://fr.wikipedia.org/wiki/Canard)
- Gaeilge - [Gaeilge](https://ga.wikipedia.org/wiki/Lacha)
- Galego - [Galego](https://gl.wikipedia.org/wiki/Pato)
- ГӀалгӀай - [ГӀалгӀай](https://inh.wikipedia.org/wiki/%D0%91%D0%BE%D0%B0%D0%B1%D0%B0%D1%88%D0%BA%D0%B0%D1%88)
- 贛語 - [贛語](https://gan.wikipedia.org/wiki/%E9%B4%A8)
- گیلکی - [گیلکی](https://glk.wikipedia.org/wiki/%D8%A8%D9%8A%D9%84%D9%8A)
- 𐌲𐌿𐍄𐌹𐍃𐌺 - [𐌲𐌿𐍄𐌹𐍃𐌺](https://got.wikipedia.org/wiki/%F0%90%8C%B0%F0%90%8C%BD%F0%90%8C%B0%F0%90%8C%B8%F0%90%8D%83)
- गोंयची कोंकणी / Gõychi Konknni - [गोंयची कोंकणी / Gõychi Konknni](https://gom.wikipedia.org/wiki/%E0%A4%AC%E0%A4%A6%E0%A4%95)
- 客家語 / Hak-kâ-ngî - [客家語 / Hak-kâ-ngî](https://hak.wikipedia.org/wiki/Ap-%C3%A8)
- 한국어 - [한국어](https://ko.wikipedia.org/wiki/%EC%98%A4%EB%A6%AC)
- Hausa - [Hausa](https://ha.wikipedia.org/wiki/Agwagwa)
- Հայերեն - [Հայերեն](https://hy.wikipedia.org/wiki/%D4%B2%D5%A1%D5%A4%D5%A5%D6%80)
- हिन्दी - [हिन्दी](https://hi.wikipedia.org/wiki/%E0%A4%AC%E0%A4%A4%E0%A5%8D%E0%A4%A4%E0%A4%96)
- Hrvatski - [Hrvatski](https://hr.wikipedia.org/wiki/Patka)
- Ido - [Ido](https://io.wikipedia.org/wiki/Anado)
- Bahasa Indonesia - [Bahasa Indonesia](https://id.wikipedia.org/wiki/Itik)
- Iñupiatun - [Iñupiatun](https://ik.wikipedia.org/wiki/Mitiq)
- Íslenska - [Íslenska](https://is.wikipedia.org/wiki/%C3%96nd)
- Italiano - [Italiano](https://it.wikipedia.org/wiki/Anatra)
- עברית - [עברית](https://he.wikipedia.org/wiki/%D7%91%D7%A8%D7%95%D7%95%D7%96)
- Jawa - [Jawa](https://jv.wikipedia.org/wiki/B%C3%A8b%C3%A8k)
- ಕನ್ನಡ - [ಕನ್ನಡ](https://kn.wikipedia.org/wiki/%E0%B2%AC%E0%B2%BE%E0%B2%A4%E0%B3%81%E0%B2%95%E0%B3%8B%E0%B2%B3%E0%B2%BF)
- Kapampangan - [Kapampangan](https://pam.wikipedia.org/wiki/Bibi)
- ქართული - [ქართული](https://ka.wikipedia.org/wiki/%E1%83%98%E1%83%AE%E1%83%95%E1%83%94%E1%83%91%E1%83%98)
- कॉशुर / کٲشُر - [कॉशुर / کٲشُر](https://ks.wikipedia.org/wiki/%D8%A8%D9%8E%D8%B7%D9%8F%D8%AE)
- Қазақша - [Қазақша](https://kk.wikipedia.org/wiki/%D2%AE%D0%B9%D1%80%D0%B5%D0%BA)
- Ikirundi - [Ikirundi](https://rn.wikipedia.org/wiki/Imbata)
- Kongo - [Kongo](https://kg.wikipedia.org/wiki/Kivadangu)
- Kreyòl ayisyen - [Kreyòl ayisyen](https://ht.wikipedia.org/wiki/Kanna)
- Кырык мары - [Кырык мары](https://mrj.wikipedia.org/wiki/%D0%9B%D1%8B%D0%B4%D1%8B%D0%B2%D0%BB%D3%93)
- ລາວ - [ລາວ](https://lo.wikipedia.org/wiki/%E0%BB%80%E0%BA%9B%E0%BA%B1%E0%BA%94)
- Latina - [Latina](https://la.wikipedia.org/wiki/Anas_(avis))
- Latviešu - [Latviešu](https://lv.wikipedia.org/wiki/P%C4%ABle)
- Lietuvių - [Lietuvių](https://lt.wikipedia.org/wiki/Antis)
- Li Niha - [Li Niha](https://nia.wikipedia.org/wiki/Bebe)
- Ligure - [Ligure](https://lij.wikipedia.org/wiki/Annia)
- Limburgs - [Limburgs](https://li.wikipedia.org/wiki/Aenj)
- Lingála - [Lingála](https://ln.wikipedia.org/wiki/Libat%C3%A1)
- Malagasy - [Malagasy](https://mg.wikipedia.org/wiki/Ganagana)
- മലയാളം - [മലയാളം](https://ml.wikipedia.org/wiki/%E0%B4%A4%E0%B4%BE%E0%B4%B1%E0%B4%BE%E0%B4%B5%E0%B5%8D)
- मराठी - [मराठी](https://mr.wikipedia.org/wiki/%E0%A4%AC%E0%A4%A6%E0%A4%95)
- مازِرونی - [مازِرونی](https://mzn.wikipedia.org/wiki/%D8%B3%DB%8C%DA%A9%D8%A7)
- Bahasa Melayu - [Bahasa Melayu](https://ms.wikipedia.org/wiki/Itik)
- ꯃꯤꯇꯩ ꯂꯣꯟ - [ꯃꯤꯇꯩ ꯂꯣꯟ](https://mni.wikipedia.org/wiki/%EA%AF%89%EA%AF%A5%EA%AF%85%EA%AF%A8)
- 閩東語 / Mìng-dĕ̤ng-ngṳ̄ - [閩東語 / Mìng-dĕ̤ng-ngṳ̄](https://cdo.wikipedia.org/wiki/%C3%81k)
- Мокшень - [Мокшень](https://mdf.wikipedia.org/wiki/%D0%AF%D0%BA%D1%81%D1%8F%D1%80%D0%B3%D0%B0)
- Монгол - [Монгол](https://mn.wikipedia.org/wiki/%D0%9D%D1%83%D0%B3%D0%B0%D1%81)
- မြန်မာဘာသာ - [မြန်မာဘာသာ](https://my.wikipedia.org/wiki/%E1%80%98%E1%80%B2)
- Nederlands - [Nederlands](https://nl.wikipedia.org/wiki/Eenden)
- Nedersaksies - [Nedersaksies](https://nds-nl.wikipedia.org/wiki/Ente)
- नेपाली - [नेपाली](https://ne.wikipedia.org/wiki/%E0%A4%B9%E0%A4%BE%E0%A4%81%E0%A4%B8)
- नेपाल भाषा - [नेपाल भाषा](https://new.wikipedia.org/wiki/%E0%A4%B9%E0%A4%81%E0%A4%AF%E0%A5%8D)
- 日本語 - [日本語](https://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%A2)
- Нохчийн - [Нохчийн](https://ce.wikipedia.org/wiki/%D0%91%D0%B5%D0%B4%D0%B0%D1%88)
- Norsk nynorsk - [Norsk nynorsk](https://nn.wikipedia.org/wiki/And)
- Occitan - [Occitan](https://oc.wikipedia.org/wiki/Guit)
- Oromoo - [Oromoo](https://om.wikipedia.org/wiki/Daakiyyee)
- ਪੰਜਾਬੀ - [ਪੰਜਾਬੀ](https://pa.wikipedia.org/wiki/%E0%A8%AC%E0%A8%A4%E0%A8%96%E0%A8%BC)
- Picard - [Picard](https://pcd.wikipedia.org/wiki/Can%C3%A8rd)
- Plattdüütsch - [Plattdüütsch](https://nds.wikipedia.org/wiki/Aanten)
- Polski - [Polski](https://pl.wikipedia.org/wiki/Kaczka)
- Português - [Português](https://pt.wikipedia.org/wiki/Pato)
- Qırımtatarca - [Qırımtatarca](https://crh.wikipedia.org/wiki/Papiy)
- Română - [Română](https://ro.wikipedia.org/wiki/Ra%C8%9B%C4%83)
- Русский - [Русский](https://ru.wikipedia.org/wiki/%D0%A3%D1%82%D0%BA%D0%B8)
- Саха тыла - [Саха тыла](https://sah.wikipedia.org/wiki/%D0%9A%D1%83%D1%81%D1%82%D0%B0%D1%80)
- ᱥᱟᱱᱛᱟᱲᱤ - [ᱥᱟᱱᱛᱟᱲᱤ](https://sat.wikipedia.org/wiki/%E1%B1%9C%E1%B1%AE%E1%B1%B0%E1%B1%AE)
- Sardu - [Sardu](https://sc.wikipedia.org/wiki/Anade)
- Scots - [Scots](https://sco.wikipedia.org/wiki/Deuk)
- Seeltersk - [Seeltersk](https://stq.wikipedia.org/wiki/Oante)
- Shqip - [Shqip](https://sq.wikipedia.org/wiki/Rosa)
- Sicilianu - [Sicilianu](https://scn.wikipedia.org/wiki/P%C3%A0para_(%C3%A0natra))
- සිංහල - [සිංහල](https://si.wikipedia.org/wiki/%E0%B6%AD%E0%B7%8F%E0%B6%BB%E0%B7%8F%E0%B7%80%E0%B7%8F)
- Simple English - [Simple English](https://simple.wikipedia.org/wiki/Duck)
- سنڌي - [سنڌي](https://sd.wikipedia.org/wiki/%D8%A8%D8%AF%DA%AA)
- کوردی - [کوردی](https://ckb.wikipedia.org/wiki/%D9%85%D8%B1%D8%A7%D9%88%DB%8C)
- Српски / srpski - [Српски / srpski](https://sr.wikipedia.org/wiki/%D0%9F%D0%B0%D1%82%D0%BA%D0%B0)
- Srpskohrvatski / српскохрватски - [Srpskohrvatski / српскохрватски](https://sh.wikipedia.org/wiki/Patka)
- Sunda - [Sunda](https://su.wikipedia.org/wiki/Meri)
- Svenska - [Svenska](https://sv.wikipedia.org/wiki/Egentliga_andf%C3%A5glar)
- Tagalog - [Tagalog](https://tl.wikipedia.org/wiki/Bibi)
- தமிழ் - [தமிழ்](https://ta.wikipedia.org/wiki/%E0%AE%B5%E0%AE%BE%E0%AE%A4%E0%AF%8D%E0%AE%A4%E0%AF%81)
- Taqbaylit - [Taqbaylit](https://kab.wikipedia.org/wiki/Ab%E1%B9%9Bik)
- Татарча / tatarça - [Татарча / tatarça](https://tt.wikipedia.org/wiki/%D2%AE%D1%80%D0%B4%D3%99%D0%BA%D0%BB%D3%99%D1%80)
- ไทย - [ไทย](https://th.wikipedia.org/wiki/%E0%B9%80%E0%B8%9B%E0%B9%87%E0%B8%94)
- Türkçe - [Türkçe](https://tr.wikipedia.org/wiki/%C3%96rdek)
- Українська - [Українська](https://uk.wikipedia.org/wiki/%D0%9A%D0%B0%D1%87%D0%BA%D0%B8)
- ئۇيغۇرچە / Uyghurche - [ئۇيغۇرچە / Uyghurche](https://ug.wikipedia.org/wiki/%D8%A6%DB%86%D8%B1%D8%AF%DB%95%D9%83)
- Vahcuengh - [Vahcuengh](https://za.wikipedia.org/wiki/Bit_(doenghduz))
- Tiếng Việt - [Tiếng Việt](https://vi.wikipedia.org/wiki/V%E1%BB%8Bt)
- Walon - [Walon](https://wa.wikipedia.org/wiki/Can%C3%A5rd)
- 文言 - [文言](https://zh-classical.wikipedia.org/wiki/%E9%B4%A8)
- Winaray - [Winaray](https://war.wikipedia.org/wiki/Pato)
- 吴语 - [吴语](https://wuu.wikipedia.org/wiki/%E9%B8%AD)
- 粵語 - [粵語](https://zh-yue.wikipedia.org/wiki/%E9%B4%A8)
- Žemaitėška - [Žemaitėška](https://bat-smg.wikipedia.org/wiki/P%C4%ABl%C4%97)
- 中文 - [中文](https://zh.wikipedia.org/wiki/%E9%B8%AD)
Edit links [Edit links](https://www.wikidata.org/wiki/Special:EntityPage/Q3736439#sitelinks-wikipedia)
- Article - [Article](/wiki/Duck)
- Talk - [Talk](/wiki/Talk:Duck)
English English
- Read - [Read](/wiki/Duck)
- View source - [View source](/w/index.php?title=Duck&action=edit)
- View history - [View history](/w/index.php?title=Duck&action=history)
Tools Tools
@@ -189,32 +189,32 @@ hide
Actions Actions
- Read - [Read](/wiki/Duck)
- View source - [View source](/w/index.php?title=Duck&action=edit)
- View history - [View history](/w/index.php?title=Duck&action=history)
General General
- What links here - [What links here](/wiki/Special:WhatLinksHere/Duck)
- Related changes - [Related changes](/wiki/Special:RecentChangesLinked/Duck)
- Upload file - [Upload file](/wiki/Wikipedia:File_Upload_Wizard)
- Special pages - [Special pages](/wiki/Special:SpecialPages)
- Permanent link - [Permanent link](/w/index.php?title=Duck&oldid=1246843351)
- Page information - [Page information](/w/index.php?title=Duck&action=info)
- Cite this page - [Cite this page](/w/index.php?title=Special:CiteThisPage&page=Duck&id=1246843351&wpFormIdentifier=titleform)
- Get shortened URL - [Get shortened URL](/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDuck)
- Download QR code - [Download QR code](/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDuck)
- Wikidata item - [Wikidata item](https://www.wikidata.org/wiki/Special:EntityPage/Q3736439)
Print/export Print/export
- Download as PDF - [Download as PDF](/w/index.php?title=Special:DownloadAsPdf&page=Duck&action=show-download-screen)
- Printable version - [Printable version](/w/index.php?title=Duck&printable=yes)
In other projects In other projects
- Wikimedia Commons - [Wikimedia Commons](https://commons.wikimedia.org/wiki/Category:Ducks)
- Wikiquote - [Wikiquote](https://en.wikiquote.org/wiki/Duck)
Appearance Appearance
@@ -224,13 +224,13 @@ hide
From Wikipedia, the free encyclopedia From Wikipedia, the free encyclopedia
(Redirected from Duckling) (Redirected from [Duckling](/w/index.php?title=Duckling&redirect=no) )
Common name for many species of bird Common name for many species of bird
This article is about the bird. For duck as a food, see Duck as food. For other uses, see Duck (disambiguation). This article is about the bird. For duck as a food, see [Duck as food](/wiki/Duck_as_food) . For other uses, see [Duck (disambiguation)](/wiki/Duck_(disambiguation)) .
"Duckling" redirects here. For other uses, see Duckling (disambiguation). "Duckling" redirects here. For other uses, see [Duckling (disambiguation)](/wiki/Duckling_(disambiguation)) .
<!-- image --> <!-- image -->
@@ -251,43 +251,43 @@ This article is about the bird. For duck as a food, see Duck as food. For other
| Subfamilies | Subfamilies | | Subfamilies | Subfamilies |
| See text | See text | | See text | See text |
Duck is the common name for numerous species of waterfowl in the family Anatidae. Ducks are generally smaller and shorter-necked than swans and geese, which are members of the same family. Divided among several subfamilies, they are a form taxon; they do not represent a monophyletic group (the group of all descendants of a single common ancestral species), since swans and geese are not considered ducks. Ducks are mostly aquatic birds, and may be found in both fresh water and sea water. Duck is the common name for numerous species of [waterfowl](/wiki/Waterfowl) in the [family](/wiki/Family_(biology)) [Anatidae](/wiki/Anatidae) . Ducks are generally smaller and shorter-necked than [swans](/wiki/Swan) and [geese](/wiki/Goose) , which are members of the same family. Divided among several subfamilies, they are a [form taxon](/wiki/Form_taxon) ; they do not represent a [monophyletic group](/wiki/Monophyletic_group) (the group of all descendants of a single common ancestral species), since swans and geese are not considered ducks. Ducks are mostly [aquatic birds](/wiki/Aquatic_bird) , and may be found in both fresh water and sea water.
Ducks are sometimes confused with several types of unrelated water birds with similar forms, such as loons or divers, grebes, gallinules and coots. Ducks are sometimes confused with several types of unrelated water birds with similar forms, such as [loons](/wiki/Loon) or divers, [grebes](/wiki/Grebe) , [gallinules](/wiki/Gallinule) and [coots](/wiki/Coot) .
## Etymology ## Etymology
The word duck comes from Old English dūce 'diver', a derivative of the verb *dūcan 'to duck, bend down low as if to get under something, or dive', because of the way many species in the dabbling duck group feed by upending; compare with Dutch duiken and German tauchen 'to dive'. The word duck comes from [Old English](/wiki/Old_English) dūce 'diver', a derivative of the verb * dūcan 'to duck, bend down low as if to get under something, or dive', because of the way many species in the [dabbling duck](/wiki/Dabbling_duck) group feed by upending; compare with [Dutch](/wiki/Dutch_language) duiken and [German](/wiki/German_language) tauchen 'to dive'.
Pacific black duck displaying the characteristic upending "duck" Pacific black duck displaying the characteristic upending "duck"
<!-- image --> <!-- image -->
This word replaced Old English ened /ænid 'duck', possibly to avoid confusion with other words, such as ende 'end' with similar forms. Other Germanic languages still have similar words for duck, for example, Dutch eend, German Ente and Norwegian and. The word ened /ænid was inherited from Proto-Indo-European; cf. Latin anas "duck", Lithuanian ántis 'duck', Ancient Greek νῆσσα /νῆττα (nēssa /nētta) 'duck', and Sanskrit ātí 'water bird', among others. This word replaced Old English ened / ænid 'duck', possibly to avoid confusion with other words, such as ende 'end' with similar forms. Other Germanic languages still have similar words for duck , for example, Dutch eend , German Ente and [Norwegian](/wiki/Norwegian_language) and . The word ened / ænid was inherited from [Proto-Indo-European](/wiki/Proto-Indo-European_language) ; [cf.](/wiki/Cf.) [Latin](/wiki/Latin) anas "duck", [Lithuanian](/wiki/Lithuanian_language) ántis 'duck', [Ancient Greek](/wiki/Ancient_Greek_language) νῆσσα / νῆττα ( nēssa / nētta ) 'duck', and [Sanskrit](/wiki/Sanskrit) ātí 'water bird', among others.
A duckling is a young duck in downy plumage[1] or baby duck,[2] but in the food trade a young domestic duck which has just reached adult size and bulk and its meat is still fully tender, is sometimes labelled as a duckling. A duckling is a young duck in downy plumage [[ 1 ]](#cite_note-1) or baby duck, [[ 2 ]](#cite_note-2) but in the food trade a young domestic duck which has just reached adult size and bulk and its meat is still fully tender, is sometimes labelled as a duckling.
A male is called a drake and the female is called a duck, or in ornithology a hen.[3][4] A male is called a [drake](https://en.wiktionary.org/wiki/drake) and the female is called a duck, or in [ornithology](/wiki/Ornithology) a hen. [[ 3 ]](#cite_note-3) [[ 4 ]](#cite_note-4)
Male mallard. Male mallard .
<!-- image --> <!-- image -->
Wood ducks. Wood ducks .
<!-- image --> <!-- image -->
## Taxonomy ## Taxonomy
All ducks belong to the biological order Anseriformes, a group that contains the ducks, geese and swans, as well as the screamers, and the magpie goose.[5] All except the screamers belong to the biological family Anatidae.[5] Within the family, ducks are split into a variety of subfamilies and 'tribes'. The number and composition of these subfamilies and tribes is the cause of considerable disagreement among taxonomists.[5] Some base their decisions on morphological characteristics, others on shared behaviours or genetic studies.[6][7] The number of suggested subfamilies containing ducks ranges from two to five.[8][9] The significant level of hybridisation that occurs among wild ducks complicates efforts to tease apart the relationships between various species.[9] All ducks belong to the [biological order](/wiki/Order_(biology)) [Anseriformes](/wiki/Anseriformes) , a group that contains the ducks, geese and swans, as well as the [screamers](/wiki/Screamer) , and the [magpie goose](/wiki/Magpie_goose) . [[ 5 ]](#cite_note-FOOTNOTECarboneras1992536-5) All except the screamers belong to the [biological family](/wiki/Family_(biology)) [Anatidae](/wiki/Anatidae) . [[ 5 ]](#cite_note-FOOTNOTECarboneras1992536-5) Within the family, ducks are split into a variety of subfamilies and 'tribes'. The number and composition of these subfamilies and tribes is the cause of considerable disagreement among taxonomists. [[ 5 ]](#cite_note-FOOTNOTECarboneras1992536-5) Some base their decisions on [morphological characteristics](/wiki/Morphology_(biology)) , others on shared behaviours or genetic studies. [[ 6 ]](#cite_note-FOOTNOTELivezey1986737738-6) [[ 7 ]](#cite_note-FOOTNOTEMadsenMcHughde_Kloet1988452-7) The number of suggested subfamilies containing ducks ranges from two to five. [[ 8 ]](#cite_note-FOOTNOTEDonne-GousséLaudetHänni2002353354-8) [[ 9 ]](#cite_note-FOOTNOTECarboneras1992540-9) The significant level of [hybridisation](/wiki/Hybrid_(biology)) that occurs among wild ducks complicates efforts to tease apart the relationships between various species. [[ 9 ]](#cite_note-FOOTNOTECarboneras1992540-9)
Mallard landing in approach Mallard landing in approach
<!-- image --> <!-- image -->
In most modern classifications, the so-called 'true ducks' belong to the subfamily Anatinae, which is further split into a varying number of tribes.[10] The largest of these, the Anatini, contains the 'dabbling' or 'river' ducks - named for their method of feeding primarily at the surface of fresh water.[11] The 'diving ducks', also named for their primary feeding method, make up the tribe Aythyini.[12] The 'sea ducks' of the tribe Mergini are diving ducks which specialise on fish and shellfish and spend a majority of their lives in saltwater.[13] The tribe Oxyurini contains the 'stifftails', diving ducks notable for their small size and stiff, upright tails.[14] In most modern classifications, the so-called 'true ducks' belong to the subfamily Anatinae, which is further split into a varying number of tribes. [[ 10 ]](#cite_note-FOOTNOTEElphickDunningSibley2001191-10) The largest of these, the Anatini, contains the 'dabbling' or 'river' ducks - named for their method of feeding primarily at the surface of fresh water. [[ 11 ]](#cite_note-FOOTNOTEKear2005448-11) The 'diving ducks', also named for their primary feeding method, make up the tribe Aythyini. [[ 12 ]](#cite_note-FOOTNOTEKear2005622623-12) The 'sea ducks' of the tribe Mergini are diving ducks which specialise on fish and shellfish and spend a majority of their lives in saltwater. [[ 13 ]](#cite_note-FOOTNOTEKear2005686-13) The tribe Oxyurini contains the 'stifftails', diving ducks notable for their small size and stiff, upright tails. [[ 14 ]](#cite_note-FOOTNOTEElphickDunningSibley2001193-14)
A number of other species called ducks are not considered to be 'true ducks', and are typically placed in other subfamilies or tribes. The whistling ducks are assigned either to a tribe (Dendrocygnini) in the subfamily Anatinae or the subfamily Anserinae,[15] or to their own subfamily (Dendrocygninae) or family (Dendrocyganidae).[9][16] The freckled duck of Australia is either the sole member of the tribe Stictonettini in the subfamily Anserinae,[15] or in its own family, the Stictonettinae.[9] The shelducks make up the tribe Tadornini in the family Anserinae in some classifications,[15] and their own subfamily, Tadorninae, in others,[17] while the steamer ducks are either placed in the family Anserinae in the tribe Tachyerini[15] or lumped with the shelducks in the tribe Tadorini.[9] The perching ducks make up in the tribe Cairinini in the subfamily Anserinae in some classifications, while that tribe is eliminated in other classifications and its members assigned to the tribe Anatini.[9] The torrent duck is generally included in the subfamily Anserinae in the monotypic tribe Merganettini,[15] but is sometimes included in the tribe Tadornini.[18] The pink-eared duck is sometimes included as a true duck either in the tribe Anatini[15] or the tribe Malacorhynchini,[19] and other times is included with the shelducks in the tribe Tadornini.[15] A number of other species called ducks are not considered to be 'true ducks', and are typically placed in other subfamilies or tribes. The [whistling ducks](/wiki/Whistling_duck) are assigned either to a tribe (Dendrocygnini) in the subfamily Anatinae or the subfamily Anserinae, [[ 15 ]](#cite_note-FOOTNOTECarboneras1992537-15) or to their own subfamily (Dendrocygninae) or family (Dendrocyganidae). [[ 9 ]](#cite_note-FOOTNOTECarboneras1992540-9) [[ 16 ]](#cite_note-FOOTNOTEAmerican_Ornithologists'_Union1998xix-16) The [freckled duck](/wiki/Freckled_duck) of Australia is either the sole member of the tribe Stictonettini in the subfamily Anserinae, [[ 15 ]](#cite_note-FOOTNOTECarboneras1992537-15) or in its own family, the Stictonettinae. [[ 9 ]](#cite_note-FOOTNOTECarboneras1992540-9) The [shelducks](/wiki/Shelduck) make up the tribe Tadornini in the family Anserinae in some classifications, [[ 15 ]](#cite_note-FOOTNOTECarboneras1992537-15) and their own subfamily, Tadorninae, in others, [[ 17 ]](#cite_note-FOOTNOTEAmerican_Ornithologists'_Union1998-17) while the [steamer ducks](/wiki/Steamer_duck) are either placed in the family Anserinae in the tribe Tachyerini [[ 15 ]](#cite_note-FOOTNOTECarboneras1992537-15) or lumped with the shelducks in the tribe Tadorini. [[ 9 ]](#cite_note-FOOTNOTECarboneras1992540-9) The [perching ducks](/wiki/Perching_duck) make up in the tribe Cairinini in the subfamily Anserinae in some classifications, while that tribe is eliminated in other classifications and its members assigned to the tribe Anatini. [[ 9 ]](#cite_note-FOOTNOTECarboneras1992540-9) The [torrent duck](/wiki/Torrent_duck) is generally included in the subfamily Anserinae in the monotypic tribe Merganettini, [[ 15 ]](#cite_note-FOOTNOTECarboneras1992537-15) but is sometimes included in the tribe Tadornini. [[ 18 ]](#cite_note-FOOTNOTECarboneras1992538-18) The [pink-eared duck](/wiki/Pink-eared_duck) is sometimes included as a true duck either in the tribe Anatini [[ 15 ]](#cite_note-FOOTNOTECarboneras1992537-15) or the tribe Malacorhynchini, [[ 19 ]](#cite_note-FOOTNOTEChristidisBoles200862-19) and other times is included with the shelducks in the tribe Tadornini. [[ 15 ]](#cite_note-FOOTNOTECarboneras1992537-15)
## Morphology ## Morphology
@@ -295,25 +295,25 @@ Male Mandarin duck
<!-- image --> <!-- image -->
The overall body plan of ducks is elongated and broad, and they are also relatively long-necked, albeit not as long-necked as the geese and swans. The body shape of diving ducks varies somewhat from this in being more rounded. The bill is usually broad and contains serrated pectens, which are particularly well defined in the filter-feeding species. In the case of some fishing species the bill is long and strongly serrated. The scaled legs are strong and well developed, and generally set far back on the body, more so in the highly aquatic species. The wings are very strong and are generally short and pointed, and the flight of ducks requires fast continuous strokes, requiring in turn strong wing muscles. Three species of steamer duck are almost flightless, however. Many species of duck are temporarily flightless while moulting; they seek out protected habitat with good food supplies during this period. This moult typically precedes migration. The overall [body plan](/wiki/Body_plan) of ducks is elongated and broad, and they are also relatively long-necked, albeit not as long-necked as the geese and swans. The body shape of diving ducks varies somewhat from this in being more rounded. The [bill](/wiki/Beak) is usually broad and contains serrated [pectens](/wiki/Pecten_(biology)) , which are particularly well defined in the filter-feeding species. In the case of some fishing species the bill is long and strongly serrated. The scaled legs are strong and well developed, and generally set far back on the body, more so in the highly aquatic species. The wings are very strong and are generally short and pointed, and the [flight](/wiki/Bird_flight) of ducks requires fast continuous strokes, requiring in turn strong wing muscles. Three species of [steamer duck](/wiki/Steamer_duck) are almost flightless, however. Many species of duck are temporarily flightless while [moulting](/wiki/Moult) ; they seek out protected habitat with good food supplies during this period. This moult typically precedes [migration](/wiki/Bird_migration) .
The drakes of northern species often have extravagant plumage, but that is moulted in summer to give a more female-like appearance, the "eclipse" plumage. Southern resident species typically show less sexual dimorphism, although there are exceptions such as the paradise shelduck of New Zealand, which is both strikingly sexually dimorphic and in which the female's plumage is brighter than that of the male. The plumage of juvenile birds generally resembles that of the female. Female ducks have evolved to have a corkscrew shaped vagina to prevent rape. The drakes of northern species often have extravagant [plumage](/wiki/Plumage) , but that is [moulted](/wiki/Moult) in summer to give a more female-like appearance, the "eclipse" plumage. Southern resident species typically show less [sexual dimorphism](/wiki/Sexual_dimorphism) , although there are exceptions such as the [paradise shelduck](/wiki/Paradise_shelduck) of [New Zealand](/wiki/New_Zealand) , which is both strikingly sexually dimorphic and in which the female's plumage is brighter than that of the male. The plumage of juvenile birds generally resembles that of the female. Female ducks have evolved to have a corkscrew shaped vagina to prevent rape.
## Distribution and habitat ## Distribution and habitat
See also: List of Anseriformes by population See also: [List of Anseriformes by population](/wiki/List_of_Anseriformes_by_population)
Flying steamer ducks in Ushuaia, Argentina Flying steamer ducks in Ushuaia , Argentina
<!-- image --> <!-- image -->
Ducks have a cosmopolitan distribution, and are found on every continent except Antarctica.[5] Several species manage to live on subantarctic islands, including South Georgia and the Auckland Islands.[20] Ducks have reached a number of isolated oceanic islands, including the Hawaiian Islands, Micronesia and the Galápagos Islands, where they are often vagrants and less often residents.[21][22] A handful are endemic to such far-flung islands.[21] Ducks have a [cosmopolitan distribution](/wiki/Cosmopolitan_distribution) , and are found on every continent except Antarctica. [[ 5 ]](#cite_note-FOOTNOTECarboneras1992536-5) Several species manage to live on subantarctic islands, including [South Georgia](/wiki/South_Georgia_and_the_South_Sandwich_Islands) and the [Auckland Islands](/wiki/Auckland_Islands) . [[ 20 ]](#cite_note-FOOTNOTEShirihai2008239,_245-20) Ducks have reached a number of isolated oceanic islands, including the [Hawaiian Islands](/wiki/Hawaiian_Islands) , [Micronesia](/wiki/Micronesia) and the [Galápagos Islands](/wiki/Gal%C3%A1pagos_Islands) , where they are often [vagrants](/wiki/Glossary_of_bird_terms#vagrants) and less often [residents](/wiki/Glossary_of_bird_terms#residents) . [[ 21 ]](#cite_note-FOOTNOTEPrattBrunerBerrett198798107-21) [[ 22 ]](#cite_note-FOOTNOTEFitterFitterHosking2000523-22) A handful are [endemic](/wiki/Endemic) to such far-flung islands. [[ 21 ]](#cite_note-FOOTNOTEPrattBrunerBerrett198798107-21)
Female mallard in Cornwall, England Female mallard in Cornwall , England
<!-- image --> <!-- image -->
Some duck species, mainly those breeding in the temperate and Arctic Northern Hemisphere, are migratory; those in the tropics are generally not. Some ducks, particularly in Australia where rainfall is erratic, are nomadic, seeking out the temporary lakes and pools that form after localised heavy rain.[23] Some duck species, mainly those breeding in the temperate and Arctic Northern Hemisphere, are migratory; those in the tropics are generally not. Some ducks, particularly in Australia where rainfall is erratic, are nomadic, seeking out the temporary lakes and pools that form after localised heavy rain. [[ 23 ]](#cite_note-23)
## Behaviour ## Behaviour
@@ -323,17 +323,17 @@ Pecten along the bill
<!-- image --> <!-- image -->
Ducks eat food sources such as grasses, aquatic plants, fish, insects, small amphibians, worms, and small molluscs. Ducks eat food sources such as [grasses](/wiki/Poaceae) , aquatic plants, fish, insects, small amphibians, worms, and small [molluscs](/wiki/Mollusc) .
Dabbling ducks feed on the surface of water or on land, or as deep as they can reach by up-ending without completely submerging.[24] Along the edge of the bill, there is a comb-like structure called a pecten. This strains the water squirting from the side of the bill and traps any food. The pecten is also used to preen feathers and to hold slippery food items. [Dabbling ducks](/wiki/Dabbling_duck) feed on the surface of water or on land, or as deep as they can reach by up-ending without completely submerging. [[ 24 ]](#cite_note-24) Along the edge of the bill, there is a comb-like structure called a [pecten](/wiki/Pecten_(biology)) . This strains the water squirting from the side of the bill and traps any food. The pecten is also used to preen feathers and to hold slippery food items.
Diving ducks and sea ducks forage deep underwater. To be able to submerge more easily, the diving ducks are heavier than dabbling ducks, and therefore have more difficulty taking off to fly. [Diving ducks](/wiki/Diving_duck) and [sea ducks](/wiki/Sea_duck) forage deep underwater. To be able to submerge more easily, the diving ducks are heavier than dabbling ducks, and therefore have more difficulty taking off to fly.
A few specialized species such as the mergansers are adapted to catch and swallow large fish. A few specialized species such as the [mergansers](/wiki/Merganser) are adapted to catch and swallow large fish.
The others have the characteristic wide flat bill adapted to dredging-type jobs such as pulling up waterweed, pulling worms and small molluscs out of mud, searching for insect larvae, and bulk jobs such as dredging out, holding, turning head first, and swallowing a squirming frog. To avoid injury when digging into sediment it has no cere, but the nostrils come out through hard horn. The others have the characteristic wide flat bill adapted to [dredging](/wiki/Dredging) -type jobs such as pulling up waterweed, pulling worms and small molluscs out of mud, searching for insect larvae, and bulk jobs such as dredging out, holding, turning head first, and swallowing a squirming frog. To avoid injury when digging into sediment it has no [cere](/wiki/Cere) , but the nostrils come out through hard horn.
The Guardian published an article advising that ducks should not be fed with bread because it damages the health of the ducks and pollutes waterways.[25] [The Guardian](/wiki/The_Guardian) published an article advising that ducks should not be fed with bread because it [damages the health of the ducks](/wiki/Angel_wing) and pollutes waterways. [[ 25 ]](#cite_note-25)
### Breeding ### Breeding
@@ -341,13 +341,13 @@ A Muscovy duckling
<!-- image --> <!-- image -->
Ducks generally only have one partner at a time, although the partnership usually only lasts one year.[26] Larger species and the more sedentary species (like fast-river specialists) tend to have pair-bonds that last numerous years.[27] Most duck species breed once a year, choosing to do so in favourable conditions (spring/summer or wet seasons). Ducks also tend to make a nest before breeding, and, after hatching, lead their ducklings to water. Mother ducks are very caring and protective of their young, but may abandon some of their ducklings if they are physically stuck in an area they cannot get out of (such as nesting in an enclosed courtyard) or are not prospering due to genetic defects or sickness brought about by hypothermia, starvation, or disease. Ducklings can also be orphaned by inconsistent late hatching where a few eggs hatch after the mother has abandoned the nest and led her ducklings to water.[28] Ducks generally [only have one partner at a time](/wiki/Monogamy_in_animals) , although the partnership usually only lasts one year. [[ 26 ]](#cite_note-26) Larger species and the more sedentary species (like fast-river specialists) tend to have pair-bonds that last numerous years. [[ 27 ]](#cite_note-27) Most duck species breed once a year, choosing to do so in favourable conditions ( [spring](/wiki/Spring_(season)) /summer or wet seasons). Ducks also tend to make a [nest](/wiki/Bird_nest) before breeding, and, after hatching, lead their ducklings to water. Mother ducks are very caring and protective of their young, but may abandon some of their ducklings if they are physically stuck in an area they cannot get out of (such as nesting in an enclosed [courtyard](/wiki/Courtyard) ) or are not prospering due to genetic defects or sickness brought about by hypothermia, starvation, or disease. Ducklings can also be orphaned by inconsistent late hatching where a few eggs hatch after the mother has abandoned the nest and led her ducklings to water. [[ 28 ]](#cite_note-28)
### Communication ### Communication
Female mallard ducks (as well as several other species in the genus Anas, such as the American and Pacific black ducks, spot-billed duck, northern pintail and common teal) make the classic "quack" sound while males make a similar but raspier sound that is sometimes written as "breeeeze",[29][self-published source?] but, despite widespread misconceptions, most species of duck do not "quack".[30] In general, ducks make a range of calls, including whistles, cooing, yodels and grunts. For example, the scaup - which are diving ducks - make a noise like "scaup" (hence their name). Calls may be loud displaying calls or quieter contact calls. Female [mallard](/wiki/Mallard) ducks (as well as several other species in the genus Anas , such as the [American](/wiki/American_black_duck) and [Pacific black ducks](/wiki/Pacific_black_duck) , [spot-billed duck](/wiki/Spot-billed_duck) , [northern pintail](/wiki/Northern_pintail) and [common teal](/wiki/Common_teal) ) make the classic "quack" sound while males make a similar but raspier sound that is sometimes written as "breeeeze", [[ 29 ]](#cite_note-29) [ [self-published source?](/wiki/Wikipedia:Verifiability#Self-published_sources) ] but, despite widespread misconceptions, most species of duck do not "quack". [[ 30 ]](#cite_note-30) In general, ducks make a range of [calls](/wiki/Bird_vocalisation) , including whistles, cooing, yodels and grunts. For example, the [scaup](/wiki/Scaup) - which are [diving ducks](/wiki/Diving_duck) - make a noise like "scaup" (hence their name). Calls may be loud displaying calls or quieter contact calls.
A common urban legend claims that duck quacks do not echo; however, this has been proven to be false. This myth was first debunked by the Acoustics Research Centre at the University of Salford in 2003 as part of the British Association's Festival of Science.[31] It was also debunked in one of the earlier episodes of the popular Discovery Channel television show MythBusters.[32] A common [urban legend](/wiki/Urban_legend) claims that duck quacks do not echo; however, this has been proven to be false. This myth was first debunked by the Acoustics Research Centre at the [University of Salford](/wiki/University_of_Salford) in 2003 as part of the [British Association](/wiki/British_Association) 's Festival of Science. [[ 31 ]](#cite_note-31) It was also debunked in [one of the earlier episodes](/wiki/MythBusters_(2003_season)#Does_a_Duck's_Quack_Echo?) of the popular Discovery Channel television show [MythBusters](/wiki/MythBusters) . [[ 32 ]](#cite_note-32)
### Predators ### Predators
@@ -355,159 +355,161 @@ Ringed teal
<!-- image --> <!-- image -->
Ducks have many predators. Ducklings are particularly vulnerable, since their inability to fly makes them easy prey not only for predatory birds but also for large fish like pike, crocodilians, predatory testudines such as the alligator snapping turtle, and other aquatic hunters, including fish-eating birds such as herons. Ducks' nests are raided by land-based predators, and brooding females may be caught unaware on the nest by mammals, such as foxes, or large birds, such as hawks or owls. Ducks have many predators. Ducklings are particularly vulnerable, since their inability to fly makes them easy prey not only for predatory birds but also for large fish like [pike](/wiki/Esox) , [crocodilians](/wiki/Crocodilia) , predatory [testudines](/wiki/Testudines) such as the [alligator snapping turtle](/wiki/Alligator_snapping_turtle) , and other aquatic hunters, including fish-eating birds such as [herons](/wiki/Heron) . Ducks' nests are raided by land-based predators, and brooding females may be caught unaware on the nest by mammals, such as [foxes](/wiki/Fox) , or large birds, such as [hawks](/wiki/Hawk) or [owls](/wiki/Owl) .
Adult ducks are fast fliers, but may be caught on the water by large aquatic predators including big fish such as the North American muskie and the European pike. In flight, ducks are safe from all but a few predators such as humans and the peregrine falcon, which uses its speed and strength to catch ducks. Adult ducks are fast fliers, but may be caught on the water by large aquatic predators including big fish such as the North American [muskie](/wiki/Muskellunge) and the European [pike](/wiki/Esox) . In flight, ducks are safe from all but a few predators such as humans and the [peregrine falcon](/wiki/Peregrine_falcon) , which uses its speed and strength to catch ducks.
## Relationship with humans ## Relationship with humans
### Hunting ### Hunting
Main article: Waterfowl hunting Main article: [Waterfowl hunting](/wiki/Waterfowl_hunting)
Humans have hunted ducks since prehistoric times. Excavations of middens in California dating to 7800 - 6400 BP have turned up bones of ducks, including at least one now-extinct flightless species.[33] Ducks were captured in "significant numbers" by Holocene inhabitants of the lower Ohio River valley, suggesting they took advantage of the seasonal bounty provided by migrating waterfowl.[34] Neolithic hunters in locations as far apart as the Caribbean,[35] Scandinavia,[36] Egypt,[37] Switzerland,[38] and China relied on ducks as a source of protein for some or all of the year.[39] Archeological evidence shows that Māori people in New Zealand hunted the flightless Finsch's duck, possibly to extinction, though rat predation may also have contributed to its fate.[40] A similar end awaited the Chatham duck, a species with reduced flying capabilities which went extinct shortly after its island was colonised by Polynesian settlers.[41] It is probable that duck eggs were gathered by Neolithic hunter-gathers as well, though hard evidence of this is uncommon.[35][42] Humans have hunted ducks since prehistoric times. Excavations of [middens](/wiki/Midden) in California dating to 7800 - 6400 [BP](/wiki/Before_present) have turned up bones of ducks, including at least one now-extinct flightless species. [[ 33 ]](#cite_note-FOOTNOTEErlandson1994171-33) Ducks were captured in "significant numbers" by [Holocene](/wiki/Holocene) inhabitants of the lower [Ohio River](/wiki/Ohio_River) valley, suggesting they took advantage of the seasonal bounty provided by migrating waterfowl. [[ 34 ]](#cite_note-FOOTNOTEJeffries2008168,_243-34) Neolithic hunters in locations as far apart as the Caribbean, [[ 35 ]](#cite_note-FOOTNOTESued-Badillo200365-35) Scandinavia, [[ 36 ]](#cite_note-FOOTNOTEThorpe199668-36) Egypt, [[ 37 ]](#cite_note-FOOTNOTEMaisels199942-37) Switzerland, [[ 38 ]](#cite_note-FOOTNOTERau1876133-38) and China relied on ducks as a source of protein for some or all of the year. [[ 39 ]](#cite_note-FOOTNOTEHigman201223-39) Archeological evidence shows that [Māori people](/wiki/M%C4%81ori_people) in New Zealand hunted the flightless [Finsch's duck](/wiki/Finsch%27s_duck) , possibly to extinction, though rat predation may also have contributed to its fate. [[ 40 ]](#cite_note-FOOTNOTEHume201253-40) A similar end awaited the [Chatham duck](/wiki/Chatham_duck) , a species with reduced flying capabilities which went extinct shortly after its island was colonised by Polynesian settlers. [[ 41 ]](#cite_note-FOOTNOTEHume201252-41) It is probable that duck eggs were gathered by Neolithic hunter-gathers as well, though hard evidence of this is uncommon. [[ 35 ]](#cite_note-FOOTNOTESued-Badillo200365-35) [[ 42 ]](#cite_note-FOOTNOTEFieldhouse2002167-42)
In many areas, wild ducks (including ducks farmed and released into the wild) are hunted for food or sport,[43] by shooting, or by being trapped using duck decoys. Because an idle floating duck or a duck squatting on land cannot react to fly or move quickly, "a sitting duck" has come to mean "an easy target". These ducks may be contaminated by pollutants such as PCBs.[44] In many areas, wild ducks (including ducks farmed and released into the wild) are hunted for food or sport, [[ 43 ]](#cite_note-43) by shooting, or by being trapped using [duck decoys](/wiki/Duck_decoy_(structure)) . Because an idle floating duck or a duck squatting on land cannot react to fly or move quickly, "a sitting duck" has come to mean "an easy target". These ducks may be [contaminated by pollutants](/wiki/Duck_(food)#Pollution) such as [PCBs](/wiki/Polychlorinated_biphenyl) . [[ 44 ]](#cite_note-44)
### Domestication ### Domestication
Main article: Domestic duck Main article: [Domestic duck](/wiki/Domestic_duck)
Indian Runner ducks, a common breed of domestic ducks Indian Runner ducks , a common breed of domestic ducks
<!-- image --> <!-- image -->
Ducks have many economic uses, being farmed for their meat, eggs, and feathers (particularly their down). Approximately 3 billion ducks are slaughtered each year for meat worldwide.[45] They are also kept and bred by aviculturists and often displayed in zoos. Almost all the varieties of domestic ducks are descended from the mallard (Anas platyrhynchos), apart from the Muscovy duck (Cairina moschata).[46][47] The Call duck is another example of a domestic duck breed. Its name comes from its original use established by hunters, as a decoy to attract wild mallards from the sky, into traps set for them on the ground. The call duck is the world's smallest domestic duck breed, as it weighs less than 1 kg (2.2 lb).[48] Ducks have many economic uses, being farmed for their meat, eggs, and feathers (particularly their [down](/wiki/Down_feather) ). Approximately 3 billion ducks are slaughtered each year for meat worldwide. [[ 45 ]](#cite_note-45) They are also kept and bred by aviculturists and often displayed in zoos. Almost all the varieties of domestic ducks are descended from the [mallard](/wiki/Mallard) ( Anas platyrhynchos ), apart from the [Muscovy duck](/wiki/Muscovy_duck) ( Cairina moschata ). [[ 46 ]](#cite_note-46) [[ 47 ]](#cite_note-47) The [Call duck](/wiki/Call_duck) is another example of a domestic duck breed. Its name comes from its original use established by hunters, as a decoy to attract wild mallards from the sky, into traps set for them on the ground. The call duck is the world's smallest domestic duck breed, as it weighs less than 1 kg (2.2 lb). [[ 48 ]](#cite_note-48)
### Heraldry ### Heraldry
Three black-colored ducks in the coat of arms of Maaninka[49] Three black-colored ducks in the coat of arms of Maaninka [ 49 ]
<!-- image --> <!-- image -->
Ducks appear on several coats of arms, including the coat of arms of Lubāna (Latvia)[50] and the coat of arms of Föglö (Åland).[51] Ducks appear on several [coats of arms](/wiki/Coats_of_arms) , including the coat of arms of [Lubāna](/wiki/Lub%C4%81na) ( [Latvia](/wiki/Latvia) ) [[ 50 ]](#cite_note-50) and the coat of arms of [Föglö](/wiki/F%C3%B6gl%C3%B6) ( [Åland](/wiki/%C3%85land) ). [[ 51 ]](#cite_note-51)
### Cultural references ### Cultural references
In 2002, psychologist Richard Wiseman and colleagues at the University of Hertfordshire, UK, finished a year-long LaughLab experiment, concluding that of all animals, ducks attract the most humor and silliness; he said, "If you're going to tell a joke involving an animal, make it a duck."[52] The word "duck" may have become an inherently funny word in many languages, possibly because ducks are seen as silly in their looks or behavior. Of the many ducks in fiction, many are cartoon characters, such as Walt Disney's Donald Duck, and Warner Bros.' Daffy Duck. Howard the Duck started as a comic book character in 1973[53][54] and was made into a movie in 1986. In 2002, psychologist [Richard Wiseman](/wiki/Richard_Wiseman) and colleagues at the [University of Hertfordshire](/wiki/University_of_Hertfordshire) , [UK](/wiki/UK) , finished a year-long [LaughLab](/wiki/LaughLab) experiment, concluding that of all animals, ducks attract the most humor and silliness; he said, "If you're going to tell a joke involving an animal, make it a duck." [[ 52 ]](#cite_note-52) The word "duck" may have become an [inherently funny word](/wiki/Inherently_funny_word) in many languages, possibly because ducks are seen as silly in their looks or behavior. Of the many [ducks in fiction](/wiki/List_of_fictional_ducks) , many are cartoon characters, such as [Walt Disney](/wiki/The_Walt_Disney_Company) 's [Donald Duck](/wiki/Donald_Duck) , and [Warner Bros.](/wiki/Warner_Bros.) ' [Daffy Duck](/wiki/Daffy_Duck) . [Howard the Duck](/wiki/Howard_the_Duck) started as a comic book character in 1973 [[ 53 ]](#cite_note-53) [[ 54 ]](#cite_note-54) and was made into a [movie](/wiki/Howard_the_Duck_(film)) in 1986.
The 1992 Disney film The Mighty Ducks, starring Emilio Estevez, chose the duck as the mascot for the fictional youth hockey team who are protagonists of the movie, based on the duck being described as a fierce fighter. This led to the duck becoming the nickname and mascot for the eventual National Hockey League professional team of the Anaheim Ducks, who were founded with the name the Mighty Ducks of Anaheim.[citation needed] The duck is also the nickname of the University of Oregon sports teams as well as the Long Island Ducks minor league baseball team.[55] The 1992 Disney film [The Mighty Ducks](/wiki/The_Mighty_Ducks_(film)) , starring [Emilio Estevez](/wiki/Emilio_Estevez) , chose the duck as the mascot for the fictional youth hockey team who are protagonists of the movie, based on the duck being described as a fierce fighter. This led to the duck becoming the nickname and mascot for the eventual [National Hockey League](/wiki/National_Hockey_League) professional team of the [Anaheim Ducks](/wiki/Anaheim_Ducks) , who were founded with the name the Mighty Ducks of Anaheim. [ [citation needed](/wiki/Wikipedia:Citation_needed) ] The duck is also the nickname of the [University of Oregon](/wiki/University_of_Oregon) sports teams as well as the [Long Island Ducks](/wiki/Long_Island_Ducks) minor league [baseball](/wiki/Baseball) team. [[ 55 ]](#cite_note-55)
## See also ## See also
- Birds portal - [Birds portal](/wiki/Portal:Birds)
<!-- image --> <!-- image -->
- Domestic duck - [Domestic duck](/wiki/Domestic_duck)
- Duck as food - [Duck as food](/wiki/Duck_as_food)
- Duck test - [Duck test](/wiki/Duck_test)
- Duck breeds - [Duck breeds](/wiki/List_of_duck_breeds)
- Fictional ducks - [Fictional ducks](/wiki/List_of_fictional_ducks)
- Rubber duck - [Rubber duck](/wiki/Rubber_duck)
## Notes ## Notes
### Citations ### Citations
1. ^ "Duckling". The American Heritage Dictionary of the English Language, Fourth Edition. Houghton Mifflin Company. 2006. Retrieved 2015-05-22. 1. [^](#cite_ref-1) ["Duckling"](http://dictionary.reference.com/browse/duckling) . The American Heritage Dictionary of the English Language, Fourth Edition . Houghton Mifflin Company. 2006 . Retrieved 2015-05-22 .
2. ^ "Duckling". Kernerman English Multilingual Dictionary (Beta Version). K. Dictionaries Ltd. 2000-2006. Retrieved 2015-05-22. 2. [^](#cite_ref-2) ["Duckling"](http://dictionary.reference.com/browse/duckling) . Kernerman English Multilingual Dictionary (Beta Version) . K. Dictionaries Ltd. 2000-2006 . Retrieved 2015-05-22 .
3. ^ Dohner, Janet Vorwald (2001). The Encyclopedia of Historic and Endangered Livestock and Poultry Breeds. Yale University Press. ISBN 978-0300138139. 3. [^](#cite_ref-3) Dohner, Janet Vorwald (2001). [The Encyclopedia of Historic and Endangered Livestock and Poultry Breeds](https://books.google.com/books?id=WJCTL_mC5w4C&q=male+duck+is+called+a+drake+and+the+female+is+called+a+duck&pg=PA457) . Yale University Press. [ISBN](/wiki/ISBN_(identifier)) [978-0300138139](/wiki/Special:BookSources/978-0300138139) .
4. ^ Visca, Curt; Visca, Kelley (2003). How to Draw Cartoon Birds. The Rosen Publishing Group. ISBN 9780823961566. 4. [^](#cite_ref-4) Visca, Curt; Visca, Kelley (2003). [How to Draw Cartoon Birds](https://books.google.com/books?id=VqSquCLNrZcC&q=male+duck+is+called+a+drake+and+the+female+is+called+a+duck+%28or+hen%29&pg=PA16) . The Rosen Publishing Group. [ISBN](/wiki/ISBN_(identifier)) [9780823961566](/wiki/Special:BookSources/9780823961566) .
5. ^ a b c d Carboneras 1992, p. 536. 5. ^ [a](#cite_ref-FOOTNOTECarboneras1992536_5-0) [b](#cite_ref-FOOTNOTECarboneras1992536_5-1) [c](#cite_ref-FOOTNOTECarboneras1992536_5-2) [d](#cite_ref-FOOTNOTECarboneras1992536_5-3) [Carboneras 1992](#CITEREFCarboneras1992) , p. 536.
6. ^ Livezey 1986, pp. 737-738. 6. [^](#cite_ref-FOOTNOTELivezey1986737738_6-0) [Livezey 1986](#CITEREFLivezey1986) , pp. 737-738.
7. ^ Madsen, McHugh &amp; de Kloet 1988, p. 452. 7. [^](#cite_ref-FOOTNOTEMadsenMcHughde_Kloet1988452_7-0) [Madsen, McHugh &amp; de Kloet 1988](#CITEREFMadsenMcHughde_Kloet1988) , p. 452.
8. ^ Donne-Goussé, Laudet &amp; Hänni 2002, pp. 353-354. 8. [^](#cite_ref-FOOTNOTEDonne-GousséLaudetHänni2002353354_8-0) [Donne-Goussé, Laudet &amp; Hänni 2002](#CITEREFDonne-GousséLaudetHänni2002) , pp. 353-354.
9. ^ a b c d e f Carboneras 1992, p. 540. 9. ^ [a](#cite_ref-FOOTNOTECarboneras1992540_9-0) [b](#cite_ref-FOOTNOTECarboneras1992540_9-1) [c](#cite_ref-FOOTNOTECarboneras1992540_9-2) [d](#cite_ref-FOOTNOTECarboneras1992540_9-3) [e](#cite_ref-FOOTNOTECarboneras1992540_9-4) [f](#cite_ref-FOOTNOTECarboneras1992540_9-5) [Carboneras 1992](#CITEREFCarboneras1992) , p. 540.
10. ^ Elphick, Dunning &amp; Sibley 2001, p. 191. 10. [^](#cite_ref-FOOTNOTEElphickDunningSibley2001191_10-0) [Elphick, Dunning &amp; Sibley 2001](#CITEREFElphickDunningSibley2001) , p. 191.
11. ^ Kear 2005, p. 448. 11. [^](#cite_ref-FOOTNOTEKear2005448_11-0) [Kear 2005](#CITEREFKear2005) , p. 448.
12. ^ Kear 2005, p. 622-623. 12. [^](#cite_ref-FOOTNOTEKear2005622623_12-0) [Kear 2005](#CITEREFKear2005) , p. 622-623.
13. ^ Kear 2005, p. 686. 13. [^](#cite_ref-FOOTNOTEKear2005686_13-0) [Kear 2005](#CITEREFKear2005) , p. 686.
14. ^ Elphick, Dunning &amp; Sibley 2001, p. 193. 14. [^](#cite_ref-FOOTNOTEElphickDunningSibley2001193_14-0) [Elphick, Dunning &amp; Sibley 2001](#CITEREFElphickDunningSibley2001) , p. 193.
15. ^ a b c d e f g Carboneras 1992, p. 537. 15. ^ [a](#cite_ref-FOOTNOTECarboneras1992537_15-0) [b](#cite_ref-FOOTNOTECarboneras1992537_15-1) [c](#cite_ref-FOOTNOTECarboneras1992537_15-2) [d](#cite_ref-FOOTNOTECarboneras1992537_15-3) [e](#cite_ref-FOOTNOTECarboneras1992537_15-4) [f](#cite_ref-FOOTNOTECarboneras1992537_15-5) [g](#cite_ref-FOOTNOTECarboneras1992537_15-6) [Carboneras 1992](#CITEREFCarboneras1992) , p. 537.
16. ^ American Ornithologists' Union 1998, p. xix. 16. [^](#cite_ref-FOOTNOTEAmerican_Ornithologists'_Union1998xix_16-0) [American Ornithologists' Union 1998](#CITEREFAmerican_Ornithologists'_Union1998) , p. xix.
17. ^ American Ornithologists' Union 1998. 17. [^](#cite_ref-FOOTNOTEAmerican_Ornithologists'_Union1998_17-0) [American Ornithologists' Union 1998](#CITEREFAmerican_Ornithologists'_Union1998) .
18. ^ Carboneras 1992, p. 538. 18. [^](#cite_ref-FOOTNOTECarboneras1992538_18-0) [Carboneras 1992](#CITEREFCarboneras1992) , p. 538.
19. ^ Christidis &amp; Boles 2008, p. 62. 19. [^](#cite_ref-FOOTNOTEChristidisBoles200862_19-0) [Christidis &amp; Boles 2008](#CITEREFChristidisBoles2008) , p. 62.
20. ^ Shirihai 2008, pp. 239, 245. 20. [^](#cite_ref-FOOTNOTEShirihai2008239,_245_20-0) [Shirihai 2008](#CITEREFShirihai2008) , pp. 239, 245.
21. ^ a b Pratt, Bruner &amp; Berrett 1987, pp. 98-107. 21. ^ [a](#cite_ref-FOOTNOTEPrattBrunerBerrett198798107_21-0) [b](#cite_ref-FOOTNOTEPrattBrunerBerrett198798107_21-1) [Pratt, Bruner &amp; Berrett 1987](#CITEREFPrattBrunerBerrett1987) , pp. 98-107.
22. ^ Fitter, Fitter &amp; Hosking 2000, pp. 52-3. 22. [^](#cite_ref-FOOTNOTEFitterFitterHosking2000523_22-0) [Fitter, Fitter &amp; Hosking 2000](#CITEREFFitterFitterHosking2000) , pp. 52-3.
23. ^ "Pacific Black Duck". www.wiresnr.org. Retrieved 2018-04-27. 23. [^](#cite_ref-23) ["Pacific Black Duck"](http://www.wiresnr.org/pacificblackduck.html) . www.wiresnr.org . Retrieved 2018-04-27 .
24. ^ Ogden, Evans. "Dabbling Ducks". CWE. Retrieved 2006-11-02. 24. [^](#cite_ref-24) Ogden, Evans. ["Dabbling Ducks"](https://www.sfu.ca/biology/wildberg/species/dabbducks.html) . CWE . Retrieved 2006-11-02 .
25. ^ Karl Mathiesen (16 March 2015). "Don't feed the ducks bread, say conservationists". The Guardian. Retrieved 13 November 2016. 25. [^](#cite_ref-25) Karl Mathiesen (16 March 2015). ["Don't feed the ducks bread, say conservationists"](https://www.theguardian.com/environment/2015/mar/16/dont-feed-the-ducks-bread-say-conservationists) . The Guardian . Retrieved 13 November 2016 .
26. ^ Rohwer, Frank C.; Anderson, Michael G. (1988). "Female-Biased Philopatry, Monogamy, and the Timing of Pair Formation in Migratory Waterfowl". Current Ornithology. pp. 187-221. doi:10.1007/978-1-4615-6787-5\_4. ISBN 978-1-4615-6789-9. 26. [^](#cite_ref-26) Rohwer, Frank C.; Anderson, Michael G. (1988). "Female-Biased Philopatry, Monogamy, and the Timing of Pair Formation in Migratory Waterfowl". Current Ornithology . pp. 187-221. [doi](/wiki/Doi_(identifier)) : [10.1007/978-1-4615-6787-5\_4](https://doi.org/10.1007%2F978-1-4615-6787-5_4) . [ISBN](/wiki/ISBN_(identifier)) [978-1-4615-6789-9](/wiki/Special:BookSources/978-1-4615-6789-9) .
27. ^ Smith, Cyndi M.; Cooke, Fred; Robertson, Gregory J.; Goudie, R. Ian; Boyd, W. Sean (2000). "Long-Term Pair Bonds in Harlequin Ducks". The Condor. 102 (1): 201-205. doi:10.1093/condor/102.1.201. hdl:10315/13797. 27. [^](#cite_ref-27) Smith, Cyndi M.; Cooke, Fred; Robertson, Gregory J.; Goudie, R. Ian; Boyd, W. Sean (2000). ["Long-Term Pair Bonds in Harlequin Ducks"](https://doi.org/10.1093%2Fcondor%2F102.1.201) . The Condor . 102 (1): 201-205. [doi](/wiki/Doi_(identifier)) : [10.1093/condor/102.1.201](https://doi.org/10.1093%2Fcondor%2F102.1.201) . [hdl](/wiki/Hdl_(identifier)) : [10315/13797](https://hdl.handle.net/10315%2F13797) .
28. ^ "If You Find An Orphaned Duckling - Wildlife Rehabber". wildliferehabber.com. Archived from the original on 2018-09-23. Retrieved 2018-12-22. 28. [^](#cite_ref-28) ["If You Find An Orphaned Duckling - Wildlife Rehabber"](https://web.archive.org/web/20180923152911/http://wildliferehabber.com/content/if-you-find-duckling) . wildliferehabber.com . Archived from [the original](https://wildliferehabber.com/content/if-you-find-duckling) on 2018-09-23 . Retrieved 2018-12-22 .
29. ^ Carver, Heather (2011). The Duck Bible. Lulu.com. ISBN 9780557901562.[self-published source] 29. [^](#cite_ref-29) Carver, Heather (2011). [The Duck Bible](https://books.google.com/books?id=VGofAwAAQBAJ&q=mallard+sound+deep+and+raspy&pg=PA39) . Lulu.com. [ISBN](/wiki/ISBN_(identifier)) [9780557901562](/wiki/Special:BookSources/9780557901562) . [ [self-published source](/wiki/Wikipedia:Verifiability#Self-published_sources) ]
30. ^ Titlow, Budd (2013-09-03). Bird Brains: Inside the Strange Minds of Our Fine Feathered Friends. Rowman &amp; Littlefield. ISBN 9780762797707. 30. [^](#cite_ref-30) Titlow, Budd (2013-09-03). [Bird Brains: Inside the Strange Minds of Our Fine Feathered Friends](https://books.google.com/books?id=fXJBBAAAQBAJ&q=Females+of+most+dabbling+ducks+make+the+classic+%22quack%22+sound+but+most+ducks+don%27t+quack&pg=PA123) . Rowman &amp; Littlefield. [ISBN](/wiki/ISBN_(identifier)) [9780762797707](/wiki/Special:BookSources/9780762797707) .
31. ^ Amos, Jonathan (2003-09-08). "Sound science is quackers". BBC News. Retrieved 2006-11-02. 31. [^](#cite_ref-31) Amos, Jonathan (2003-09-08). ["Sound science is quackers"](http://news.bbc.co.uk/2/hi/science/nature/3086890.stm) . BBC News . Retrieved 2006-11-02 .
32. ^ "Mythbusters Episode 8". 12 December 2003. 32. [^](#cite_ref-32) ["Mythbusters Episode 8"](http://mythbustersresults.com/episode8) . 12 December 2003.
33. ^ Erlandson 1994, p. 171. 33. [^](#cite_ref-FOOTNOTEErlandson1994171_33-0) [Erlandson 1994](#CITEREFErlandson1994) , p. 171.
34. ^ Jeffries 2008, pp. 168, 243. 34. [^](#cite_ref-FOOTNOTEJeffries2008168,_243_34-0) [Jeffries 2008](#CITEREFJeffries2008) , pp. 168, 243.
35. ^ a b Sued-Badillo 2003, p. 65. 35. ^ [a](#cite_ref-FOOTNOTESued-Badillo200365_35-0) [b](#cite_ref-FOOTNOTESued-Badillo200365_35-1) [Sued-Badillo 2003](#CITEREFSued-Badillo2003) , p. 65.
36. ^ Thorpe 1996, p. 68. 36. [^](#cite_ref-FOOTNOTEThorpe199668_36-0) [Thorpe 1996](#CITEREFThorpe1996) , p. 68.
37. ^ Maisels 1999, p. 42. 37. [^](#cite_ref-FOOTNOTEMaisels199942_37-0) [Maisels 1999](#CITEREFMaisels1999) , p. 42.
38. ^ Rau 1876, p. 133. 38. [^](#cite_ref-FOOTNOTERau1876133_38-0) [Rau 1876](#CITEREFRau1876) , p. 133.
39. ^ Higman 2012, p. 23. 39. [^](#cite_ref-FOOTNOTEHigman201223_39-0) [Higman 2012](#CITEREFHigman2012) , p. 23.
40. ^ Hume 2012, p. 53. 40. [^](#cite_ref-FOOTNOTEHume201253_40-0) [Hume 2012](#CITEREFHume2012) , p. 53.
41. ^ Hume 2012, p. 52. 41. [^](#cite_ref-FOOTNOTEHume201252_41-0) [Hume 2012](#CITEREFHume2012) , p. 52.
42. ^ Fieldhouse 2002, p. 167. 42. [^](#cite_ref-FOOTNOTEFieldhouse2002167_42-0) [Fieldhouse 2002](#CITEREFFieldhouse2002) , p. 167.
43. ^ Livingston, A. D. (1998-01-01). Guide to Edible Plants and Animals. Wordsworth Editions, Limited. ISBN 9781853263774. 43. [^](#cite_ref-43) Livingston, A. D. (1998-01-01). [Guide to Edible Plants and Animals](https://books.google.com/books?id=NViSMffyaSgC&q=%C2%A0%C2%A0In+many+areas,+wild+ducks+of+various+species+are+hunted+for+food+or+sport) . Wordsworth Editions, Limited. [ISBN](/wiki/ISBN_(identifier)) [9781853263774](/wiki/Special:BookSources/9781853263774) .
44. ^ "Study plan for waterfowl injury assessment: Determining PCB concentrations in Hudson river resident waterfowl" (PDF). New York State Department of Environmental Conservation. US Department of Commerce. December 2008. p. 3. Archived (PDF) from the original on 2022-10-09. Retrieved 2 July 2019. 44. [^](#cite_ref-44) ["Study plan for waterfowl injury assessment: Determining PCB concentrations in Hudson river resident waterfowl"](https://www.dec.ny.gov/docs/fish_marine_pdf/wfp09a.pdf) (PDF) . New York State Department of Environmental Conservation . US Department of Commerce. December 2008. p. 3. [Archived](https://ghostarchive.org/archive/20221009/https://www.dec.ny.gov/docs/fish_marine_pdf/wfp09a.pdf) (PDF) from the original on 2022-10-09 . Retrieved 2 July 2019 .
45. ^ "FAOSTAT". www.fao.org. Retrieved 2019-10-25. 45. [^](#cite_ref-45) ["FAOSTAT"](http://www.fao.org/faostat/en/#data/QL) . www.fao.org . Retrieved 2019-10-25 .
46. ^ "Anas platyrhynchos, Domestic Duck; DigiMorph Staff - The University of Texas at Austin". Digimorph.org. Retrieved 2012-12-23. 46. [^](#cite_ref-46) ["Anas platyrhynchos, Domestic Duck; DigiMorph Staff - The University of Texas at Austin"](http://digimorph.org/specimens/anas_platyrhynchos/skull/) . Digimorph.org . Retrieved 2012-12-23 .
47. ^ Sy Montgomery. "Mallard; Encyclopædia Britannica". Britannica.com. Retrieved 2012-12-23. 47. [^](#cite_ref-47) Sy Montgomery. ["Mallard; Encyclopædia Britannica"](https://www.britannica.com/eb/topic-360302/mallard) . Britannica.com . Retrieved 2012-12-23 .
48. ^ Glenday, Craig (2014). Guinness World Records. Guinness World Records Limited. pp. 135. ISBN 978-1-908843-15-9. 48. [^](#cite_ref-48) Glenday, Craig (2014). [Guinness World Records](https://archive.org/details/guinnessworldrec0000unse_r3e7/page/135) . Guinness World Records Limited. pp. [135](https://archive.org/details/guinnessworldrec0000unse_r3e7/page/135) . [ISBN](/wiki/ISBN_(identifier)) [978-1-908843-15-9](/wiki/Special:BookSources/978-1-908843-15-9) .
49. ^ Suomen kunnallisvaakunat (in Finnish). Suomen Kunnallisliitto. 1982. p. 147. ISBN 951-773-085-3. 49. [^](#cite_ref-49) Suomen kunnallisvaakunat (in Finnish). Suomen Kunnallisliitto. 1982. p. 147. [ISBN](/wiki/ISBN_(identifier)) [951-773-085-3](/wiki/Special:BookSources/951-773-085-3) .
50. ^ "Lubānas simbolika" (in Latvian). Retrieved September 9, 2021. 50. [^](#cite_ref-50) ["Lubānas simbolika"](http://www.lubana.lv/index.php/lv/homepage/lubanas-pilseta-2) (in Latvian) . Retrieved September 9, 2021 .
51. ^ "Föglö" (in Swedish). Retrieved September 9, 2021. 51. [^](#cite_ref-51) ["Föglö"](http://digi.narc.fi/digi/view.ka?kuid=1738595) (in Swedish) . Retrieved September 9, 2021 .
52. ^ Young, Emma. "World's funniest joke revealed". New Scientist. Retrieved 7 January 2019. 52. [^](#cite_ref-52) Young, Emma. ["World's funniest joke revealed"](https://www.newscientist.com/article/dn2876-worlds-funniest-joke-revealed/) . New Scientist . Retrieved 7 January 2019 .
53. ^ "Howard the Duck (character)". Grand Comics Database. 53. [^](#cite_ref-53) ["Howard the Duck (character)"](http://www.comics.org/character/name/Howard%20the%20Duck/sort/chrono/) . [Grand Comics Database](/wiki/Grand_Comics_Database) .
54. ^ Sanderson, Peter; Gilbert, Laura (2008). "1970s". Marvel Chronicle A Year by Year History. London, United Kingdom: Dorling Kindersley. p. 161. ISBN 978-0756641238. December saw the debut of the cigar-smoking Howard the Duck. In this story by writer Steve Gerber and artist Val Mayerik, various beings from different realities had begun turning up in the Man-Thing's Florida swamp, including this bad-tempered talking duck. 54. [^](#cite_ref-54) [Sanderson, Peter](/wiki/Peter_Sanderson) ; Gilbert, Laura (2008). "1970s". Marvel Chronicle A Year by Year History . London, United Kingdom: [Dorling Kindersley](/wiki/Dorling_Kindersley) . p. 161. [ISBN](/wiki/ISBN_(identifier)) [978-0756641238](/wiki/Special:BookSources/978-0756641238) . December saw the debut of the cigar-smoking Howard the Duck. In this story by writer Steve Gerber and artist Val Mayerik, various beings from different realities had begun turning up in the Man-Thing's Florida swamp, including this bad-tempered talking duck.
55. ^ "The Duck". University of Oregon Athletics. Retrieved 2022-01-20. 55. [^](#cite_ref-55) ["The Duck"](https://goducks.com/sports/2003/8/28/153778.aspx) . University of Oregon Athletics . Retrieved 2022-01-20 .
### Sources ### Sources
- American Ornithologists' Union (1998). Checklist of North American Birds (PDF). Washington, DC: American Ornithologists' Union. ISBN 978-1-891276-00-2. Archived (PDF) from the original on 2022-10-09. - American Ornithologists' Union (1998). [Checklist of North American Birds](https://americanornithology.org/wp-content/uploads/2019/07/AOSChecklistTin-Falcon.pdf) (PDF) . Washington, DC: American Ornithologists' Union. [ISBN](/wiki/ISBN_(identifier)) [978-1-891276-00-2](/wiki/Special:BookSources/978-1-891276-00-2) . [Archived](https://ghostarchive.org/archive/20221009/https://americanornithology.org/wp-content/uploads/2019/07/AOSChecklistTin-Falcon.pdf) (PDF) from the original on 2022-10-09.
- Carboneras, Carlos (1992). del Hoyo, Josep; Elliott, Andrew; Sargatal, Jordi (eds.). Handbook of the Birds of the World. Vol. 1: Ostrich to Ducks. Barcelona: Lynx Edicions. ISBN 978-84-87334-10-8. - Carboneras, Carlos (1992). del Hoyo, Josep; Elliott, Andrew; Sargatal, Jordi (eds.). Handbook of the Birds of the World . Vol. 1: Ostrich to Ducks. Barcelona: Lynx Edicions. [ISBN](/wiki/ISBN_(identifier)) [978-84-87334-10-8](/wiki/Special:BookSources/978-84-87334-10-8) .
- Christidis, Les; Boles, Walter E., eds. (2008). Systematics and Taxonomy of Australian Birds. Collingwood, VIC: Csiro Publishing. ISBN 978-0-643-06511-6. - Christidis, Les; Boles, Walter E., eds. (2008). Systematics and Taxonomy of Australian Birds . Collingwood, VIC: Csiro Publishing. [ISBN](/wiki/ISBN_(identifier)) [978-0-643-06511-6](/wiki/Special:BookSources/978-0-643-06511-6) .
- Donne-Goussé, Carole; Laudet, Vincent; Hänni, Catherine (July 2002). "A molecular phylogeny of Anseriformes based on mitochondrial DNA analysis". Molecular Phylogenetics and Evolution. 23 (3): 339-356. Bibcode:2002MolPE..23..339D. doi:10.1016/S1055-7903(02)00019-2. PMID 12099792. - Donne-Goussé, Carole; Laudet, Vincent; Hänni, Catherine (July 2002). "A molecular phylogeny of Anseriformes based on mitochondrial DNA analysis". Molecular Phylogenetics and Evolution . 23 (3): 339-356. [Bibcode](/wiki/Bibcode_(identifier)) : [2002MolPE..23..339D](https://ui.adsabs.harvard.edu/abs/2002MolPE..23..339D) . [doi](/wiki/Doi_(identifier)) : [10.1016/S1055-7903(02)00019-2](https://doi.org/10.1016%2FS1055-7903%2802%2900019-2) . [PMID](/wiki/PMID_(identifier)) [12099792](https://pubmed.ncbi.nlm.nih.gov/12099792) .
- Elphick, Chris; Dunning, John B. Jr.; Sibley, David, eds. (2001). The Sibley Guide to Bird Life and Behaviour. London: Christopher Helm. ISBN 978-0-7136-6250-4. - Elphick, Chris; Dunning, John B. Jr.; Sibley, David, eds. (2001). The Sibley Guide to Bird Life and Behaviour . London: Christopher Helm. [ISBN](/wiki/ISBN_(identifier)) [978-0-7136-6250-4](/wiki/Special:BookSources/978-0-7136-6250-4) .
- Erlandson, Jon M. (1994). Early Hunter-Gatherers of the California Coast. New York, NY: Springer Science &amp; Business Media. ISBN 978-1-4419-3231-0. - Erlandson, Jon M. (1994). [Early Hunter-Gatherers of the California Coast](https://books.google.com/books?id=nGTaBwAAQBAJ&pg=171) . New York, NY: Springer Science &amp; Business Media. [ISBN](/wiki/ISBN_(identifier)) [978-1-4419-3231-0](/wiki/Special:BookSources/978-1-4419-3231-0) .
- Fieldhouse, Paul (2002). Food, Feasts, and Faith: An Encyclopedia of Food Culture in World Religions. Vol. I: A-K. Santa Barbara: ABC-CLIO. ISBN 978-1-61069-412-4. - Fieldhouse, Paul (2002). [Food, Feasts, and Faith: An Encyclopedia of Food Culture in World Religions](https://books.google.com/books?id=P-FqDgAAQBAJ&pg=PA167) . Vol. I: A-K. Santa Barbara: ABC-CLIO. [ISBN](/wiki/ISBN_(identifier)) [978-1-61069-412-4](/wiki/Special:BookSources/978-1-61069-412-4) .
- Fitter, Julian; Fitter, Daniel; Hosking, David (2000). Wildlife of the Galápagos. Princeton, NJ: Princeton University Press. ISBN 978-0-691-10295-5. - Fitter, Julian; Fitter, Daniel; Hosking, David (2000). Wildlife of the Galápagos . Princeton, NJ: Princeton University Press. [ISBN](/wiki/ISBN_(identifier)) [978-0-691-10295-5](/wiki/Special:BookSources/978-0-691-10295-5) .
- Higman, B. W. (2012). How Food Made History. Chichester, UK: John Wiley &amp; Sons. ISBN 978-1-4051-8947-7. - Higman, B. W. (2012). [How Food Made History](https://books.google.com/books?id=YIUoz98yMvgC&pg=RA1-PA1801) . Chichester, UK: John Wiley &amp; Sons. [ISBN](/wiki/ISBN_(identifier)) [978-1-4051-8947-7](/wiki/Special:BookSources/978-1-4051-8947-7) .
- Hume, Julian H. (2012). Extinct Birds. London: Christopher Helm. ISBN 978-1-4729-3744-5. - Hume, Julian H. (2012). [Extinct Birds](https://books.google.com/books?id=40sxDwAAQBAJ&pg=PA53) . London: Christopher Helm. [ISBN](/wiki/ISBN_(identifier)) [978-1-4729-3744-5](/wiki/Special:BookSources/978-1-4729-3744-5) .
- Jeffries, Richard (2008). Holocene Hunter-Gatherers of the Lower Ohio River Valley. Tuscaloosa: University of Alabama Press. ISBN 978-0-8173-1658-7. - Jeffries, Richard (2008). [Holocene Hunter-Gatherers of the Lower Ohio River Valley](https://archive.org/details/holocenehunterga0000jeff/mode/2up) . Tuscaloosa: University of Alabama Press. [ISBN](/wiki/ISBN_(identifier)) [978-0-8173-1658-7](/wiki/Special:BookSources/978-0-8173-1658-7) .
- Kear, Janet, ed. (2005). Ducks, Geese and Swans: Species Accounts (Cairina to Mergus). Bird Families of the World. Oxford: Oxford University Press. ISBN 978-0-19-861009-0. - Kear, Janet, ed. (2005). Ducks, Geese and Swans: Species Accounts ( Cairina to Mergus ) . Bird Families of the World. Oxford: Oxford University Press. [ISBN](/wiki/ISBN_(identifier)) [978-0-19-861009-0](/wiki/Special:BookSources/978-0-19-861009-0) .
- Livezey, Bradley C. (October 1986). "A phylogenetic analysis of recent Anseriform genera using morphological characters" (PDF). The Auk. 103 (4): 737-754. doi:10.1093/auk/103.4.737. Archived (PDF) from the original on 2022-10-09. - Livezey, Bradley C. (October 1986). ["A phylogenetic analysis of recent Anseriform genera using morphological characters"](https://sora.unm.edu/sites/default/files/journals/auk/v103n04/p0737-p0754.pdf) (PDF) . The Auk . 103 (4): 737-754. [doi](/wiki/Doi_(identifier)) : [10.1093/auk/103.4.737](https://doi.org/10.1093%2Fauk%2F103.4.737) . [Archived](https://ghostarchive.org/archive/20221009/https://sora.unm.edu/sites/default/files/journals/auk/v103n04/p0737-p0754.pdf) (PDF) from the original on 2022-10-09.
- Madsen, Cort S.; McHugh, Kevin P.; de Kloet, Siwo R. (July 1988). "A partial classification of waterfowl (Anatidae) based on single-copy DNA" (PDF). The Auk. 105 (3): 452-459. doi:10.1093/auk/105.3.452. Archived (PDF) from the original on 2022-10-09. - Madsen, Cort S.; McHugh, Kevin P.; de Kloet, Siwo R. (July 1988). ["A partial classification of waterfowl (Anatidae) based on single-copy DNA"](https://sora.unm.edu/sites/default/files/journals/auk/v105n03/p0452-p0459.pdf) (PDF) . The Auk . 105 (3): 452-459. [doi](/wiki/Doi_(identifier)) : [10.1093/auk/105.3.452](https://doi.org/10.1093%2Fauk%2F105.3.452) . [Archived](https://ghostarchive.org/archive/20221009/https://sora.unm.edu/sites/default/files/journals/auk/v105n03/p0452-p0459.pdf) (PDF) from the original on 2022-10-09.
- Maisels, Charles Keith (1999). Early Civilizations of the Old World. London: Routledge. ISBN 978-0-415-10975-8. - Maisels, Charles Keith (1999). [Early Civilizations of the Old World](https://books.google.com/books?id=I2dgI2ijww8C&pg=PA42) . London: Routledge. [ISBN](/wiki/ISBN_(identifier)) [978-0-415-10975-8](/wiki/Special:BookSources/978-0-415-10975-8) .
- Pratt, H. Douglas; Bruner, Phillip L.; Berrett, Delwyn G. (1987). A Field Guide to the Birds of Hawaii and the Tropical Pacific. Princeton, NJ: Princeton University Press. ISBN 0-691-02399-9. - Pratt, H. Douglas; Bruner, Phillip L.; Berrett, Delwyn G. (1987). A Field Guide to the Birds of Hawaii and the Tropical Pacific . Princeton, NJ: Princeton University Press. [ISBN](/wiki/ISBN_(identifier)) [0-691-02399-9](/wiki/Special:BookSources/0-691-02399-9) .
- Rau, Charles (1876). Early Man in Europe. New York: Harper &amp; Brothers. LCCN 05040168. - Rau, Charles (1876). [Early Man in Europe](https://books.google.com/books?id=9XBgAAAAIAAJ&pg=133) . New York: Harper &amp; Brothers. [LCCN](/wiki/LCCN_(identifier)) [05040168](https://lccn.loc.gov/05040168) .
- Shirihai, Hadoram (2008). A Complete Guide to Antarctic Wildlife. Princeton, NJ, US: Princeton University Press. ISBN 978-0-691-13666-0. - Shirihai, Hadoram (2008). A Complete Guide to Antarctic Wildlife . Princeton, NJ, US: Princeton University Press. [ISBN](/wiki/ISBN_(identifier)) [978-0-691-13666-0](/wiki/Special:BookSources/978-0-691-13666-0) .
- Sued-Badillo, Jalil (2003). Autochthonous Societies. General History of the Caribbean. Paris: UNESCO. ISBN 978-92-3-103832-7. - Sued-Badillo, Jalil (2003). [Autochthonous Societies](https://books.google.com/books?id=zexcW7q-4LgC&pg=PA65) . General History of the Caribbean. Paris: UNESCO. [ISBN](/wiki/ISBN_(identifier)) [978-92-3-103832-7](/wiki/Special:BookSources/978-92-3-103832-7) .
- Thorpe, I. J. (1996). The Origins of Agriculture in Europe. New York: Routledge. ISBN 978-0-415-08009-5. - Thorpe, I. J. (1996). [The Origins of Agriculture in Europe](https://books.google.com/books?id=YA-EAgAAQBAJ&pg=PA68) . New York: Routledge. [ISBN](/wiki/ISBN_(identifier)) [978-0-415-08009-5](/wiki/Special:BookSources/978-0-415-08009-5) .
## External links ## External links
Duck at Wikipedia's sister projects Duck at Wikipedia's
- Definitions from Wiktionary [sister projects](/wiki/Wikipedia:Wikimedia_sister_projects)
- [Definitions](https://en.wiktionary.org/wiki/duck) from Wiktionary
<!-- image --> <!-- image -->
- Media from Commons - [Media](https://commons.wikimedia.org/wiki/Anatidae) from Commons
<!-- image --> <!-- image -->
- Quotations from Wikiquote - [Quotations](https://en.wikiquote.org/wiki/Birds) from Wikiquote
<!-- image --> <!-- image -->
- Recipes from Wikibooks - [Recipes](https://en.wikibooks.org/wiki/Cookbook:Duck) from Wikibooks
<!-- image --> <!-- image -->
- Taxa from Wikispecies - [Taxa](https://species.wikimedia.org/wiki/Anatidae) from Wikispecies
<!-- image --> <!-- image -->
- Data from Wikidata - [Data](https://www.wikidata.org/wiki/Q3736439) from Wikidata
<!-- image --> <!-- image -->
- list of books (useful looking abstracts) - [list of books](https://web.archive.org/web/20060613210555/http://seaducks.org/subjects/MIGRATION%20AND%20FLIGHT.htm) (useful looking abstracts)
- Ducks on postage stamps Archived 2013-05-13 at the Wayback Machine - [Ducks on postage stamps](http://www.stampsbook.org/subject/Duck.html) [Archived](https://web.archive.org/web/20130513022903/http://www.stampsbook.org/subject/Duck.html) 2013-05-13 at the [Wayback Machine](/wiki/Wayback_Machine)
- Ducks at a Distance, by Rob Hines at Project Gutenberg - A modern illustrated guide to identification of US waterfowl - [Ducks at a Distance, by Rob Hines](https://gutenberg.org/ebooks/18884) at [Project Gutenberg](/wiki/Project_Gutenberg) - A modern illustrated guide to identification of US waterfowl
<!-- image --> <!-- image -->
@@ -516,59 +518,61 @@ Duck at Wikipedia's sister projects
| National | United States France BnF data Japan Latvia Israel | | National | United States France BnF data Japan Latvia Israel |
| Other | IdRef | | Other | IdRef |
Retrieved from "https://en.wikipedia.org/w/index.php?title=Duck&amp;oldid=1246843351" Retrieved from " [https://en.wikipedia.org/w/index.php?title=Duck&amp;oldid=1246843351](https://en.wikipedia.org/w/index.php?title=Duck&oldid=1246843351) "
Categories: [Categories](/wiki/Help:Category)
- Ducks :
- Game birds
- Bird common names - [Ducks](/wiki/Category:Ducks)
- [Game birds](/wiki/Category:Game_birds)
- [Bird common names](/wiki/Category:Bird_common_names)
Hidden categories: Hidden categories:
- All accuracy disputes - [All accuracy disputes](/wiki/Category:All_accuracy_disputes)
- Accuracy disputes from February 2020 - [Accuracy disputes from February 2020](/wiki/Category:Accuracy_disputes_from_February_2020)
- CS1 Finnish-language sources (fi) - [CS1 Finnish-language sources (fi)](/wiki/Category:CS1_Finnish-language_sources_(fi))
- CS1 Latvian-language sources (lv) - [CS1 Latvian-language sources (lv)](/wiki/Category:CS1_Latvian-language_sources_(lv))
- CS1 Swedish-language sources (sv) - [CS1 Swedish-language sources (sv)](/wiki/Category:CS1_Swedish-language_sources_(sv))
- Articles with short description - [Articles with short description](/wiki/Category:Articles_with_short_description)
- Short description is different from Wikidata - [Short description is different from Wikidata](/wiki/Category:Short_description_is_different_from_Wikidata)
- Wikipedia indefinitely move-protected pages - [Wikipedia indefinitely move-protected pages](/wiki/Category:Wikipedia_indefinitely_move-protected_pages)
- Wikipedia indefinitely semi-protected pages - [Wikipedia indefinitely semi-protected pages](/wiki/Category:Wikipedia_indefinitely_semi-protected_pages)
- Articles with 'species' microformats - [Articles with 'species' microformats](/wiki/Category:Articles_with_%27species%27_microformats)
- Articles containing Old English (ca. 450-1100)-language text - [Articles containing Old English (ca. 450-1100)-language text](/wiki/Category:Articles_containing_Old_English_(ca._450-1100)-language_text)
- Articles containing Dutch-language text - [Articles containing Dutch-language text](/wiki/Category:Articles_containing_Dutch-language_text)
- Articles containing German-language text - [Articles containing German-language text](/wiki/Category:Articles_containing_German-language_text)
- Articles containing Norwegian-language text - [Articles containing Norwegian-language text](/wiki/Category:Articles_containing_Norwegian-language_text)
- Articles containing Lithuanian-language text - [Articles containing Lithuanian-language text](/wiki/Category:Articles_containing_Lithuanian-language_text)
- Articles containing Ancient Greek (to 1453)-language text - [Articles containing Ancient Greek (to 1453)-language text](/wiki/Category:Articles_containing_Ancient_Greek_(to_1453)-language_text)
- All articles with self-published sources - [All articles with self-published sources](/wiki/Category:All_articles_with_self-published_sources)
- Articles with self-published sources from February 2020 - [Articles with self-published sources from February 2020](/wiki/Category:Articles_with_self-published_sources_from_February_2020)
- All articles with unsourced statements - [All articles with unsourced statements](/wiki/Category:All_articles_with_unsourced_statements)
- Articles with unsourced statements from January 2022 - [Articles with unsourced statements from January 2022](/wiki/Category:Articles_with_unsourced_statements_from_January_2022)
- CS1: long volume value - [CS1: long volume value](/wiki/Category:CS1:_long_volume_value)
- Pages using Sister project links with wikidata mismatch - [Pages using Sister project links with wikidata mismatch](/wiki/Category:Pages_using_Sister_project_links_with_wikidata_mismatch)
- Pages using Sister project links with hidden wikidata - [Pages using Sister project links with hidden wikidata](/wiki/Category:Pages_using_Sister_project_links_with_hidden_wikidata)
- Webarchive template wayback links - [Webarchive template wayback links](/wiki/Category:Webarchive_template_wayback_links)
- Articles with Project Gutenberg links - [Articles with Project Gutenberg links](/wiki/Category:Articles_with_Project_Gutenberg_links)
- Articles containing video clips - [Articles containing video clips](/wiki/Category:Articles_containing_video_clips)
- This page was last edited on 21 September 2024, at 12:11 (UTC). - This page was last edited on 21 September 2024, at 12:11 (UTC) .
- Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization. - Text is available under the [Creative Commons Attribution-ShareAlike License 4.0](//en.wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License) ; additional terms may apply. By using this site, you agree to the [Terms of Use](//foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use) and [Privacy Policy](//foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy) . Wikipedia® is a registered trademark of the [Wikimedia Foundation, Inc.](//wikimediafoundation.org) , a non-profit organization.
- Privacy policy - [Privacy policy](https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy)
- About Wikipedia - [About Wikipedia](/wiki/Wikipedia:About)
- Disclaimers - [Disclaimers](/wiki/Wikipedia:General_disclaimer)
- Contact Wikipedia - [Contact Wikipedia](//en.wikipedia.org/wiki/Wikipedia:Contact_us)
- Code of Conduct - [Code of Conduct](https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct)
- Developers - [Developers](https://developer.wikimedia.org/)
- Statistics - [Statistics](https://stats.wikimedia.org/#/en.wikipedia.org)
- Cookie statement - [Cookie statement](https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement)
- Mobile view - [Mobile view](//en.m.wikipedia.org/w/index.php?title=Duck&mobileaction=toggle_view_mobile)
Wikimedia Foundation Image Hyperlink.
<!-- image --> <!-- image -->
Powered by MediaWiki Image Hyperlink.
<!-- image --> <!-- image -->

17
tests/data/html/hyperlink_01.html vendored Normal file
View File

@@ -0,0 +1,17 @@
<html>
<body>
<h1>Something</h1>
<p>
Please follow the link to:
<a href="#">
<span class="icon icon--right"></span> This page
</a>
.
</p>
<div class="mod mod-contentpage">
</div>
</body>
</html>

18
tests/data/html/hyperlink_02.html vendored Normal file
View File

@@ -0,0 +1,18 @@
<html>
<body>
<div class="nav-mobile-header">
<div class="table-row">
<span class="nav-mobile-logo">
<img src="/etc/designs/core/frontend/guidelines/img/xyz.svg"
onerror="this.onerror=null; this.src='/etc/designs/core/frontend/guidelines/img/xyz.png'"
alt="Image alt text" />
</span>
<h2>
<a href="/home.html" title="My home page " aria-label="My home page ">Home</a>
</h2>
</div>
</div>
</body>
</html>

40
tests/data/html/hyperlink_03.html vendored Normal file
View File

@@ -0,0 +1,40 @@
<html>
<body>
<ul class="nav navbar-nav">
<li class="dropdown">
<a id="main-dropdown" href="#" aria-label="My Section" class="dropdown-toggle" data-toggle="dropdown"><span
class="icon icon--right"></span> My Section</a>
<ul class="dropdown-menu" role="menu">
<li class="dropdown-header">
<a href="/start.html" aria-label="Some page" target="_blank" title="">Some
page</a>
<ul>
<li>
<a href="/home2.html" aria-label="Some other page" target="_blank" title=""> A sub page</a>
</li>
</ul>
<ul>
<li>This is my <a href="/home.html">Homepage</a>
<ul>
<li>
List item inner
</li>
<li>
More text <a href="/some_links.html">with some links</a> and more text.
</li>
</ul>
</li>
<li><a href="#main-navigation">Main navigation</a></li>
</ul>
</li>
</ul>
</li>
<li class="dropdown">
<a id="other-dropdown" href="#" aria-label="My Org" class="dropdown-toggle"><span
class="icon icon--right"></span> My organisation</a>
</li>
</ul>
</body>
</html>

11
tests/data/html/hyperlink_04.html vendored Normal file
View File

@@ -0,0 +1,11 @@
<html>
<body>
<a href="/start.html">
<div>
This is some text.
</div>
</a>
</body>
</html>

36
tests/data/html/hyperlink_05.html vendored Normal file
View File

@@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Image Hyperlink and Caption Example</title>
<style>
body { font-family: Arial, sans-serif; margin: 2em; }
figure { max-width: 320px; margin: 2em 0; }
figcaption { background: #f3f3f3; color: #333; padding: 6px; text-align: center; font-style: italic; }
</style>
</head>
<body>
<!-- Image as a hyperlink -->
<a href="https://www.example.com" target="_blank">
<img src="https://via.placeholder.com/200x100.png?text=Clickable+Image" alt="Clickable Example" />
</a>
<!-- Image with a caption -->
<figure>
<img src="https://via.placeholder.com/250x150.png?text=Captioned+Image" alt="Image with Caption" />
<figcaption>This is an example caption for the image.</figcaption>
</figure>
<!-- Image with a caption -->
<figure>
<a href="https://www.example.com" target="_blank">
<img src="https://via.placeholder.com/250x150.png?text=Captioned+Image" alt="Image with Caption" />
</a>
<figcaption>This is an example <a href="#caption">caption</a> for the image.</figcaption>
</figure>
</body>
</html>

View File

@@ -116,6 +116,26 @@ def test_unicode_characters():
assert doc.texts[0].text == "Hello World!" assert doc.texts[0].text == "Hello World!"
def test_extract_parent_hyperlinks():
html_path = Path("./tests/data/html/hyperlink_04.html")
in_doc = InputDocument(
path_or_stream=html_path,
format=InputFormat.HTML,
backend=HTMLDocumentBackend,
filename="test",
)
backend = HTMLDocumentBackend(
in_doc=in_doc,
path_or_stream=html_path,
)
div_tag = backend.soup.find("div")
a_tag = backend.soup.find("a")
annotated_text_list = backend._extract_text_and_hyperlink_recursively(
div_tag, find_parent_annotation=True
)
assert str(annotated_text_list[0].hyperlink) == a_tag.get("href")
def get_html_paths(): def get_html_paths():
# Define the directory you want to search # Define the directory you want to search
directory = Path("./tests/data/html/") directory = Path("./tests/data/html/")