Привязка данных OpenXML не работает с пространством имен - PullRequest
0 голосов
/ 05 июня 2019

У меня есть документ 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.

Однако, если я добавлю пространство имен в пользовательский XML, он больше не будет работать.

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

Я попытался изменить привязку данных следующим образом:

<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 равновсе еще не извлекается.

Что можно сделать, чтобы привязка данных работала с пространством имен?

...