【发布时间】:2015-06-17 01:43:11
【问题描述】:
我正在尝试解决 Word 的 Office Open XML 中自定义 XML 丢失的问题,但我遇到了一些障碍。
我正在研究一种方法来跟踪对共享课程计划存储库的贡献,该存储库将驻留在 Omeka 站点中。我想要做的是将每个字符包装在书签中,然后在 Word 中打开文件时将其隐藏起来。这样一来,在异地复制和粘贴内容时,token 将进行传递,然后在再次上传新文件时重新连接到原始贡献者。
为此,我的 XML 当前如下所示:
<w:p w:rsidR="00196751" w:rsidRDefault="00956712">
<w:r>
<w:t>Some sample text.</w:t>
</w:r>
<w:bookmarkStart w:id="0" w:name="_GoBack"/>
<w:bookmarkEnd w:id="0"/>
</w:p>
我需要它做的是这样的:
<w:p w:rsidR="00196751" w:rsidRDefault="00956712">
<w:bookmarkStart w:id="0" w:name="_NAME_0001_20150616_1"/>
<w:r>
<w:t>S</w:t>
</w:r>
<w:bookmarkStart w:id="1" w:name="_NAME_0001_20150616_2"/>
<w:bookmarkEnd w:id="0"/>
<w:r>
<w:t>o</w:t>
</w:r>
<w:bookmarkStart w:id="2" w:name="_NAME_0001_20150616_3"/>
<w:bookmarkEnd w:id="1"/>
<w:r>
<w:t>m</w:t>
</w:r>
<w:bookmarkStart w:id="3" w:name="_NAME_0001_20150616_4"/>
<w:bookmarkEnd w:id="2"/>
<w:r>
<w:t>e</w:t>
</w:r>
<w:bookmarkStart w:id="4" w:name="_NAME_0001_20150616_5"/>
<w:bookmarkEnd w:id="3"/>
<w:r>
<w:t xml:space="preserve"> </w:t>
</w:r>
[...]
<w:bookmarkStart w:id="17" w:name="_GoBack"/>
<w:bookmarkEnd w:id="16"/>
<w:bookmarkEnd w:id="17"/>
</w:p>
在我看来,我需要做的是在原始 w:t 项目上运行 tokenize 函数,所以我首先编写了以下 xslt:
<xsl:template match="w:t">
<xsl:value-of select="tokenize(., '.??')"/>
</xsl:template>
但是,当我这样做时,我会收到一条错误消息。我的假设是,这是因为函数没有实际的模式来标记化,因为我要求它在每个字符上分开。有没有办法使用 tokenize 函数来做到这一点?如果是这样,我该怎么做才能得到我需要的结果?谢谢!
【问题讨论】:
-
您没有想到我们可能想知道错误消息是什么?