Как отфильтровать элементы определенного типа, которые не имеют атрибута с магическим значением, и сохранить остальную часть документа? Все это с использованием xmlstarlet
?
То, что я должен далеко, это:
cat << EOF > database.xml
<?xml version="1.0"?>
<database>
<some name="A" />
<some name="B" />
<some name="C" />
<text>this is some text to be applied...</text>
<project>
<test deeper="structure"/>
</project>
</database>
EOF
и
xmlstarlet sel -t -m "*" -c "*[not(self::some[@name != 'A'])]" database.xml
урожаи
<some name="A"/><text>this is some text to be applied...</text><project>
<test deeper="structure"/>
</project>
Но это скрывает мои драгоценные <database>
tag
. Помимо отступа, что не является проблемой... И не работает, когда <some>
не являются прямыми потомками <database>
, например, дочерними элементами <project>
.
Я хочу получить базу данных как она есть, но все <some>
удалены, кроме той, что называется A
:
<database>
<some name="A" />
<text>this is some text to be applied...</text>
<project>
<test deeper="structure"/>
</project>
</database>
Привет
<some> is not direct descendant of <database>...
- person SIslam   schedule 22.10.2015