2017-03-10 10 views
1

Solr 색인의 html 출력에서 ​​어떤 페이지가 toc 페이지인지 알아야합니다. 출력을 toc로 식별하는 메타 데이터 항목을 추가하고 싶습니다. 내가 시도한 모든 것은 모든 페이지에 그 가치를 둔다. 우리는 docbook 4.5를 사용하고 있으며, 나는 xslt에 대해 매우 익숙하다. 올바른 방향에 대한 조언은 큰 도움이 될 것입니다.문서 페이지에만 메타 데이터 값 추가

감사합니다!

답변

0

나는의 DocBook XSL 스타일 시트는 그래서 여기 못생긴 해킹이야,이 작업을 수행 할 수있는 꽤 방법을 제공합니다 생각하지 않습니다

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:import 
    href="/usr/share/xml/docbook/stylesheet/docbook-xsl/html/chunk.xsl"/> 
    <xsl:template name="head.content.generator"> 
    <xsl:param name="node" select="."/> 
    <xsl:if test="not(parent::*)"> 
     <meta name="TOC" content="This is the TOC"/> 
    </xsl:if> 
    <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/> 
    </xsl:template> 
</xsl:stylesheet> 

당신은 docbook-custom.xsl라는 이름의 파일에 그것을 넣어에서 그것을 호출 할 필요 했어 당신의 XSLT 엔진 다음 docbook-custom.xsl "사용자 정의 계층"파일 내에서

xsltproc docbook-custom.xsl BOOK.xml 

, 당신은 당신이 실제로 설치의 DocBook XSL 스타일 시트를이 곳으로 xsl:import 요소의 href 값을 설정해야합니다.

http://www.sagehill.net/docbookxsl/CustomMethods.html#CustomizationLayer에는 일반적인 세부 사항이 있습니다.

물론 위 스타일 시트의 <meta name="TOC" content="This is the TOC"/> 대신 실제 meta 요소를 추가하고 싶습니다.

이 문화 층은 실제로 사용자 정의 meta 요소로 설정 어떤이 소요될 수, 그냥 주식의 DocBook은 스스로 출력을 스타일 시트 있다는 meta name="generator" 요소 전에를 주입하기 위해 head.content.generator 템플릿을 사용자 정의합니다.

<xsl:if test="not(parent::*)">…</xsl:if>

은 기본적으로 index.html 이름 기본적으로하는이 TOC가에 포함 된 동일한 파일입니다 최초의 출력 HTML "덩어리"에서 출력에 사용자 정의 meta 요소를 스타일 시트가 발생합니다.