我需要分配一个变量:
title =[(meiHead.find('.//mei:title[@xml:lang="EN"]', ns).text) )]
但是我得到一个错误,谓词的语法
mei:title[@xml:lang="EN"]'
无效。这是BCS。将“ lang”分配给“ xml”命名空间。
我尝试过:
声明名称空间:
ns = {'mei':'http://www.music-encoding.org/ns/mei','xml':'http://www.w3.org/XML/1998/namespace'}
在不同的语法变体中明确使用它:
title = mei:title [@ {http://www.w3.org/XML/1998/namespace} lang =“ EN”]
把它弄出来:
mei:title [@ * [local-name()=“ lang”和。 =“ EN”]和@ type =“ unit”]
有一篇文章恰好描述了此问题,但仍不清楚符合名称空间的工具是什么,或者您如何使用 convinience常量:
还要注意,属性 xml:lang 被显示为绑定到名称空间http://www.w3.org/XML/1998/namespace,尽管没有这样的名称。 命名空间已声明。这是因为这是一个特殊的名称空间 隐式声明为绑定到前缀xml;一定是 由符合名称空间的工具处理。还有一个 Python DOM接口中的便利常量,用于此特殊功能 命名空间xml.dom.XML_NAMESPACE。