Попробуйте указать tidy, чтобы преобразовать символьные сущности в числовые, например:
curl --silent -q http://www.xfree86.org/current/index.html | \
tidy -q -numeric -asxhtml --show-warnings no | \
xmlstarlet sel -N xhtml="http://www.w3.org/1999/xhtml" -t -m "//xhtml:hr" -c . -n 2>/dev/null
Здесь я добавил следующие опции:
- Скажите curl, чтобы он молчал с
--silent
и -q
- Скажите tidy, чтобы он молчал с
-q
и --show-warnings no
- Скажите tidy, чтобы преобразовать сущности в числовые с
-numeric
- Givexmlstarlet пространство имен xhtml для использования в XPath с
-N
и назовите его xhtml - Измените XPath на
hr
в пространстве имен xhtml
Это работает дляизбавиться от ошибки «неопределенная сущность», отключив предыдущие команды и выбрав нужный элемент.
Однако, когда я попытался сделать это с помощью xmlstarlet v1.0.6, я все равно получаю следующее:
Entity: line 1: parser warning : xmlParsePITarget: invalid name prefix 'xml'
<?xmlstarlet version="1.0"?>
Не уверен, что это действительно имеет значение, но это похоже на предупреждение, которое можно игнорировать ... поэтому я просто вывожу stderr в / dev / null с 2>/dev/null