如何专门化链接元素(相关链接)

时间:2016-01-13 12:12:10

标签: dita dita-ot

我想基于link元素创建新元素。对于作者而言,这比使用roleotherrole属性指定链接角色更为舒适。

不幸的是,DITA-OT 2.2.1因此消息失败:

    Required item type of result of template related-links:link. 
    is element(Q{}link); supplied value has item type
    element(Q{}myelement)

这是一种有效的方法,还是应该坚持otherrole

更新1: 错误发生在related-links.xsl

<!-- Ungrouped links have the default-mode 
     template applied to them. (Can be overridden.) -->
<xsl:template match="*[contains(@class, ' topic/link ')]" 
              mode="related-links:link" 
              name="related-links:link."
              as="element(link)">
  <xsl:sequence select="."/>   <!--- error points to this line -->
</xsl:template>

1 个答案:

答案 0 :(得分:1)

这显然是XSLT实现中的一个错误,因为您不能对任何DITA处理使用直接标记名检查,因为它会在您看到专业化时失败。

附注:假设您的专业化是一个域,域的名称应按照DITA命名约定以“-d”结尾:

class =“ - topic / link mylink -d / mylinktype”

这是一个惯例而非硬性要求,但能够查看@class值并了解某个元素是来自域还是结构特化是很有用的。