2011-12-19 1 views
1

저는 산소 xml 편집기와 함께 docbook5를 사용하고 있습니다. 저는 XSLTproc과 FOP를 통해 PDF로갑니다. 꼬리말에 나타나는 "에디션"태그의 가치를 얻으려고 시도하고 있지만 올바르게 작동하지 않습니다.Docbook 5 XSLT : "edition"엘리먼트의 질의와 반환 값이 실패했습니다

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE book 
<book version="5.0" xmlns="http://docbook.org/ns/docbook" 
    xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" 
    xmlns:svg="http://www.w3.org/2000/svg" xmlns:m="http://www.w3.org/1998/Math/MathML" 
    xmlns:html="http://www.w3.org/1999/xhtml" xmlns:db="http://docbook.org/ns/docbook"> 
     <info> 
     <title>User Manual</title> 
     <edition>Ed. 123456</edition> 
     </info> 
</book> 

그리고의 바닥 글 템플릿 : 다음의 DocBook 5 소스의 주어

제대로

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0"> 

<xsl:template name="footer.content"> 
    <xsl:param name="pageclass" select="''"/> 
    <xsl:param name="sequence" select="''"/> 
    <xsl:param name="position" select="''"/> 
    <xsl:param name="gentext-key" select="''"/> 

    <fo:block> 
    <!-- sequence can be odd, even, first, blank --> 
    <!-- position can be left, center, right --> 
    <xsl:choose> 

     <xsl:when test="$sequence = 'odd' and $position = 'left'"> 
     <fo:retrieve-marker retrieve-class-name="section.head.marker" 
         retrieve-position="first-including-carryover" 
         retrieve-boundary="page-sequence"/> 
     </xsl:when> 

     <xsl:when test="$sequence = 'odd' and $position = 'center'"> 
     <xsl:value-of select="ancestor-or-self::book/info/edition"/> 
     </xsl:when> 

    </xsl:choose> 
    </fo:block> 
</xsl:template> 
</xsl:stylesheet> 

값을 반환 내가 도구 모음에서 oxygenxml의 XQuery를 섹션에서 쿼리가 아니라 문서를 PDF로 처리합니다. 어떤 도움이라도 최고 일 것입니다!

답변

1

DocBook 네임 스페이스를 고려해야합니다. 규약에 따라 네임 스페이스 URI는 스타일 시트의 접두어 d에 매핑됩니다. 귀하의 사용자 지정 파일에서이 작업을 수행합니다 :

  1. 루트 <xsl:stylesheet> 요소에

    xmlns:d="http://docbook.org/ns/docbook" 
    exclude-result-prefixes="d" 
    

    를 추가합니다.

  2. 변경

    <xsl:value-of select="ancestor-or-self::book/info/edition"/> 
    

    <xsl:value-of select="ancestor-or-self::d:book/d:info/d:edition"/>