lxml で CDATA を扱うには適切な宣言でパーサーを作成する必要がありますが、XSLT はどうでしょうか。例えば:
from lxml import etree
parser = etree.XMLParser(strip_cdata=False)
tree = etree.parse('sample_with_cdata.xml', parser)
transform = etree.XSLT(etree.parse('dupe.xsl'))
xml_out = transform(tree)
xml_out.write('processed.xml')
lxml XSLT プロセッサを介して CDATA を含む xml ファイルを処理すると、すべての CDATA が削除されます。XSLT プロセッサに CDATA をそのまま残すように指示するにはどうすればよいですか?
PS。参考までに、同じパーサーを追加しetree.XSLT
ても結果は変わりません