source: main/trunk/ibisph-view/src/main/webapp/xslt/html/ContentContainer.xslt @ 22390

Last change on this file since 22390 was 22390, checked in by GarthBraithwaite_STG, 8 months ago

java, admin, view - Updated admin IPV dims save to auto update the IPV MAP_DIMENSION_NAME. Added wiki_test.xml relative link examples. General css to handle P's inside LI items to have 1/2 spacing to match the LI spacing. Added notes to the QM xsd for data notes and issues after reviewing with Lois. ContentContainer?.xslt added comments about TEXT and added general TEXT nodeset processing for "content" - just in case. Changed Indicator.xslt tech notes title back to issues to match QM technotes/issues. Added strip-space processing to main Page.xslt which collapses blank elements. Updated QueryModule?.xslt to handle multiple TEXT within DN and DI. Changed kendo data table title for Record Code to Footnotes as per Lois. ConfigurationIncludeCriteriaExclude?.xslt added security blanket to normalize space for all text().

File size: 23.4 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xsl:stylesheet version="3.0" 
3        xmlns:xsl ="http://www.w3.org/1999/XSL/Transform" 
4        xmlns:ibis="http://www.ibisph.org"
5        xmlns:xs  ="http://www.w3.org/2001/XMLSchema"
6
7        exclude-result-prefixes="ibis xs"
8>
9
10        <ibis:doc>
11                <name>html/ContentContainer</name>
12                <summary>Templates for titled content, fixed, and expandable content blocks.</summary>
13                <description>
14                        Main template block code used throughout the app.  Key concepts are:
15                        - CONTENT elments need to be processed via apply/match.  This is best
16                                handled explicitly by the approp XSLT code that knows the element
17                                structure being processed.  However, this code checks and applies
18                                if needed.
19                        - content: content is ready to go content and is either straight text
20                                or html.  When the "content" is NOT CONTENT it is simply xsl   
21                                copied into the output stream - no apply matches.
22                        - title: Straight text processed with an xsl value-of.
23                        - help: HELP structure that is included after the title text within
24                                the heading.  The help content IS xsl apply/match processed.
25                        - TEXT elements are NOT explicitly processed in this code.  These
26                                are like CONTENT elements and need specific processing based on
27                                the XML struct then placed into the content params that are
28                                simply copied within these templates.
29                                Used in:
30                                HELP                    n:TEXT - processed in help.xslt because \n\n
31                                OVERVIEW                n:TEXT - processed here - calls this textnodeset
32                                DATA_SOURCE     1:TEXT - is the acutal descript of that DS. 
33                                        DATA_SOURCE/DATA_ISSUES/text() = DI narrative.
34                                IP RELATION             1:TEXT - RELATION/TEXT - Indicator.relatedIndicators
35                                QM DATA_NOTE    n:TEXT - MEASURE/DATA_NOTE and QM DNs.  Handled
36                                        in QM.xslt because needs to do a LI.  Calls the this textnodeset
37                                        when there are a series of DN TEXTs to get proper [p] struct.
38                                QM DATA_ISSUE   n:text - Lois wants multiple DI's for QMs AND she
39                                        wants them split out from DN's.  This is similar to the QM
40                                        datanotes it has to handle multiple DI/TEXTs with eath datasource
41                                        DI and QM DI being in a list.
42                                QM DEBUG - This is info returned from IBISQ and much of the time
43                                        the XML is malformed and/or not useful to the end user.  So
44                                        actual use is to example the QM XML.  As such not processed.
45                </description>
46        </ibis:doc>
47
48
49        <!-- ================================= M A I N   C O N T R O L  P A R A M S -->
50        <xsl:param name="ContentContainer.defaultContentBlockType" select="'fixed'"
51                ibis:doc="Sets the default ContentContainer.contentBlock content type to
52                        be created.  This param allows for SS.xslt to set the default type
53                        of block content to be produced for the website.  Valid values are
54                        'fixed' = standard always showing titled text block.
55                        'expandable' = expandable content.
56                        'inline' = no container.
57                "
58        />
59        <xsl:param name="ContentContainer.expandableControlType" select="'checkbox'"
60                ibis:doc="Default expandable content control type.  Valid values are 'radio' and 'checkbox'."
61        />
62        <xsl:param name="ContentContainer.expandableControlName" select="'defaultPageExpandableContentGroup'"
63                ibis:doc="Default expandable content control name that is used for 'radio'
64                        type expandable content controls.
65                "
66        />
67
68        <xsl:param name="ContentContainer.defaultContentContainerClass" select="'Container'"
69                ibis:doc="Used as a default for fixed and expandabale block containers. 
70                        This allows for SS.xslt to override and add more content container
71                        classes as needed.
72                "
73        />
74        <xsl:param name="ContentContainer.defaultFixedContentContainerClass" select="$ContentContainer.defaultContentContainerClass"
75                ibis:doc="Fixed block container css - defaults to ContentContainer.defaultContentContainerClass."
76        />
77        <xsl:param name="ContentContainer.expandableContentContainerClass" select="$ContentContainer.defaultContentContainerClass"
78                ibis:doc="Expandable block content container css - defaults to ContentContainer.defaultContentContainerClass."
79        />
80
81        <xsl:param name="ContentContainer.addWikiAttributeToContentContainer" select="false()"
82                ibis:doc="Used for the default contentBlock addWikiControl.  Value values are true(), false() - default = false."
83        />
84
85        <xsl:param name="ContentContainer.titleLevel" select="2" as="xs:integer"
86                ibis:doc="Used to control the default Hx title element creation for all   
87                        block containers.  This allows for SS.xslt to override the default. 
88                        Default = 3.  Value of 0 turns off.
89                "
90        />
91
92
93
94        <!-- =================================================== T E M P L A T E S -->
95        <xsl:template name="ContentContainer.contentBlock"
96                ibis:doc="Wrapper for expandable, fixed, inline blocks.  This template
97                        is heavily used for all general content blocks so that an adopter
98                        can easily control their sites block behavior via ss.xslt parameter
99                        overrides.  Another way: provides a centralized mechanism to control
100                        all block types via the global contentBlockType without having to
101                        explicitly call.
102                "
103        >
104                <xsl:param name="containerID" ibis:doc="Optional ID to be used for the container."/>
105                <xsl:param name="contentContainerClass"/>
106                <xsl:param name="additionalClasses" ibis:doc="Optional css class to append to the outermost element."/>
107
108                <xsl:param name="contentBlockType" select="$ContentContainer.defaultContentBlockType"
109                        ibis:doc="Optional param to control the block type.  Default is the
110                                ContentContainer.defaultContentBlockType.  Valid values are:
111                                        fixed = contained title and content within a section or div.
112                                        expandable = title as the block control content within.
113                                        inline or '' = places a title followed by the straight content.
114                        "
115                />
116                <xsl:param name="title"       ibis:doc="Optional title text to be displayed."/>
117                <xsl:param name="titleLevel"  select="$ContentContainer.titleLevel" as="xs:integer"
118                        ibis:doc="Optional title level - html Hx element control.  Defaults
119                                to ContentContainer.titleLevel, value of 0 turns off.
120                        "
121                />
122                <xsl:param name="description" ibis:doc="Optional description used as the HTML Hx element's title attribute."/>
123                <xsl:param name="help"        ibis:doc="Optional HELP struct to be placed after the HTML Hx element's title."/>
124
125                <xsl:param name="content" ibis:doc="Actual content to be included.  This
126                                can be a mix of text and sub elements.  Content is only processed
127                                if it is a CONTENT container element otherwise it is simply
128                                copied into the output.  If no content then the block is NOT created.
129                        "
130                />
131                <xsl:param name="addWikiAttribute" select="$ContentContainer.addWikiAttributeToContentContainer" 
132                        ibis:doc="boolean that controls if container should the wiki attribute added (so script can process for embedded wiki markup)."
133                />
134
135                <xsl:choose>
136                        <xsl:when test="$contentBlockType = 'expandable'">
137                                <xsl:call-template name="ContentContainer.expandable">
138                                        <xsl:with-param name="containerID"      select="$containerID"/>
139                                        <xsl:with-param name="contentContainerClass" select="if(0 != string-length($contentContainerClass)) then $contentContainerClass else $ContentContainer.expandableContentContainerClass"/>
140                                        <xsl:with-param name="additionalClasses"  select="$additionalClasses"/>
141                                        <xsl:with-param name="title"            select="$title"/>
142                                        <xsl:with-param name="titleLevel"       select="$titleLevel"/>
143                                        <xsl:with-param name="description"      select="$description"/>
144                                        <xsl:with-param name="help"             select="$help"/>
145                                        <xsl:with-param name="content"          select="$content"/>
146                                        <xsl:with-param name="addWikiAttribute" select="$addWikiAttribute"/>
147                                </xsl:call-template>
148                        </xsl:when>
149                        <xsl:when test="$contentBlockType = 'fixed'">
150                                <xsl:call-template name="ContentContainer.fixed">
151                                        <xsl:with-param name="containerID"      select="$containerID"/>
152                                        <xsl:with-param name="contentContainerClass" select="if(0 != string-length($contentContainerClass)) then $contentContainerClass else $ContentContainer.defaultFixedContentContainerClass"/>
153                                        <xsl:with-param name="additionalClasses"  select="$additionalClasses"/>
154                                        <xsl:with-param name="title"            select="$title"/>
155                                        <xsl:with-param name="titleLevel"       select="$titleLevel"/>
156                                        <xsl:with-param name="description"      select="$description"/>
157                                        <xsl:with-param name="help"             select="$help"/>
158                                        <xsl:with-param name="content"          select="$content"/>
159                                        <xsl:with-param name="addWikiAttribute" select="$addWikiAttribute"/>
160                                </xsl:call-template>
161                        </xsl:when>
162
163                        <!-- if not fixed or expandabale and content is something then add
164                                the title and content.
165                        -->
166                        <xsl:when test="exists($content/*) or (0 != string-length( ($content//text())[1] ))">
167                                <xsl:call-template name="ContentContainer.title">
168                                        <xsl:with-param name="title"       select="$title"/>
169                                        <xsl:with-param name="titleLevel"  select="$titleLevel"/>
170                                        <xsl:with-param name="description" select="$description"/>
171                                        <xsl:with-param name="help"        select="$help"/>
172                                </xsl:call-template>
173                                <xsl:call-template name="ContentContainer.getContent">
174                                        <xsl:with-param name="content" select="$content"/>
175                                </xsl:call-template>
176                        </xsl:when>
177                </xsl:choose>
178        </xsl:template>
179
180
181        <xsl:template name="ContentContainer.getContent"
182                ibis:doc="Processes the actual content.  If content is CONTENT then
183                        apply templates.  If content is TEXT then process the nodeset for
184                        [P]s.  Else copy the content as is.
185                "
186        >
187                <xsl:param name="content"/>
188
189                <xsl:choose>
190                        <xsl:when test="$content/CONTENT or ('CONTENT' = $content/name())">
191                                <xsl:call-template name="ibisIncludeGetContent">
192                                        <xsl:with-param name="content" select="$content"/>
193                                </xsl:call-template>
194                        </xsl:when>
195                        <xsl:when test="$content/TEXT or ('TEXT' = $content/name())">
196                                <xsl:call-template name="ContentContainer.getTextNodesetContent">
197                                        <xsl:with-param name="textNodeset" select="$content"/>
198                                </xsl:call-template>
199                        </xsl:when>
200                        <xsl:otherwise>
201                                <xsl:copy-of select="$content"/>
202                        </xsl:otherwise>
203                </xsl:choose>
204        </xsl:template>
205
206
207        <xsl:template name="ContentContainer.fixed" 
208                ibis:doc="Non expandable fixed content block.  Called directly or via the
209                        general contentBlock template. 
210                "
211        >
212                <xsl:param name="containerID" ibis:doc="Optional ID to be used for the container."/>
213                <xsl:param name="contentContainerClass" select="$ContentContainer.defaultFixedContentContainerClass"/>
214                <xsl:param name="additionalClasses" ibis:doc="optional css class appended to the blocks cc.ContentContainer value."/>
215
216                <xsl:param name="title"       ibis:doc="Optional block Hx element title text."/>
217                <xsl:param name="titleLevel"  select="$ContentContainer.titleLevel" as="xs:integer"/>
218                <xsl:param name="description" ibis:doc="Optional title on hover text."/>
219                <xsl:param name="help"        ibis:doc="Optional HELP struct to be placed in the HTML Hx element's title."/>
220
221                <xsl:param name="content" ibis:doc="Text string or HTML content to be
222                                displayed.  If content is blank then this code does not do anything.
223                        "
224                />
225                <xsl:param name="addWikiAttribute" select="$ContentContainer.addWikiAttributeToContentContainer"/>
226
227                <xsl:param name="contentContinerElementName" select="if(0 != string-length($title)) then 'section' else 'div'"/>
228
229                <xsl:if test="exists($content/*) or (0 != string-length( ($content//text())[1] ))">
230                        <xsl:element name="{$contentContinerElementName}">
231                                <xsl:if test="(0 != string-length($contentContainerClass)) or (0 != string-length($additionalClasses))"> 
232                                        <xsl:attribute name="class" select="concat($contentContainerClass, ' ', $additionalClasses)"/>
233                                </xsl:if>
234                                <xsl:if test="0 != string-length($containerID)"><xsl:attribute name="id" select="$containerID"/></xsl:if>
235                                <xsl:if test="true() = $addWikiAttribute"><xsl:attribute name="wiki" select="'true'"/></xsl:if>
236                                <xsl:call-template name="ContentContainer.title">
237                                        <xsl:with-param name="title"       select="$title"/>
238                                        <xsl:with-param name="titleLevel"  select="$titleLevel"/>
239                                        <xsl:with-param name="description" select="$description"/>
240                                        <xsl:with-param name="help"        select="$help"/>
241                                </xsl:call-template>
242                                <xsl:choose>
243                                        <xsl:when test="not($content/*)">
244                                                <p><xsl:copy-of select="$content/text()"/></p>
245                                        </xsl:when>
246                                        <xsl:otherwise>
247                                                <xsl:call-template name="ContentContainer.getContent">
248                                                        <xsl:with-param name="content" select="$content"/>
249                                                </xsl:call-template>
250<!-- GARTH TODO: remove.
251                                                <xsl:if test="$content/CONTENT">
252                                                        <xsl:message select="'ERROR!  ContentContainer.fixed CONTENT element not processed!'"/>
253                                                        <div class="Error">ContentContainer.fixed CONTENT element not processed! Let Garth know about this issue.</div>
254                                                </xsl:if>
255                                                <xsl:copy-of select="$content"/>
256-->
257                                        </xsl:otherwise>
258                                </xsl:choose>
259                        </xsl:element>
260                </xsl:if>
261        </xsl:template>
262
263
264        <xsl:template name="ContentContainer.expandable"
265                ibis:doc="Provides ability to more easily embed an expandable content block
266                        into the page.  Note that the approp CSS will need to be included.
267                        The control and container require an 'id' attribute which is created
268                        based on the supplied content element.  The 'content' text() and sub
269                        elements will be ibis:copied into the assoc content container DIV.
270                "
271        >
272                <xsl:param name="containerID" ibis:doc="Optional ID to be used for the container."/>
273                <xsl:param name="contentContainerClass" select="$ContentContainer.expandableContentContainerClass"/>
274
275                <xsl:param name="additionalClasses" 
276                        ibis:doc="Optional class to be appended to the ExpandableContent
277                                container css class.  Note that this string value can be a
278                                single css class or a series.
279                        "
280                />
281
282                <xsl:param name="title"      select="'Click here to show more content.'"/>
283                <xsl:param name="titleLevel" select="$ContentContainer.titleLevel" as="xs:integer"
284                        ibis:doc="Optional title level - html Hx element control.  Defaults
285                                to ContentContainer.titleLevel, value of 0 turns off.
286                        "
287                />
288                <xsl:param name="description" select="concat('Show/hide selection list control for ', $title)"
289                        ibis:doc="Optional title on hover text."
290                />
291                <xsl:param name="help"        ibis:doc="Optional HELP struct to be placed in the HTML Hx element's title."/>
292                <xsl:param name="subTitleContent" ibis:doc="Optional text or content to be copied after the title string."/>
293
294                <xsl:param name="controlType" select="$ContentContainer.expandableControlType"
295                        ibis:doc="Optional param that controls the type of control to build.
296                                Default is ContentContainer.expandableControlType which defaults
297                                to a 'checkbox'.  Checkbox results in a click bar that opens/
298                                closes the content container.  If 'radio' and controlName is
299                                the same as another expandable block then only one container will
300                                be displayed at a time (hence the radio input functionality).
301                        "
302                />
303                <xsl:param name="controlID"
304                        ibis:doc="Optional ID to be used for the input control.  If no value
305                                then an ID is generated based on the content element.  This param
306                                provides a mechanism to name the control for fine grained css.
307                        "
308                />
309                <xsl:param name="controlName" select="$ContentContainer.expandableControlName"
310                        ibis:doc="Optional param that is only needed when the controlType is
311                                'radio'.  This results in a UI where only 1 expandable block
312                                will be displayed at a time (hence the radio input functionality).
313                                Defaults to ContentContainer.expandableControlName.
314                        "
315                />
316
317                <xsl:param name="inputOnChangeAttribute" ibis:doc="input onchange attribute"/>
318
319                <xsl:param name="accesskey" ibis:doc="Optional control's quick access key."/>
320                <xsl:param name="show" select="false()"
321                        ibis:doc="Optional flag value that if true sets the input to 'checked'
322                                which results in the block being shown/expanded.  Default=false.
323                        "
324                />
325
326                <xsl:param name="content" ibis:doc="Text string or HTML content to be
327                        displayed. If content is blank then this code does not do anything."
328                />
329
330                <xsl:param name="addWikiAttribute" select="$ContentContainer.addWikiAttributeToContentContainer"/>
331
332
333                <xsl:if test="exists($content/*) or (0 != string-length( ($content//text())[1] ))">
334                        <xsl:variable name="id"          select="if(string-length($controlID) != 0) then $controlID else concat('expandableContentControl.', generate-id($content))"/>
335                        <xsl:variable name="controlType" select="if(string-length($controlType) != 0) then $controlType else 'checkbox'"/>
336
337                        <section class="ExpandableContent {$additionalClasses}">
338                                <input id="{$id}" type="{$controlType}" class="Control">
339                                        <xsl:if test="$show"><xsl:attribute name="checked" select="'checked'"/></xsl:if>
340                                        <xsl:if test="($controlType = 'radio') and (0 != string-length($controlName))">
341                                                <xsl:attribute name="name" select="$controlName"/>
342                                        </xsl:if>
343                                        <xsl:if test="$inputOnChangeAttribute"><xsl:attribute name="onchange" select="$inputOnChangeAttribute"/></xsl:if>
344                                </input>
345                                <xsl:element name="h{$titleLevel}">
346                                        <label for="{$id}" title="Expandable content control.  Click to show/hide the {$title}" class="FontIcon">
347                                                <xsl:if test="$description"><xsl:attribute name="title" select="$description"/></xsl:if>
348                                                <xsl:if test="$accesskey"><xsl:attribute name="accesskey" select="$accesskey"/></xsl:if>
349                                                <xsl:value-of select="$title"/> 
350                                                <xsl:apply-templates select="$help" mode="Help.element"/>
351                                                <xsl:copy-of select="$subTitleContent"/>
352                                        </label>
353                                </xsl:element>
354
355                                <div>
356                                        <xsl:if test="$contentContainerClass"><xsl:attribute name="class" select="$contentContainerClass"/></xsl:if> 
357                                        <xsl:if test="$containerID"><xsl:attribute name="id" select="$containerID"/></xsl:if> 
358                                        <xsl:if test="$addWikiAttribute"><xsl:attribute name="wiki" select="'true'"/></xsl:if>
359                                        <xsl:choose>
360                                                <xsl:when test="not($content/*)">
361                                                        <p><xsl:copy-of select="$content/text()"/></p>
362                                                </xsl:when>
363                                                <xsl:otherwise>
364                                                        <xsl:call-template name="ContentContainer.getContent">
365                                                                <xsl:with-param name="content" select="$content"/>
366                                                        </xsl:call-template>
367                                                </xsl:otherwise>
368                                        </xsl:choose>
369                                </div>
370                        </section>
371                </xsl:if>
372        </xsl:template>
373
374
375        <xsl:template name="ContentContainer.overviews"
376                ibis:doc="Creates a titled content block that has delimited title texts
377                        nodes (with nodes delimited via the delimitedTitleTextsNodes template.
378
379                        Currently used for QM selection and builder overviews and CP overviews.
380
381                        Loops the nodesets with each nodeset being an optinoal [TITLE]
382                        and 1:n TEXT nodes.  Each nodeset is contained within a new fixed
383                        content block and delimited via the delimiter param.
384
385                        1:n fixedBlocks with each fixedBlock having delimited TEXT blocks. 
386
387                        Used for OVERVIEW type blocks and others that have TITLE and 1:n TEXT blocks.
388                        Struct passed in: set of nodes */{[TITLE], (n)TEXTs}
389                "
390        >
391                <xsl:param name="title"       select="'Overview'"/>
392                <xsl:param name="titleLevel"  select="$ContentContainer.titleLevel" as="xs:integer"/>
393                <xsl:param name="description" ibis:doc="Optional description to be placed in the HTML Hx element's title attribute."/>
394                <xsl:param name="help"        ibis:doc="Optional HELP struct to be placed in the HTML Hx element's title."/>
395
396                <xsl:param name="expandableContentShow" select="true()"/>
397                <xsl:param name="addWikiAttribute"      select="true()"/>
398                <xsl:param name="containerID"           ibis:doc="Optional ID to be used for the container."/>
399                <xsl:param name="additionalClasses"     select="'Overview'"/>
400                <xsl:param name="overviews"/>
401
402                <xsl:call-template name="ContentContainer.expandable">
403                        <xsl:with-param name="containerID"      select="$containerID"/>
404                        <xsl:with-param name="additionalClasses"  select="$additionalClasses"/>
405                        <xsl:with-param name="title"            select="$title"/>
406                        <xsl:with-param name="titleLevel"       select="$titleLevel"/>
407                        <xsl:with-param name="description"      select="$description"/>
408                        <xsl:with-param name="help"             select="$help"/>
409                        <xsl:with-param name="content">
410
411                                <xsl:for-each select="$overviews/OVERVIEW">
412                                        <xsl:sort select="SORT_ODRER" order="ascending" data-type="number"/>
413                                        <section>
414                                        <xsl:call-template name="ContentContainer.overviewsOverview">
415                                                <xsl:with-param name="titleLevel" select="$titleLevel+1"/>
416                                                <xsl:with-param name="overview" select="."/>
417                                        </xsl:call-template>
418                                        </section>
419
420                                </xsl:for-each>
421
422                        </xsl:with-param>
423                        <xsl:with-param name="addWikiAttribute" select="$addWikiAttribute"/>
424                </xsl:call-template>
425        </xsl:template>
426
427        <xsl:template name="ContentContainer.overviewsOverview"
428                ibis:doc="creates a fixed content block for each OVERVIEW TITLE/TEXT nodes."
429        >
430                <xsl:param name="titleLevel" select="$ContentContainer.titleLevel + 1" as="xs:integer"/>
431                <xsl:param name="overview" ibis:doc="node with [TITLE] and 1-n TEXTs."/>
432                <xsl:param name="addWikiAttribute" select="$ContentContainer.addWikiAttributeToContentContainer" 
433                        ibis:doc="boolean that controls if container should the wiki attribute added (so script can process for embedded wiki markup)."
434                />
435
436                <xsl:call-template name="ContentContainer.fixed">
437                        <xsl:with-param name="title"            select="$overview/TITLE"/>
438                        <xsl:with-param name="titleLevel"       select="$titleLevel"/>
439                        <xsl:with-param name="description"      select="$overview/DESCRIPTION"/>
440                        <xsl:with-param name="addWikiAttribute" select="$addWikiAttribute"/>
441                        <xsl:with-param name="content">
442                                <xsl:call-template name="ContentContainer.getTextNodesetContent">
443                                        <xsl:with-param name="textNodeset" select="$overview/TEXT"/>
444                                </xsl:call-template>
445                        </xsl:with-param>
446                </xsl:call-template>
447        </xsl:template>
448
449
450
451        <xsl:template name="ContentContainer.getTextNodesetContent"
452                ibis:doc="Converts TEXT node(s) to [p] enclosed blocks."
453        >
454                <xsl:param name="textNodeset"/>
455
456                <xsl:if test="1 = count($textNodeset)">
457                        <xsl:value-of select="$textNodeset"/>
458                </xsl:if>
459                <xsl:if test="1 &lt; count($textNodeset)">
460                        <xsl:for-each select="$textNodeset">
461                                <p><xsl:value-of select="."/></p>
462                        </xsl:for-each>
463                </xsl:if>
464        </xsl:template>
465
466
467        <xsl:template name="ContentContainer.title"
468                ibis:doc="Show title if specified.  IF there is a title it should have an
469                        appropriate block title so an Hx unless specifically set to 0 which
470                        means to not use a Hx. 
471                "
472        >
473                <xsl:param name="title" ibis:doc="title text."/>
474                <xsl:param name="titleLevel" as="xs:integer"
475                        ibis:doc="Optional title level - html Hx element control.  Defaults
476                                to ContentContainer.titleLevel, value of 0 turns off.
477                        "
478                />
479                <xsl:param name="description" ibis:doc="Optional - used for Hx title attribute."/>
480                <xsl:param name="help"        ibis:doc="Optional help to be placed inside the Hx element after the title text."/>
481
482                <xsl:if test="0 != string-length($title)">
483                        <xsl:choose>
484                                <xsl:when test="0 = $titleLevel">
485                                        <xsl:value-of select="$title"/> 
486                                        <xsl:apply-templates select="$help" mode="Help.element"/>
487                                </xsl:when>
488                                <xsl:when test="0 &lt; $titleLevel">
489                                        <xsl:element name="h{$titleLevel}">
490                                                <xsl:attribute name="title" select="$description"/>
491                                                <xsl:value-of select="$title"/> 
492                                                <xsl:apply-templates select="$help" mode="Help.element"/>
493                                        </xsl:element>
494                                </xsl:when>
495                        </xsl:choose>
496                </xsl:if>
497        </xsl:template>
498
499</xsl:stylesheet>
500<!-- ============================= End of File ============================= -->
Note: See TracBrowser for help on using the repository browser.