Subject: Re: [xsl] Collect data from a whole map hierarchy, then use it in a topic From: "rick@xxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 15 Jun 2023 21:06:15 -0000 |
Thank you Martin. Here is my working stylesheet. I just have to add the second stage to insert the summary data into one of the topics. I appreciate your generous help. Rick <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:math="http://www.w3.org/2005/xpath-functions/math" xmlns:rq="http://www.frameexpert.com/functions" exclude-result-prefixes="xs math rq" version="3.0" expand-text="yes"> <xsl:output indent="yes"/> <!-- Variables to get required summary data from all documents. --> <xsl:variable name="referenced-topic-docs" select="rq:collect-docs(.)"/> <xsl:variable name="summary-data" select="$referenced-topic-docs ! (.//tool | .//spare | .//supply)"/> <xsl:template match="/"> <!-- Test call to see the data: --> <xsl:call-template name="write-summary-data"/> <!-- Further processing here. --> </xsl:template> <xsl:template name="write-summary-data"> <map-data> <summary> <xsl:for-each-group select="$summary-data" group-by="normalize-space(.)"> <xsl:sort select="local-name(.)"/> <xsl:sort select="normalize-space(.)"/> <xsl:element name="{local-name(.)}"><xsl:attribute name="quantity" select="sum(current-group()/@quantity)"/>{normalize-space(.)}</xsl:element> </xsl:for-each-group> </summary> </map-data> </xsl:template> <xsl:function name="rq:collect-docs" as="document-node()*"> <xsl:param name="input-doc" as="document-node()"/> <xsl:variable name="topic-uri-collection" select="$input-doc//*/@href[matches(.,'(dita(map)?|xml)$','i')]/r esolve-uri(. ,base-uri(.))[doc-available(.)]"/> <xsl:variable name="topic-docs" select="$topic-uri-collection ! doc(.)"/> <xsl:sequence select="$topic-docs, $topic-docs ! rq:collect-docs(.)"/> </xsl:function> </xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Collect data from a whole, Martin Honnen martin | Thread | Re: [xsl] Collect data from a whole, Martin Honnen martin |
Re: [xsl] Collect data from a whole, Martin Honnen martin | Date | Re: [xsl] Collect data from a whole, Paul Tyson phtyson@x |
Month |