Xslt 在DocBook中引用自定义元素

Xslt 在DocBook中引用自定义元素,xslt,docbook,Xslt,Docbook,又是一个周末,是时候进一步玩转DocBook:-) 我将自定义元素添加到DocBook文档中,并通过XSLT转换将它们转换为FO和PDF。这一切都很好。例如,我有一个自定义章节元素,如: <MyChapter xml:id="mychapter"> <title>Test</title> </MyChapter 试验 通常DocBook外部参照引用逻辑非常简单。如果有人试图用人类的语言来说明这个逻辑,那么它会是这样的:将链接放在object1和xml

又是一个周末,是时候进一步玩转DocBook:-)

我将自定义元素添加到DocBook文档中,并通过XSLT转换将它们转换为FO和PDF。这一切都很好。例如,我有一个自定义章节元素,如:

<MyChapter xml:id="mychapter">
<title>Test</title>
</MyChapter

试验

通常DocBook外部参照引用逻辑非常简单。如果有人试图用人类的语言来说明这个逻辑,那么它会是这样的:将链接放在
object1
xml:id1
(使用
linkend
)之间,并从
object2
获取生成的文本,其中
xml:id2
(使用
endterm
)作为链接文本

因此,我建议您将mychapter标题作为参考文本。我将按以下方式更改您的样品:

<MyChapter xml:id="mychapter">
<title xml:id="mychapter_title">Test</title>
</MyChapter>

试验
链接片段:

<xref linkend="mychapter" endterm="mychapter_title"/>

您将通过章节标题中的参考文本(链接文本)获得章节的参考(链接本身)

此模式当然适用于默认元素,如果您使用自定义
mychapter
采用的默认xsl模板,则应适用于自定义元素


这个逻辑在这里描述得非常好:

xml:id
不是DocBook或XSLT所特有的。另外,您还没有解释“不起作用”的具体情况,是否有任何错误,如果有,是哪一个错误,在哪一个上下文中(XML验证、XSLT样式表执行)。对于DocBook和XSLT,如果您准确地解释您正在使用的版本,它会有所帮助。文档会被处理,但在生成的PDF中,引用被解析为“?”。我使用的是DocBook版本5。那么DocBook样式表的XSLT版本是什么呢?
xref
元素上的属性不应该被称为
linkend
,而不是
linked
?这很好用!谢谢你给我指出这个方向。我想知道这些链接是否也可能在PDF文档中显示为超链接,以便用户可以单击它们。还有什么想法吗?@Norbert,请把你的问题细化一下。文档内的ref、文档外的ref、甚至连到refs文本本身的超链接(uri)都有不同之处:超链接本身(uri)连接到refs文本本身,以提供任何打印文档的脱机用户在没有计算机的情况下使用它(即稍后在地址栏中手动打印url).修正打字错误:即,稍后在浏览器地址栏中手动键入url。抱歉,输入得不准确。在这种情况下,对“我的自定义元素”的引用在同一文档中结束。@norbert,它适用于默认外部参照。注意:如果外部参照目标在同一页上(即,外部参照源和外部参照目标在同一页上)-看起来好像什么都没有发生。但这只是一种感觉,因为pdf查看器在单击外部参照后不会移动到任何其他页面。
<xsl:apply-templates select="." mode="object.xref.markup">
<MyChapter xml:id="mychapter">
<title xml:id="mychapter_title">Test</title>
</MyChapter>
<xref linkend="mychapter" endterm="mychapter_title"/>