У меня есть документ XML, фрагмент строка из которых может выглядеть следующим образом:Выберите все брат и сестра (включая текст) комментарий в XPath
<p>Some text <!--a comment --> some more text <b>some bold text</b> something else etc</p>
Я хотел бы, чтобы выбрать свой комментарий на основе его текста, но также все последующие «брачные» элементы. В этом примере я знаю, что могу получить комментарий с помощью «// comment() [. = "комментарий"] '.
Как я могу получить результат: «еще один текст полужирный текст что-то еще и т. Д.»? (остальная часть братьев и сестер внутри тега абзаца)
В случае, если это имеет значение, я использую python и etree для разбора.
EDIT:
Мой тест XML в полном объеме:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<p>A paragraph<!--A comment--><b>test</b>A line break</p>
</root>
Мой тест XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<xsl:copy-of select='//comment()/following-sibling::node()'/>
</xsl:template>
</xsl:stylesheet>
Результат:
<?xml version="1.0" encoding="UTF-8"?>
или, в Python, используя lxml, просто объект «Нет».
EDIT # 2:
Мой плохо - принятый ответ хорошо работает!
Спасибо за ответ; Однако мне нужно выбрать только элементы/после/конкретного комментария. (Мне еще не удавалось использовать комментарий как предыдущий узел.) –
А, я отредактировал ответ, чтобы ответить на этот вопрос. –
Спасибо, хотя я немного сумасшедший, потому что это именно то, что я пытался. Отредактировано выше, чтобы продемонстрировать проблему. –