当libxmp不能采用建议的前缀时,是否可以强制注册名称空间前缀?

时间:2015-04-23 16:19:05

标签: python xmp

我使用python-xmp-toolkit处理xmp数据,这是示例C库的python包装。

我们有一个内部命名空间uri,我们在这些数据中使用以" ns:oursite.com"开头。而不是" http:oursite.com"或类似的东西。当我尝试使用register_namespace method插入我们的命名空间时:

  

new_xmp.register_namespace(" ns:oursite.com/stuff"," foo")

它吐出一个默认值" ns2:"前缀表示它拒绝注册我建议的前缀。

我想它会对uri这个名字进行某种验证。有没有办法强迫这个?我很难在此代码中推断出该做什么,因为它是C的包装。

1 个答案:

答案 0 :(得分:0)

可能有另一个命名空间在相同的前缀下注册但具有不同的URI。不幸的是,Exempi既不允许重复的命名空间也不允许重复的前缀,这是对底层Adobe XMP SDK的限制。

我找到了一个可以尝试确认的解决方法。 Exempi库可以通过Python绑定重新加载,但是有很短的时间(对我来说约100μs),在此期间访问Exempi 的另一个线程将崩溃。跑吧:

from libxmp import exempi

# Register a test namespace
exempi.register_namespace("http://test.com/test", "test")

# Release Exempi. Any XMP object initialized *before* this will be
# invalid and will segfault the interpreter...
exempi.terminate()

# Exempi is not initialized there, the Python interpreter will segfault
# if it is used. We have to call init() before being able to use it again.
exempi.init()

# Now you can register another URI with the same prefix
exempi.register_namespace("http://test.com/test/add", "test")