Python, как получить параметры таблицы стилей xsl?

97
12

Я хочу получить параметры файла xsl который используется для преобразования xml файла в файл csv. Я особенно хочу получить эту строку:

<xsl:param name="sep" select="','"/>

Что я пробовал:

 with open(file, "r") as file:
content = file.readlines()
regex = re.compile(r"""<xsl:param +name *= *"[0-9A-Za-z]+" +select *= *"\\'.\\'"/>""")
for line in content:
print(line)
match = regex.match(line)
if match:
pass
# do something

Я пробовал разные регулярные выражения, но ничего не получилось. Я использую python 3.6 и lxml чтобы преобразовать его.

РЕДАКТИРОВАТЬ файл XSL:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:param name="sep" select="','"/>
<xsl:param name="test" select="','"/>
<xsl:param name="test2" select="','"/>

<xsl:template match="/">title,artist,country,company,price,year
<xsl:for-each select="catalog/cd">
<xsl:value-of select="concat('"', title, '"', $sep, '"', artist, '"', $sep, '"',
country, '"', $sep, '"', company, '"', $sep, price, $sep, year, '
')"/>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

спросил(а) 2021-01-19T17:34:41+03:00 2 месяца, 3 недели назад
1
Решение
62

Вы можете сделать это, используя xml парсер. Как это:

Предположим, что ваш файл test.xsl. Тогда вы могли бы сделать:

import xml.etree.ElementTree as ET
tree = ET.parse('test.xsl')
root = tree.getroot()
match = [c.attrib for c in root if 'param' in c.tag]

Затем match выглядит следующим образом:

>>> print(match)
[{'name': 'sep', 'select': "','"}, {'name': 'test', 'select': "','"}, {'name': 'test2', 'select': "','"}]

Я предполагаю, что вам не нужна целая строка, а только атрибуты между тегами <>. Наличие этих атрибутов позволит вам создать файл csv который вам нужен.

ответил(а) 2021-01-19T17:34:41+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема