Python, как получить параметры таблицы стилей xsl?
Я хочу получить параметры файла 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>
Вы можете сделать это, используя 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
который вам нужен.