---
name: "hxremove"
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/hxremove"
---

# hxremove(1)

remove elements from an XML file by means of a CSS selector

## NAME

hxremove - remove elements from an XML file by means of a CSS selector

## SYNOPSIS

**hxremove** \[ **-i** \] \[ **-l** *language* \] *selectors*

## DESCRIPTION

**hxremove** reads a well-formed XML document from standard input and writes it to standard output without any elements that match one of the CSS selectors that are given as argument. For example

```
hxremove ol li:first-child
```

removes the first li (list item in XHTML) from every ol (ordered list).

If there are multiple selectors, they must be separated by commas. For example,

```
hxremove p + ul, blockquote ol
```

removes all ul elements that follow a p element and also all ol elements that are descendants of a blockquote element.

**hxremove** assumes that class selectors (".foo") refer to an attribute called "class". And assumes that ID selectors ("#foo") refer to an attribute called "id".

To handle HTML files, make them well-formed XML first, e.g., with **hxnormalize -x**.

Compare with **hxselect**, which removes everything *but* the selected elements.

## OPTIONS

The following options are supported:

- **-i**

  Match case-insensitively. Useful for HTML and some other SGML-based languages.

- **-l** *language*

  Sets the default language, in case the root element doesn't have an xml:lang attribute (default: none). Example: **-l en**

## OPERANDS

The following operand is supported:

- *selectors*

  One or more comma-separated selectors. Most selectors from CSS level 3 are supported.

## SEE ALSO

[**asc2xml**(1)](/asc2xml/1.md), [**xml2asc**(1)](/xml2asc/1.md), [**hxnormalize**(1)](/hxnormalize/1.md), [**hxselect**(1)](/hxselect/1.md), **UTF-8** (RFC 2279)
