Python, как получить параметры таблицы стилей xsl? - PullRequest
0 голосов
/ 27 июня 2018

Я хочу получить параметры файла 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('&quot;', title, '&quot;', $sep, '&quot;', artist, '&quot;', $sep, '&quot;',
country, '&quot;', $sep, '&quot;', company, '&quot;', $sep, price, $sep, year, '&#10;')"/>
</xsl:for-each>
  </xsl:template>

</xsl:stylesheet>

1 Ответ

0 голосов
/ 27 июня 2018

Вы можете сделать это, используя 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...