---
name: "hxname2id"
section: "1"
platform: "linux"
package: "html-xml-utils"
version: "8.8-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/hxname2id"
---

# hxname2id(1)

move some NAME and ID attributes from an A to its parent

## NAME

hxname2id - move some NAME and ID attributes from an A to its parent

## SYNOPSIS

**hxname2id** \[ **-x** \] \[ *file* \]

## DESCRIPTION

The **hxname2id** command reads an HTML file and looks for elements with an A element as first child, with no intervening text other than whitespace. If that A element has an ID or NAME attribute, it is moved to the parent element and removed from the A.

Because Netscape 4 doesn't understand ID attributes, it was common practice to write \<H2\>\<A NAME="sect7"\>...\</A\>\</H2\> instead of \<H2 ID="sect7"\>. This program can be used to convert such old HTML files to the new convention.

Other programs in this suite, such as [**hxmultitoc**(1)](/hxmultitoc/1.md), require IDs on headings instead of A elements with NAME attributes. So it is useful to run **hxname2id** prior to running **hxmultitoc** and similar program. **hxname2id** can be used in a pipe.

## OPTIONS

The following options are supported:

- **-x**

  Use XML conventions: empty elements are written with a slash at the end: \<IMG /\>

## OPERANDS

The following operand is supported:

- *file*

  The name of an HTML file. If absent, standard input is read instead.

## DIAGNOSTICS

The following exit values are returned:

- **0**

  Successful completion.

- **\> 0**

  An error occurred in the parsing of the HTML file. **hxname2id** will try to correct the error and produce output anyway.

## SEE ALSO

[**asc2xml**(1)](/asc2xml/1.md), [**hxmultitoc**(1)](/hxmultitoc/1.md), [**hxnormalize**(1)](/hxnormalize/1.md), [**hxnum**(1)](/hxnum/1.md), [**hxtoc**(1)](/hxtoc/1.md), [**xml2asc**(1)](/xml2asc/1.md)

## BUGS

The error recovery for incorrect HTML is primitive.
