首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DITA XSLT -将meta标记作为关键字编写

DITA XSLT -将meta标记作为关键字编写
EN

Stack Overflow用户
提问于 2014-04-04 02:50:41
回答 1查看 343关注 0票数 2

我正在使用DITA-OT (h2d.xsl)中的XSLT将HTML元关键字标记转换为它们的DITA等效项,例如在HTML中:

<meta name="MS-HAID" content="cake" /> <meta name="MS-HAID" content="pie" /> <meta name="MS-HAID" content="tart" /> <meta name="search-keywords" content="creme brulee" />

我希望它显示为DITA关键字,即

代码语言:javascript
复制
<keywords>
<keyword>cake</keyword>
<keyword>pie</keyword>
<keyword>tart</keyword>
<keyword>creme brulee</keyword>
</keywords>

我可以写出每个关键字,但每个实例也包含关键字元素。我需要帮助了解选择什么,所以关键字是只写一次。下面是我目前使用的XSLT:

代码语言:javascript
复制
<xsl:template name="keyword-match" match="meta" mode="outofline"> 
<keywords>
  <keyword><xsl:value-of select="@content" /></keyword>
  </keywords>
  </xsl:template>

非常感谢。我试过无数种不同的方法,但我就是想不通。

--更新

基于@tobias-klevenz示例,我提出了以下解决方案。因为在关键字标签之前还有其他的meta标签,所以我必须先找到那些。这将定位第一个meta标记,然后为每个与name参数正确匹配的后续同级写入关键字。

代码语言:javascript
复制
<xsl:template match="/html/head[1]/meta[1]" mode="outofline">
<keywords>
  <xsl:for-each select="following-sibling::node()[@name='MS-HAID' or @name='search-keywords' or @name='keywords']">
    <keyword><xsl:apply-templates select="@content" /></keyword>
  </xsl:for-each>
        </keywords>

EN

回答 1

Stack Overflow用户

发布于 2014-04-04 02:57:41

您需要用<keywords>包装选择元的apply-templates

代码语言:javascript
复制
<xsl:template match="html">
    <keywords>
        <xsl:apply-templates select="meta" mode="outofline"/>
    </keywords>

...
</xsl:template>

<xsl:template name="keyword-match" match="meta" mode="outofline"> 
    <keyword><xsl:value-of select="@content" /></keyword>
</xsl:template>

替代方案:

代码语言:javascript
复制
<!-- match first meta -->
<xsl:template name="keyword-match" match="meta[1]" mode="outofline">
    <keywords> 
        <keyword><xsl:value-of select="@content" /></keyword>
        <xsl:apply-templates select="following-sibling::meta"/>
    </keywords>
</xsl:template>
<!-- match following meta -->
<xsl:template name="keyword-match" match="meta[position() &gt; 1]" mode="outofline"> 
    <keyword><xsl:value-of select="@content" /></keyword>
</xsl:template>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22846407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档