gpt4 book ai didi

python - XSLT 与 Python 的 lxml : Forbidden Variable?

转载 作者:行者123 更新时间:2023-11-28 22:55:38 24 4
gpt4 key购买 nike

我正在尝试使用 XSLT 将 XML 转换为 XHTML。我想用 Python 来做,但我并不特别依赖任何库。正在关注the directions here,我一直在尝试这个:

from lxml import etree

xslt_root=etree.parse('editions.xsl')
transform=etree.XSLT(xslt_root)

但是我得到这个错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "xslt.pxi", line 406, in lxml.etree.XSLT.__init__ (src/lxml/lxml.etree.c:136874)
lxml.etree.XSLTParseError: Forbidden variable

我也试过使用 this python script ,它使用 libxslt,但它给了我这些错误:

    Forbidden variable
compilation error: file editions.xsl line 283 element key
xsl:key : 'match' pattern compilation failed '//tei:div/tei:ab/tei:ptr[@type='emendation'][@ana='#folger'] |// tei:rdg[contains(@wit,$rdg)]/tei:ptr[@type='emendation'][@ana='#folger']'
Forbidden variable
compilation error: file editions.xsl line 284 element key
xsl:key : 'match' pattern compilation failed '//tei:div/tei:ab/tei:ptr[@type='emendation'][@ana='#folger'] |// tei:rdg[contains(@wit,$rdg)]/tei:ptr[@type='emendation'][@ana='#folger']'
Forbidden variable
compilation error: file editions.xsl line 285 element key
xsl:key : 'match' pattern compilation failed '//tei:div/tei:ab/tei:ptr[@type='emendation'][@ana='#texta'] |// tei:rdg[contains(@wit,$rdg)]/tei:ptr[@type='emendation'][@ana='#texta']'
Forbidden variable
compilation error: file editions.xsl line 286 element key
xsl:key : 'match' pattern compilation failed '//tei:div/tei:ab/tei:ptr[@type='emendation'][@ana='#texta'] |// tei:rdg[contains(@wit,$rdg)]/tei:ptr[@type='emendation'][@ana='#texta']'
Forbidden variable
compilation error: file editions.xsl line 287 element key
xsl:key : 'match' pattern compilation failed '//tei:div/tei:ab/tei:ptr[@type='emendation'][@ana='#textb'] |// tei:rdg[contains(@wit,$rdg)]/tei:ptr[@type='emendation'][@ana='#textb']'
Forbidden variable
compilation error: file editions.xsl line 288 element key
xsl:key : 'match' pattern compilation failed '//tei:div/tei:ab/tei:ptr[@type='emendation'][@ana='#textb'] |// tei:rdg[contains(@wit,$rdg)]/tei:ptr[@type='emendation'][@ana='#textb']'
Traceback (most recent call last):
File "transform.py", line 21, in <module>
result = style.applyStylesheet(doc, None)
AttributeError: 'NoneType' object has no attribute 'applyStylesheet'

我使用的 XSL 文件是 here .它是专业制作的,所以我认为它不会有大问题。

有没有办法覆盖这个错误,这样我就可以让我的 XML 文件在 python 中转换?或者是否有不同的方法来执行此 XSLT,这样我就不会一直出错?在浏览器 (Firefox) 中进行转换工作正常,但我无法在 Python 中进行转换。

最佳答案

恐怕您的承包商让您失望了。 XSLT 规范在 section 12.2 中说明了这一点:

It is an error for the value of either the use attribute or the match attribute to contain a VariableReference.

因此 editions.xsl 第 283 到 288 行中的 key 元素不是有效的 XSLT,因为它们的 match 属性使用路径步骤 tei:rdg[contains(@wit,$rdg)].

幸运的是,$rdg 是一个在第 183 行定义为 'lemma' 的简单常量,因此如果您将此路径步骤的所有六个实例都更改为 tei:rdg[contains(@wit,'lemma')] 相反,它应该对你有用。

关于python - XSLT 与 Python 的 lxml : Forbidden Variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16638529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com