设置自定义 Open XML 元数据
背景
Open XML 中的自定义属性存储在 docProps/custom.xml
中,看起来像这样(对于字符串):
<property fmtid="{xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxxxx}" pid="2" name="Key">
<vt:lpwstr>Value</vt:lpwstr>
</property>
Open XML (v1) 规范没有给出很多有关 fmtid
和 pid
的详细信息。它仅在第 7.3.2.2 节中说明:
[PID] 将自定义属性与 OLE 属性唯一关联
问题
我对规范的模糊解释有几个问题:
- 什么是 OLE 属性?
- 是否可以在 custom.xml 中添加新的 OpenXML 属性而不存储 OLE 属性?
pid
是否需要对每个fmtid
是唯一的,或者对于 custom.xml 中的所有fmtid
是唯一的- 为什么我自己的属性不需要在custom.xml中出现在Word中吗?
Background
Custom properties in Open XML are stored in docProps/custom.xml
and look like this (for a string):
<property fmtid="{xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxxxx}" pid="2" name="Key">
<vt:lpwstr>Value</vt:lpwstr>
</property>
The Open XML (v1) specification doesn't give many details about fmtid
and pid
. It merely states in section 7.3.2.2:
[PID] Uniquely relates a custom property with an OLE property
Questions
I have a few questions about the specification's vague explanation:
- What are OLE properties?
- Is it possible add a new OpenXML property in custom.xml without storing an OLE property?
- Does
pid
need to be unique perfmtid
, or unique for allfmtid
s in custom.xml - Why don't my own properties in custom.xml appear in Word?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我将根据我通过实验发现的内容部分回答我自己的问题。
OLE 属性是存储在替代文件流中的 NTFS 扩展属性。可以使用 DSOfile.dll 查看或修改它们。请参阅此 StackOverflow 问题。
可以通过修改custom.xml来添加自定义属性。仅当 fmtid 属于 Word 或加载的 COM 加载项时,它们才会出现在 Word 的属性对话框中。
I'm going to partially answer my own question based on what I discovered by experimenting.
OLE properties are NTFS extended attributes that are stored in alternative file streams. They can be viewed or modified with DSOfile.dll. See this StackOverflow question.
Custom properties can be added by modifying custom.xml. They will only appear in Word's properties dialog if the fmtid belongs to Word or a loaded COM add-in.