首页 > 解决方案 > 如何使用 xsl 表达式在 ditamap 中获取 pubtitle

问题描述

使用 xsl 表达式 MY Input XML Dita 映射文件在下面的 ditamap 中获取 pubtitle 值

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pubmap
  PUBLIC "urn:pubid:com.sam.doctypes:dita:pubmap" "pubmap.dtd">
<pubmap xml:lang="en-US">
  <pubtitle>
    <mainpubtitle outputclass="book">Sample Word</mainpubtitle>
  </pubtitle>
  <topicref href="topics/topic_1.dita">
    <topicmeta>
      <navtitle>Ram-Files-Raj (RFR)</navtitle>
      <metadata/>
    </topicmeta>
  </topicref>
  <topicref href="topics/topic_2.dita">
    <topicmeta>
      <navtitle>Files-Sampletitle (FST)</navtitle>
      <metadata/>
    </topicmeta>
  </topicref>
</pubmap>

我的 topic_1.dita 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE topic
  PUBLIC "urn:pubid:com.sam.doctypes:dita:topic" "topic.dtd">
<topic id="topic_1" xml:lang="en-US" outputclass="Ram-Files-RajRFR"><title>Ram-Files-Raj (RFR)</title></topic>

我的 topic_2.dita 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE topic
  PUBLIC "urn:pubid:com.sam.doctypes:dita:topic" "topic.dtd">
<topic id="topic_2" xml:lang="en-US" outputclass="Files-SampletitleFST"><title>Files-Sampletitle (FST)</title></topic>

对于获取主题标题,我使用如下 xsl 变量:

<xsl:variable name="maintitle"><xsl:apply-templates select="/*[contains(@class, ' topic/topic ')]/*[contains(@class, ' topic/title ')]" mode="text-only"/></xsl:variable>

与上述格式一样,我想获取此元素 mainpubtitle outputclass="book" 值的 diamap 主标题。

请给我建议。

标签: xmlxsltditadita-ot

解决方案


也许这可以帮助你:

<xsl:variable name="maintitle">
  <xsl:apply-templates select="//*[contains(@outputclass, 'book')]"/>
</xsl:variable>

或者,如果您不想使用它,也许这对您没问题:

<xsl:variable name="maintitle">
   <xsl:value-of select="//mainpubtitle[@outputclass = 'book']/text()"/>
</xsl:variable>

推荐阅读