Есть ли способ использовать выражение for с методом .xpath
в lxml
?
Если у меня есть xml like
<DataGrid>
<row>
<description>Map to blank.</description>
<rule />
</row>
<row>
<description>The Vehicle Identification Number.</description>
<rule>PRINT VIN</rule>
</row>
</DataGrid>
Есть ли способ чтобы запустить это выражение xpath напрямую, используя lxml
for $var in //DataGrid/row return concat($var/rule/text(), '%%', $var/description/text())
Я ожидаю получить список с двумя строками в результате: ["'%%Map to blank.'", "'PRINT VIN%%The Vehicle Identification Number.'"]
Запуск root.xpath('for $var in //DataGrid/row return concat($var/rule/text(), '%%', $var/description/text())')
приводит к этой трассировке
---------------------------------------------------------------------------
XPathEvalError Traceback (most recent call last)
<ipython-input-84-a37be007325f> in <module>
----> 1 root.xpath("for $var in //DataGrid/row return concat($var/rule/text(), '%%', $var/description/text())")
src/lxml/etree.pyx in lxml.etree._ElementTree.xpath()
src/lxml/xpath.pxi in lxml.etree.XPathDocumentEvaluator.__call__()
src/lxml/xpath.pxi in lxml.etree._XPathEvaluatorBase._handle_result()
XPathEvalError: Invalid expression
В качестве альтернативы - l xml не подходящая библиотека для этого? или есть ли какая-либо другая библиотека, в которой я могу запускать эти выражения xpath непосредственно в файле XML?