Python,如何获取xsl样式表的参数?

时间:2018-06-27 12:58:05

标签: python regex xslt

我想获取一个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 :(得分:1)

您可以使用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文件。