OpenXML DataBinding不适用于名称空间

问题描述 投票:0回答:1

我有一个Word文档,其中有一个内容控件XML。

这是来自document.xml的内容控件的代码:

<w:sdt>
    <w:sdtPr>
        <w:alias w:val="contentcontrol1"/>
        <w:tag w:val=""/>
        <w:id w:val="-1926948802"/>
        <w:showingPlcHdr/>
        <w:dataBinding w:xpath="/Root[1]/Node[1]" w:storeItemID="{C2F77B86-6131-4922-803B-54FACB654C16}"   />
        <w15:appearance w15:val="tags"/>
        <w:text/>
    </w:sdtPr>
    <w:sdtContent>
        <w:p w14:paraId="04EB220B" w14:textId="0D23CD24" w:rsidR="009A2940" w:rsidRDefault="00C15D80"/>
    </w:sdtContent>
</w:sdt>

这是自定义Xml部件的代码(来自CustomXml/Items3.xml:]

<?xml version="1.0" encoding="utf-8"?>
<Root xmlns="">
    <Node>VALUE1</Node>
</Root>

并且数据绑定运行良好:当我打开Word文档时,内容控件显示值VALUE1。

但是,如果我将名称空间添加到Custom Xml,它将不再起作用。

<?xml version="1.0" encoding="utf-8"?>
<Root xmlns="http://example">
    <Node>VALUE1</Node>
</Root>

我试图像这样更改dataBinding:

<w:dataBinding w:xpath="//ns0:Root[1]/Node[1]" w:storeItemID="{C2F77B86-6131-4922-803B-54FACB654C16}"  w:prefixMappings="xmlns:ns0='http://example'" />
<w:dataBinding w:xpath="http://example:Root[1]/Node[1]" w:storeItemID="{C2F77B86-6131-4922-803B-54FACB654C16}" />
<w:dataBinding w:xpath="[namespace-uri()='http://example']/Node[1]" w:storeItemID="{C2F77B86-6131-4922-803B-54FACB654C16}" />

但是仍未检索到值VALUE1。

如何使dataBinding与名称空间一起使用?

data-binding openxml office-js openxml-sdk office-addins
1个回答
0
投票
下面的单元测试表明,只有在使用命名空间前缀(例如“ ex”)的情况下,您才能将w:sdt元素绑定到具有XML命名空间(例如“ http://example.com”)的自定义XML元素。 )放在w:prefixMappings元素的w:xpathw:dataBinding属性中。

不过,您的自定义XML元素不需要名称空间前缀。因此,以下两个XML文档都将起作用:

© www.soinside.com 2019 - 2024. All rights reserved.