[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [docbook] Select chunk content from user.head.content template
Thanks Bob, I never though of using the chunk template :P The for-each selector ended up as <xsl:for-each select=".//indexterm[$is.chunk= 1] |(indexterm|*[not(self::section or self::book)]//indexterm)[$is.chunk = 0]"> same as yours, but excluding book nodes and reversed the is.chunk selector exclusions. Does this seem logical by you? :: Morten Engelhardt Olsen ________________________________________ From: Bob Stayton [bobs@sagehill.net] Sent: Tuesday, March 19, 2013 21:21 To: Olsen, Morten Engelhardt; docbook@lists.oasis-open.org Subject: Re: [docbook] Select chunk content from user.head.content template Hi Morten, There is a utility template named "chunk" that can be used to test if a given node is a chunk element. You could use it to check the first child section: <xsl:variable name="chunk.children"> <xsl:call-template name="chunk"> <xsl:with-param name="node" select="section[1]"/> </xsl:call-template> </xsl:variable> The $chunk.children will have a value of 1 if that section is a chunk, or 0 otherwise. Then you can use that in the select statement: <xsl:for-each select=".//indexterm[$chunk.children = 0] | (indexterm |*[not(self::section)]//indexterm)[$chunk.children = 1]"> The select statement combines two parts that are mutually exclusive. The first part selects all the indexterms, but qualifies them with a boolean expression to exclude all of them if $chunk.children = 1. The second part selects indexterms that are either immediate children of the current section, or a descendant of any child element that is not a section. This part is qualified by the opposite boolean expression, so only one or the other part is used. I didn't test this, so let me know if it doesn't work for you. There might be a glitch that I'm not seeing. Bob Stayton Sagehill Enterprises bobs@sagehill.net -------------------------------------------------- From: "Olsen, Morten Engelhardt" <Morten_engelhardt.Olsen@atmel.com> Sent: Tuesday, March 19, 2013 11:14 AM To: <docbook@lists.oasis-open.org> Subject: [docbook] Select chunk content from user.head.content template > As you may or may not know, I have started on cleaning our internal > Microsoft Help Viewer 1.0 transformation up to a point where it is > releasable to the public. However, in this effort I have come across some > issues. > > Some background; > The Microsoft HV1 format is the replacement for chm and hlp files. It is > based off xhtml with a set of header tags an some special magic. The set > of html and other content are zipped into a zip volume with the mshc > extension (Microsoft Help Collection or similar ☺). This file (called a > package) is accompanied by a manifest file with the extension msha. This > file can point to multiple packages, and this collection of packages is > called a book. > > Now to my first found issue; > The header for a html file needs to contain a set of special meta tags. > This is what the help system uses to generate positional/relational > information, indexing and content description. Some of these tags needs to > contain information of the current chunk (e.g a set of <meta > name="Microsoft.Help.F1" content="myTopic" /> for all F1 content in the > current chunk). Currently we use indexterms with IDs to mark content for > F1 resolution, and the following template is called from > “user.head.content”: > > <xsl:template name="mshelp3.help.f1"> > <xsl:for-each select="self::*//indexterm"> > <xsl:if test="@id"> > <meta xmlns="http://www.w3.org/1999/xhtml" > name="Microsoft.Help.F1"> > <xsl:attribute name="content"> > <xsl:value-of select="@id" /> > </xsl:attribute> > </meta> > </xsl:if> > </xsl:for-each> > </xsl:template> > > However, the “self::*//indexterm” matches all indexterms below self, but > with a chunk depth of e.g.4, the content of self may be chunked into > separate files. So how can I select the content of only the current chunk > from “user.head.content”? The current situation is that F1 ids are flowing > up in the chunking tree and usually hits on a higher level than were the > actual section exists. > > > Morten Engelhardt Olsen > Software Engineer / Tools Group / Atmel Corporation > Tel: (+47) 930 94 593 > > The information contained in this email message may be privileged, > confidential and/or protected from unauthorized disclosure. If you are not > the intended recipient, any dissemination, distribution or copying is > strictly prohibited. Please immediately notify the sender by reply if you > received this email in error. Thank you for your cooperation. > >
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]