我想使用XSLT將XML轉換爲XHTML。我想用Python來做,但我並不特別依賴任何庫。繼the directions here,我一直想這樣的:XSLT與Python的lxml:禁止變量?
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中工作。
你是怎麼找到這個錯誤的?你知道一個有用的驗證器嗎? –
@MthethewWilcoxson:好的,我看着你的Python錯誤日誌,說每行283到288有一個'禁止變量'的錯誤。然後我看着文件的第283行來找到禁止變量。這似乎是你應該需要的所有驗證。 – Borodin
謝謝@Borodin,我沒有注意到上面的錯誤輸出,希望你使用了一些superduper驗證器來找到它。 ;) –