[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

XSL stylesheet issue - part 2 (newbie)

Subject: XSL stylesheet issue - part 2 (newbie)
From: "Frank Dissinger frank.dissinger@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 21 Oct 2024 16:04:11 -0000
 XSL stylesheet issue - part 2 (newbie)
Hi again,

I am stuck again. The next and last step in my XSL script is to create the
hyperlinked TOC entries for all elements with an ID attribute that starts with
the characters btocrefb. With the help of AI, I added some XSL templates.
The script is supposed to create a TOC like this:

<p class=btoclev1b><a href=b#tocref-cx34gb>Heading on level 1</a></p>
<p class=btoclev2b><a href=b#tocref-df38db>Heading on level 2</a></p>
<p class=btoclev3b><a href=b#tocref-f8op7b>Heading on level 3</a></p>
etc.

What the script actually does is adding the unique btocref-b&b IDs to the
headings (as before), but it does not create the hyperlinked TOC entries.

Below is the script. I have attached an HTML file which shows an example of
the HTML file output by the script.

Again a namespace issue?

Any help is greatly appreciated!

---------------------------- BEGIN SCRIPT
-------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xpath-default-namespace="http://www.w3.org/1999/xhtml"
  xmlns:xhtml="http://www.w3.org/1999/xhtml"
  version="3.0">

  <!-- Output settings for XHTML -->
  <xsl:output
    method="html"
    encoding="UTF-8"
    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
    indent="yes"/>

  <!-- Identity template to copy all elements and attributes -->
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>

  <!-- Adding a unique ID attribute using generate-id() to headings to create
hyperlink targets for the TOC -->
  <xsl:template
    match="*[@id='rn_release_notes']//h2 | *[@id='rn_release_notes']//h3 |
*[@id='rn_release_notes']//p[@class='rn_heading']">
    <xsl:copy>
      <!-- Generating a unique ID for each element -->
      <xsl:attribute name="id">
        <xsl:text>tocref-</xsl:text>
        <xsl:value-of select="generate-id()"/>
      </xsl:attribute>
      <!-- Copy the remaining attributes except "id", and apply templates to
children -->
      <xsl:apply-templates select="@*[name() != 'id']"/>
      <xsl:apply-templates select="node()"/>
    </xsl:copy>
  </xsl:template>

  <!-- Template to generate the TOC -->
  <xsl:template match="div[@id='rn_toc']">
    <xsl:copy>
      <xsl:apply-templates select="@*"/>
      <xsl:apply-templates select="h1"/>

      <!-- Insert the TOC after the <h1> element -->
      <xsl:for-each select="//*[@id[starts-with(., 'tocref')]]">

        <xsl:variable name="level">
          <xsl:choose>
            <xsl:when test="self::h2">1</xsl:when>
            <xsl:when test="self::h3">2</xsl:when>
            <xsl:when test="self::p[@class='rn_heading']">3</xsl:when>
          </xsl:choose>
        </xsl:variable>

        <xhtml:p class="toclev{level}">
          <xhtml:a href="mailto:#{./@id}";>
            <xsl:value-of select="."/>
          </xhtml:a>
        </xhtml:p>

      </xsl:for-each>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

---------------------------- END SCRIPT
-------------------------------------------------

Frank Dissinger
Documentation Manager
..........................................
CGS ORIS GmbH
frank.dissinger@xxxxxxxxxxxx | www.cgs-oris.com
Kettelerstrasse 24, 63512 Hainburg (Germany)
Phone: +49 6182 9626-0 | Fax: +49 6182 9626-99
Commercial register: Offenbach, HRB no. 21495
Managing directors: Bernd RC<ckert, Christoph Thommessen

=============================================================================
======

Von: Frank Dissinger <mailto:frank.dissinger@xxxxxxxxxxxx>
Gesendet: Montag, 21. Oktober 2024 13:12
An: mailto:xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Betreff: XSL stylesheet issue (newbie)

Hi Martin,

I have added the bxpath-default-namespaceb attribute and now the script
indeed produces the expected result.

Thank you very much for your great help!

The XSL element looks like this now:

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="2.0"
  xpath-default-namespace="http://www.w3.org/1999/xhtml" >

BTW: I had to change the XSL version from 1.0 to 2.0 in the XSL element,
otherwise Oxygen would use Saxon 6.5.5 for validation, which does not support
the xpath-default-namespace atttribute. Now it uses "Saxon-PE 12.3" and the
validation error message disappears.

I found out that I can also change this to bversion=3.0b. The script would
still run without any problems and validation issues.

-----------------------------------------------------------------------------
-----------------------------------

On 17/10/2024 19:41, Martin Honnen mailto:martin.honnen@xxxxxx wrote:
The stylesheet below is supposed to add a unique 'id' attribute named
'tocref001', 'tocref002' etc. to all <h2>, <h3> and <p class="rn_heading">
elements which are descendants of an element with an 'id' attribute named
'rn_release_notes'. The script runs without any errors, but does not add any
IDs.
The sample input has e.g.
  html xmlns=http://www.w3.org/1999/xhtml
meaning it has elements in the XHTML namespace, if you use an XSLT 2 or 3
processor like Saxon Java, SaxonJS, SaxonC or Saxon.NET you can add
  xpath-default-namespace=http://www.w3.org/1999/xhtml
on your xsl:stylesheet element in the XSLT code and your match
<!-- Adding id=toc001 attributes to headings to create hyperlink targets for
the TOC -->
<xsl:template match="*[@id='rn_release_notes']//h2 |
*[@id='rn_release_notes']//h3 |
*[@id='rn_release_notes']//p[@class='rn_heading']">
will match XHTML elements.
With more recent version of Saxon (11, 12 at least, I think) you could also
use your original stylesheet code but add the command line option
  -ns:##html5
for execution
COLOR TUNER Version 3.4 Release Notes B) CGS ORIS GmbH b 10/21/2024
=====================================================================

This file describes the additions, modifications and bug fixes in COLOR
TUNER Version 3.4.

Licensing
---------

COLOR TUNER Version 3.4 is license-protected and requires a new software
license. If there is a valid software service contract, the license is
free of charge and will be sent automatically.

System Recommendations
----------------------

We recommend the following computer equipment for optimum performance and
high throughput:

  * 

    Intel Core i7 6th generation or better

  * 

    16 GB of RAM or more

  * 

    500 GB SSD disk (system disk) or more

  * 

    Windows 10 or newer

Installation
------------

Certain programs may block the installation process. The process pauses
after extracting the installation files. In this case proceed as follows:

  1. 

    If the current version of Adobe Creative Cloud is installed, exit the
    Adobe Creative Cloud desktop app.

    Do this by selecting File > Exit Creative Cloud, then click Quit to
    stop all background processes.

  2. 

    Start Windows Task Manager and click the Details tab.

  3. 

    Right-click Setup.exe and select Analyze wait chain.

  4. 

    The process listed under Setup.exe is blocking the installation.
    Select and end it.

Contents
========

COLOR TUNER Version 3.4 Release Notes
=====================================

Additions
---------

Support for X-Rite eXact 2

66210

COLOR TUNER V3.4 additionally supports the measurement device eXact 2
from X-Rite for measuring color strips and single patches.

RN_Heading

Coming soon

Support for New Cars

66210

Note: COLOR TUNER V3.4 additionally supports new cars.

RN_Heading

Length, width, height are unknown.

Modifications
-------------

Modification 1

12345

This is modification 1.

This is modification 1.

First modification

66211

COLOR TUNER V4.3 was modified.

Second modification

66212

Set the values as follows:

Value

Smoothing level

xxx

0

No smoothing

xxx

50 (default)

Medium

xxx

100

Maximum

xxx

This is all about the table.

Bug Fixes
---------

Bug Fix 1

12345

This is bug fix 1.

This is bug fix 1.

First Bug Fix

66211

COLOR TUNER V3.4 has been fixed.

Backmatter
==========

CGS ORIS GmbH

D-63512 Hainburg (Germany)

Phone: +49 6182 9626 0

Fax: +49 6182 9626 99

Web: http://www.cgs-oris.com

E-mail: support@xxxxxxxxxxxx

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.