namespace prefix not matching in XSLT

Bug #1766955 reported by Mark Hall on 2018-04-25
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
lxml
Undecided
Unassigned

Bug Description

Python : sys.version_info(major=3, minor=6, micro=3, releaselevel='final', serial=0)
lxml.etree : (4, 2, 1, 0)
libxml used : (2, 9, 8)
libxml compiled : (2, 9, 8)
libxslt used : (1, 1, 32)
libxslt compiled : (1, 1, 32)

I have the following namespaced XML:

<?xml version="1.0"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0" xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:guz="http://gutzkow.de">
<teiHeader><fileDesc>

<titleStmt><title>Die Sterbecassirer (Text)</title><author>Karl Gutzkow</author><respStmt xml:id="GertVonhoff"><resp>Digital edition</resp><name>Gert Vonhoff</name></respStmt><respStmt xml:id="MarkMichaelHall"><resp>TEI transform</resp><name>Mark M Hall</name></respStmt></titleStmt>
<publicationStmt><distributor>Editionsprojekt Karl Gutzkow</distributor></publicationStmt></fileDesc><sourceDesc><bibl>Die Sterbecassirer. Bambocciade. In: Novellen von Karl Gutzkow. Bd 1, Hamburg: Hoffmann und Campe, 1834, S. 107-128. (Rasch 2.4.1.3)</bibl></sourceDesc><revisionDesc><change when="1999-05" who="#GertVonhoff">Erstfassung</change><change when="1999-08" who="#GertVonhoff">Fassung 1.2 in Berlin</change><change when="2000-02" who="#GertVonhoff">Fassung 1.3 in Wittenberg</change><change when="2000-06" who="#GertVonhoff">Fassung 1.5 in Birmingham: erste Testnetzfassung</change><change when="2000-12" who="#GertVonhoff">Fassung 1.6 in Birmingham/Münster: EKG geprüft</change><change when="2001-08" who="#GertVonhoff">Fassung 1.7 in Münster/Exeter: Seitenzählung umgestellt auf Novellenband</change><change when="2002-10-15" who="#GertVonhoff">Fassung 1.7a: Kopf- und Fussbereich für neues Websitelayout angepasst</change><change when="2018-04-25" who="#MarkHall">Fassung 1.8: Auf TEI umgestellt</change></revisionDesc></teiHeader>
</TEI>

and have been trying to run the following XSLT transform using LXML:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:guz="http://gutzkow.de" version="1.0">
  <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>

  <xsl:template match="/">
    <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html>]]></xsl:text>
    <html>
      <xsl:apply-templates/>
    </html>
  </xsl:template>

  <xsl:template match="tei:teiHeader">
    <head>
      <meta charset="utf-8"/>
      <xsl:apply-templates/>
    </head>
  </xsl:template>
</xsl:stylesheet>

The result is that the <xsl:template match="tei:teiHeader"> does not match the relevant element in the XML document and nothing is transformed. If I run the same using "xsltproc" then I get the expected transformation.

scoder (scoder) wrote :

Seems to work for me:

>>> xslt = "..."
>>> xml = "..."
>>> from lxml import etree
>>> transform = etree.XSLT(etree.fromstring(xslt))
>>> print(str(transform(etree.fromstring(xml))))
<!DOCTYPE html><html xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:guz="http://gutzkow.de">
<head><meta charset="utf-8"/>

Die Sterbecassirer (Text)Karl GutzkowDigital editionGert VonhoffTEI transformMark M Hall
Editionsprojekt Karl GutzkowDie Sterbecassirer. Bambocciade. In: Novellen von Karl Gutzkow. Bd 1, Hamburg: Hoffmann und Campe, 1834, S. 107-128. (Rasch 2.4.1.3)ErstfassungFassung 1.2 in BerlinFassung 1.3 in WittenbergFassung 1.5 in Birmingham: erste TestnetzfassungFassung 1.6 in Birmingham/Münster: EKG geprüftFassung 1.7 in Münster/Exeter: Seitenzählung umgestellt auf NovellenbandFassung 1.7a: Kopf- und Fussbereich für neues Websitelayout angepasstFassung 1.8: Auf TEI umgestellt</head>
</html>

scoder (scoder) on 2018-05-02
Changed in lxml:
status: New → Invalid
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers