你能在 Dita-ot 插件中从 XSL 访问 dita map keydef 变量吗

Posted

技术标签:

【中文标题】你能在 Dita-ot 插件中从 XSL 访问 dita map keydef 变量吗【英文标题】:Can you access dita map keydef variables from XSL in Dita-ot plugin 【发布时间】:2019-03-09 05:11:44 【问题描述】:

我知道可以访问 keydef

<map>
    <title>variables</title>
    <keydef keys="keyName"><topicmeta><keywords><keyword>Text API</keyword></keywords></topicmeta></keydef>
</map

带有 keyref 语句

<keyword keyref="keyName"/>

是否可以从 dita-ot 管道中的 xsl 文件访问 keydef

我尝试了以下

  <xsl:value-of select="//keydef[@keys eq 'keyName']/topicmeta/keywords/keyword/text()"/>

  <xsl:value-of select="keyword[@keyref eq 'copyright']"/>

但是这些都不起作用。

问候 联系方式

【问题讨论】:

【参考方案1】:

我使用了以下内容:

<xsl:value-of select="$map/*[contains(@class,' mapgroup-d/keydef ') and lower-case(@keys) = ''keyName'']/topicmeta/keywords/keyword/node()"/>

$map 被定义为

<xsl:variable name="map" select="//opentopic:map"/>

【讨论】:

那行得通.. 我必须添加第二个斜杠 $map//* 可能在 dita 2.0.1 版本中有所不同? dita-ot 3.4.1:不起作用... $map 似乎根本不包含 keydef 元素。最终,我成功打开了原始 .ditamap:document(/*/@xtrf)//keydef[@keys='keyName']/topicmeta/...

以上是关于你能在 Dita-ot 插件中从 XSL 访问 dita map keydef 变量吗的主要内容,如果未能解决你的问题,请参考以下文章

你能在 iOS 中从硬件印刷机启动应用程序吗?

如何通过 XSL FO 将小型大写字母应用于字符串

从 ditamap 创建 MERGED 文件,然后过滤它

你能在不调用 org.freedesktop.DBus.Properties.Get 的情况下检索 D-Bus 属性吗?

将 xsl:apply-templates 转换为字符串值以用作 if 参数

在 DITA-OT ibmUtilitiesDomain.ent