Рассмотрим XSLT , специализированный язык, предназначенный для преобразования XML файлов с использованием его функций substring-before
и substring-after
. Сторонний модуль Python, lxml
, может запускать сценарии XSLT 1.0. А поскольку XSLT является переносимым, его можно запускать на других языках или исполняемых файлах за пределами Python:
XSLT (сохранить как файл .xsl, спец. xml файл)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Test_example">
<xsl:copy>
<xsl:value-of select="concat(substring-before(substring-after(., '/'), '-'),
'.',
substring-after(., '.'))"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Python
import lxml.etree as et
xml = et.parse('Input.xml')
xsl = et.parse('Script.xsl')
transformer = et.XSLT(xsl)
new_xml = transformer(xml)
# PRINT TO CONSOLE
print(new_xml)
# SAVE TO FILE
with open('Output.xml', 'wb') as f:
f.write(new_xml)
Выход
<?xml version="1.0" encoding="UTF-8"?>
<example>
<Test_example>Testing.jpg</Test_example>
<Test_example>Testing245.ts</Test_example>
</example>