<meta name="generator" content="Altova StyleVision Enterprise Edition 2020 sp1 (http://www.altova.com)"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <style type="text/css"> <xsl:comment>.header { color:#1e2125; }</xsl:comment> </style> <xsl:comment>[if IE]><STYLE type="text/css">.altova-rotate-left-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3)} .altova-rotate-right-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1)} </STYLE><![endif]</xsl:comment> <xsl:comment>[if !IE]><!</xsl:comment> <style type="text/css">.altova-rotate-left-textbox{-webkit-transform: rotate(-90deg) translate(-100%, 0%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(-90deg) translate(-100%, 0%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(-90deg) translate(-100%, 0%); -ms-transform-origin: 0% 0%;}.altova-rotate-right-textbox{-webkit-transform: rotate(90deg) translate(0%, -100%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(90deg) translate(0%, -100%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(90deg) translate(0%, -100%); -ms-transform-origin: 0% 0%;}</style> <xsl:comment><![endif]</xsl:comment> <style type="text/css">@page { margin-left:1.000in; margin-right:1.000in; margin-top:1.000in; margin-bottom:1.000in } @media print { br.altova-page-break { page-break-before: always; } div.altova-page-break { page-break-before: always; } }</style> </head> <body style="font-family:Arial; white-space:nowrap; " alink="#f26a21" link="#f26a21" vlink="#3c3c3c"> <br/> <xsl:for-each select="$XML"> <xsl:variable name="orderdate" select="substring-before(OrderRequestHeader/@orderDate, 'T')"/> <xsl:variable name="env" select="Message/MessageTenant"/> <xsl:for-each select="Message"> <br/> <xsl:variable name="altova:table"> <table style="border-collapse:collapse; empty-cells:hide; " align="center" cellpadding="5" cellspacing="1" width="50%"> <xsl:variable name="altova:CurrContextGrid_0" select="."/> <xsl:variable name="altova:ColumnData"/> <tbody> <tr> <td> <xsl:variable name="altova:table"> <table align="center" width="100%" altova:hide-rows="empty" altova:hide-cols="empty"> <xsl:variable name="altova:CurrContextGrid_1" select="."/> <xsl:variable name="altova:ColumnData"/> <tbody valign="bottom"> <tr> <td style="color:#323263; text-align:left; width:50%; " valign="bottom"> <xsl:for-each select="cXML"> <xsl:for-each select="format-dateTime(@timestamp, '[M01].[D01].[Y0001]')"> <span style="font-family:Consolas; font-size:8pt; font-style:italic; "> <xsl:choose> <xsl:when test=". instance of element() or . instance of document-node()"> <xsl:apply-templates/> </xsl:when> <xsl:otherwise> <xsl:value-of select="."/> </xsl:otherwise> </xsl:choose> </span> </xsl:for-each> </xsl:for-each> </td> <td style="color:#323263; text-align:right; width:50%; " valign="bottom"> <xsl:for-each select="cXML"> <xsl:for-each select="format-dateTime(@timestamp, '[H01]:[m01]:[s01] [P]')"> <span style="font-family:Consolas; font-size:8pt; font-style:italic; "> <xsl:choose> <xsl:when test=". instance of element() or . instance of document-node()"> <xsl:apply-templates/> </xsl:when> <xsl:otherwise> <xsl:value-of select="."/> </xsl:otherwise> </xsl:choose> </span> </xsl:for-each> </xsl:for-each> </td> </tr> </tbody> </table> </xsl:variable> <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )" xpath-default-namespace=""/> <xsl:variable name="altova:TableIndexInfo" select="altova:BuildTableIndexInfo($altova:table)"/> <xsl:variable name="altova:generate-cols" as="xs:boolean*" xpath-default-namespace=""> <xsl:choose> <xsl:when test="$altova:table/table/@altova:hide-cols = 'empty'"> <xsl:sequence select="for $altova:pos in 1 to $altova:col-count return some $altova:cell in $altova:table/table/(thead | tbody | tfoot)/tr/(th | td)[ altova:col-position(., $altova:TableIndexInfo) = $altova:pos ] satisfies not( altova:is-cell-empty( $altova:cell ) )"/> </xsl:when> <xsl:otherwise> <xsl:sequence select="for $altova:pos in 1 to $altova:col-count return not( exists( $altova:table/table/tbody/tr/td[ altova:col-position(., $altova:TableIndexInfo) = $altova:pos ] ) ) or ( some $altova:cell in $altova:table/table/tbody/tr/td[ altova:col-position(., $altova:TableIndexInfo) = $altova:pos ] satisfies not( altova:is-cell-empty( $altova:cell ) ) )"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="altova:nodeTableWithoutUnwantedParts"> <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:variable> <xsl:sequence select="$altova:nodeTableWithoutUnwantedParts"/> </td> </tr> <tr> <td> <xsl:variable name="altova:table"> <table style="border-collapse:collapse; empty-cells:hide; " align="center" bgcolor="#323263" cellpadding="5" cellspacing="1" width="100%"> <xsl:variable name="altova:CurrContextGrid_2" select="."/> <xsl:variable name="altova:ColumnData"/> <tbody> <tr style="background-color:#323263; color:#ffffff; white-space:nowrap; " valign="middle"> <td style="color:#ffffff; text-align:center; width:15%; " valign="bottom"> <xsl:for-each select="MessagePartnerName"> <span style="font-family:Arial Black; font-size:36pt; "> <xsl:apply-templates/> </span> </xsl:for-each> </td> <td style="text-align:center; width:30%; "/> <td style="text-align:center; "/> <td style="width:15%; "/> <td style="text-align:right; width:30%; " valign="middle"> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="Total"> <xsl:for-each select="Money"> <span style="font-family:Arial Black; font-size:24pt; "> <xsl:text>$</xsl:text> </span> <span style="font-family:Arial Black; font-size:24pt; "> <xsl:variable name="altova:seqContentStrings_3"> <xsl:value-of select="format-number(number(string(.)), '###,##0.00')"/> </xsl:variable> <xsl:variable name="altova:sContent_3" select="string($altova:seqContentStrings_3)"/> <xsl:value-of select="$altova:sContent_3"/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td/> </tr> <tr style="background-color:#fcfafa; color:#3c3c3c; white-space:nowrap; " valign="middle"> <td style="text-align:left; text-indent:25px; width:15%; "> <span style="font-family:Consolas; font-size:11pt; font-style:italic; "> <xsl:text>PO Number</xsl:text> </span> </td> <td style="text-align:left; width:30%; "> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="@orderID"> <span style="font-family:Consolas; font-size:14pt; font-weight:bold; "> <xsl:value-of select="string(.)"/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="text-align:right; "/> <td style="text-align:left; width:15%; "> <span style="font-family:Consolas; font-size:12pt; font-style:italic; "> <xsl:text>Contact</xsl:text> </span> </td> <td style="text-align:left; width:30%; "> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="Contact"> <xsl:for-each select="Name"> <span style="font-family:Consolas; font-size:14pt; font-weight:bold; "> <xsl:apply-templates/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="text-align:right; "/> </tr> <tr style="background-color:#EBEBEB; color:#3c3c3c; white-space:nowrap; " valign="middle"> <td style="text-align:left; text-indent:25px; width:15%; "> <span style="font-family:Consolas; font-size:11pt; font-style:italic; "> <xsl:text>PO Date</xsl:text> </span> </td> <td style="text-align:left; width:30%; "> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="@orderDate"> <xsl:for-each select="format-dateTime(., '[M01]/[D01]/[Y0001]')"> <span style="font-family:Consolas; font-size:14pt; font-weight:bold; "> <xsl:choose> <xsl:when test=". instance of element() or . instance of document-node()"> <xsl:apply-templates/> </xsl:when> <xsl:otherwise> <xsl:value-of select="."/> </xsl:otherwise> </xsl:choose> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="text-align:right; "/> <td style="text-align:left; width:15%; "> <span style="font-family:Consolas; font-size:12pt; font-style:italic; "> <xsl:text>Email</xsl:text> </span> </td> <td style="text-align:left; width:30%; "> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="Contact"> <xsl:for-each select="Email"> <span style="font-family:Consolas; font-size:14pt; font-weight:bold; "> <xsl:apply-templates/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="text-align:right; "/> </tr> <tr style="background-color:#fcfafa; color:#3c3c3c; white-space:nowrap; " valign="middle"> <td style="text-align:left; text-indent:25px; width:15%; "> <span style="font-family:Consolas; font-size:11pt; font-style:italic; "> <xsl:text>PO Type</xsl:text> </span> </td> <td style="text-align:left; width:30%; "> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="@type"> <span style="font-family:Consolas; font-size:14pt; font-weight:bold; "> <xsl:value-of select="string(.)"/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="text-align:left; "/> <td style="text-align:left; width:15%; "> <span style="font-family:Consolas; font-size:12pt; font-style:italic; "> <xsl:text>Phone</xsl:text> </span> </td> <td style="text-align:left; width:30%; "> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="Contact"> <xsl:for-each select="Phone"> <xsl:for-each select="TelephoneNumber"> <span style="font-family:Consolas; font-size:14pt; font-weight:bold; "> <xsl:value-of select="concat(/Message/cXML/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/Phone/TelephoneNumber/AreaOrCityCode,'-',(substring(/Message/cXML/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/Phone/TelephoneNumber/Number,1,3)),'-',(substring(/Message/cXML/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/Phone/TelephoneNumber/Number,4,4)))"/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="text-align:left; "/> </tr> </tbody> </table> </xsl:variable> <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )" xpath-default-namespace=""/> <xsl:variable name="altova:TableIndexInfo" select="altova:BuildTableIndexInfo($altova:table)"/> <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> <xsl:variable name="altova:nodeTableWithoutUnwantedParts"> <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:variable> <xsl:sequence select="$altova:nodeTableWithoutUnwantedParts"/> </td> </tr> <tr> <td> <xsl:variable name="altova:table"> <table style="border-collapse:collapse; empty-cells:hide; " align="center" bgcolor="#3c3c3c" cellpadding="5" cellspacing="1" width="100%" altova:hide-rows="empty"> <xsl:variable name="altova:CurrContextGrid_4" select="."/> <xsl:variable name="altova:ColumnData"/> <tbody valign="bottom"> <tr style="color:#EBEBEB; "> <td style="color:#FFFFFF; text-indent:10px; width:15%; " valign="bottom"> <span style="font-family:Arial; font-size:10pt; font-style:italic; "> <xsl:text>Bill To</xsl:text> </span> </td> <td style="color:#FFFFFF; text-align:left; width:45%; " valign="bottom"> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="BillTo"> <xsl:for-each select="Address"> <xsl:for-each select="Name"> <span style="font-family:Arial; font-size:16pt; font-weight:bold; "> <xsl:apply-templates/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="color:#FFFFFF; width:5%; "/> <td style="color:#FFFFFF; width:15%; " valign="bottom"> <span style="font-family:Arial; font-size:10pt; font-style:italic; "> <xsl:text>Id</xsl:text> </span> </td> <td style="color:#FFFFFF; text-align:left; width:40%; " valign="bottom"> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="BillTo"> <xsl:for-each select="Address"> <xsl:for-each select="@addressID"> <span style="font-family:Arial; font-size:16pt; font-weight:bold; "> <xsl:value-of select="string(.)"/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="color:#FFFFFF; width:5%; "/> </tr> </tbody> </table> </xsl:variable> <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )" xpath-default-namespace=""/> <xsl:variable name="altova:TableIndexInfo" select="altova:BuildTableIndexInfo($altova:table)"/> <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> <xsl:variable name="altova:nodeTableWithoutUnwantedParts"> <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:variable> <xsl:sequence select="$altova:nodeTableWithoutUnwantedParts"/> </td> </tr> <tr> <td> <xsl:variable name="altova:table"> <table style="border-collapse:collapse; box-shadow:none; empty-cells:hide; " align="center" bgcolor="#3c3c3c" border="0" cellpadding="5" cellspacing="1" width="100%" altova:hide-rows="empty"> <xsl:variable name="altova:CurrContextGrid_5" select="."/> <xsl:variable name="altova:ColumnData"/> <tbody> <tr style="border-collapse:collapse; color:#EBEBEB; " valign="bottom"> <td style="border-collapse:collapse; color:#FFFFFF; text-indent:10px; width:15%; " valign="bottom"> <span style="font-family:Arial; font-size:10pt; font-style:italic; "> <xsl:text>Ship To</xsl:text> </span> </td> <td style="border-collapse:collapse; color:#FFFFFF; text-align:left; width:30%; " valign="bottom"> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="ShipTo"> <xsl:for-each select="Address"> <xsl:for-each select="PostalAddress"> <xsl:for-each select="DeliverTo"> <span style="font-family:Arial; font-size:16pt; font-weight:bold; "> <xsl:apply-templates/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="border-collapse:collapse; color:#FFFFFF; width:5%; "/> <td style="border-collapse:collapse; color:#FFFFFF; width:15%; "/> <td style="border-collapse:collapse; color:#FFFFFF; width:30%; "/> <td style="border-collapse:collapse; color:#FFFFFF; width:5%; "/> </tr> <tr style="background-color:#EBEBEB; border-collapse:collapse; color:#3c3c3c; " valign="middle"> <td style="text-indent:25px; width:15%; "> <span style="font-family:Consolas; font-size:11pt; font-style:italic; "> <xsl:text>Street</xsl:text> </span> </td> <td style="width:30%; "> <xsl:choose> <xsl:when test="string-length(/Message/cXML/Request/OrderRequest/OrderRequestHeader/BillTo/Address/PostalAddress/Street[2]) > 0"> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="ShipTo"> <xsl:for-each select="Address"> <xsl:for-each select="PostalAddress"> <xsl:for-each select="concat(Street[1], codepoints-to-string(10), Street[2])"> <span style="font-family:Consolas; font-size:12pt; font-weight:bold; "> <xsl:choose> <xsl:when test=". instance of element() or . instance of document-node()"> <xsl:apply-templates/> </xsl:when> <xsl:otherwise> <xsl:value-of select="."/> </xsl:otherwise> </xsl:choose> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:when> <xsl:otherwise> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="ShipTo"> <xsl:for-each select="Address"> <xsl:for-each select="PostalAddress"> <xsl:for-each select="Street[1]"> <span style="font-family:Consolas; font-weight:bold; "> <xsl:apply-templates/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:otherwise> </xsl:choose> </td> <td style="width:5%; "/> <td style="width:15%; "/> <td style="width:30%; "/> <td style="width:5%; "/> </tr> <tr style="background-color:#fcfafa; color:#3c3c3c; " valign="middle"> <td style="text-indent:25px; width:15%; "> <span style="font-family:Consolas; font-size:11pt; font-style:italic; "> <xsl:text>City</xsl:text> </span> </td> <td style="width:30%; "> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="ShipTo"> <xsl:for-each select="Address"> <xsl:for-each select="PostalAddress"> <xsl:for-each select="City"> <span style="font-family:Consolas; font-size:12pt; font-weight:bold; "> <xsl:apply-templates/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="width:5%; "/> <td style="width:15%; "> <span style="font-family:Consolas; font-size:11pt; font-style:italic; "> <xsl:text>State</xsl:text> </span> </td> <td style="text-align:left; width:30%; "> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="ShipTo"> <xsl:for-each select="Address"> <xsl:for-each select="PostalAddress"> <xsl:for-each select="State"> <span style="font-family:Consolas; font-size:12pt; font-weight:bold; "> <xsl:apply-templates/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="width:5%; "/> </tr> <tr style="background-color:#EBEBEB; color:#3c3c3c; " valign="middle"> <td style="text-indent:25px; width:15%; "> <span style="font-family:Consolas; font-size:11pt; font-style:italic; "> <xsl:text>Postal</xsl:text> </span> </td> <td style="width:30%; "> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="ShipTo"> <xsl:for-each select="Address"> <xsl:for-each select="PostalAddress"> <xsl:for-each select="PostalCode"> <span style="font-family:Consolas; font-size:11pt; font-weight:bold; "> <xsl:apply-templates/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="width:5%; "/> <td style="width:15%; "> <span style="font-family:Consolas; font-size:11pt; font-style:italic; "> <xsl:text>Country</xsl:text> </span> </td> <td style="width:30%; "> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="OrderRequestHeader"> <xsl:for-each select="ShipTo"> <xsl:for-each select="Address"> <xsl:for-each select="PostalAddress"> <xsl:for-each select="Country"> <span style="font-family:Consolas; font-size:12pt; font-weight:bold; "> <xsl:apply-templates/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="width:5%; "/> </tr> </tbody> </table> </xsl:variable> <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )" xpath-default-namespace=""/> <xsl:variable name="altova:TableIndexInfo" select="altova:BuildTableIndexInfo($altova:table)"/> <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> <xsl:variable name="altova:nodeTableWithoutUnwantedParts"> <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:variable> <xsl:sequence select="$altova:nodeTableWithoutUnwantedParts"/> </td> </tr> <tr> <td> <xsl:variable name="altova:table"> <table style="border-collapse:collapse; empty-cells:hide; " align="center" bgcolor="#EBEBEB" cellpadding="5" cellspacing="1" width="100%" altova:hide-rows="empty" altova:hide-cols="empty"> <xsl:variable name="altova:CurrContextGrid_6" select="."/> <xsl:variable name="altova:ColumnData"/> <thead style="border-collapse:collapse; height:auto; " valign="bottom"> <tr style="background-color:#E71921; background-size:auto; color:#ebebeb; font-family:Arial Narrow; font-size:12px; height:20px; white-space:nowrap; "> <th> <span style="font-family:Arial Narrow; font-size:12pt; "> <xsl:text>Line </xsl:text> </span> </th> <th style="white-space:nowrap; width:auto; "> <span style="font-family:Arial Narrow; font-size:12pt; "> <xsl:text>Qty</xsl:text> </span> </th> <th style="text-align:center; white-space:nowrap; width:auto; "> <span style="font-family:Arial Narrow; font-size:12pt; "> <xsl:text>Unit</xsl:text> </span> </th> <th style="white-space:nowrap; width:auto; "> <span style="font-family:Arial Narrow; font-size:12pt; "> <xsl:text>Unit Price</xsl:text> </span> </th> <th style="white-space:nowrap; width:auto; "> <span style="font-family:Arial Narrow; font-size:12pt; "> <xsl:text>Supplier Part ID</xsl:text> </span> </th> <th style="white-space:nowrap; width:auto; "> <span style="background-color:transparent; color:#ebebeb; font-family:Arial Narrow; font-size:12pt; "> <xsl:text>Line Total</xsl:text> </span> </th> </tr> </thead> <tbody style="border-bottom-color:gray; border-bottom-style:dashed; border-bottom-width:thin; border-top-color:gray; border-top-width:thin; "> <xsl:for-each select="cXML"> <xsl:for-each select="Request"> <xsl:for-each select="OrderRequest"> <xsl:for-each select="ItemOut"> <tr style="font-family:Consolas; font-size:14px; height:auto; white-space:nowrap; " bgcolor="{if ( position() mod 2 = 0 ) then "#EBEBEB" else "#fcfafa" }"> <td style="text-align:center; white-space:nowrap; width:auto; " valign="middle"> <xsl:for-each select="@lineNumber"> <span style="border-spacing:0; font-family:Consolas; "> <xsl:value-of select="string(.)"/> </span> </xsl:for-each> </td> <td style="text-align:center; white-space:nowrap; width:auto; " valign="middle"> <xsl:for-each select="@quantity"> <span> <xsl:value-of select="string(.)"/> </span> </xsl:for-each> </td> <td style="text-align:center; white-space:nowrap; width:auto; " valign="middle"> <xsl:for-each select="ItemDetail"> <xsl:for-each select="UnitOfMeasure"> <xsl:apply-templates/> </xsl:for-each> </xsl:for-each> </td> <td style="text-align:center; white-space:nowrap; width:auto; "> <xsl:for-each select="ItemDetail"> <xsl:for-each select="UnitPrice"> <xsl:for-each select="Money"> <span> <xsl:variable name="altova:seqContentStrings_7"> <xsl:value-of select="format-number(number(string(.)), '###,##0.00')"/> </xsl:variable> <xsl:variable name="altova:sContent_7" select="string($altova:seqContentStrings_7)"/> <xsl:value-of select="$altova:sContent_7"/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> <td style="text-align:center; white-space:nowrap; width:auto; "> <xsl:for-each select="ItemID"> <xsl:for-each select="SupplierPartID"> <xsl:apply-templates/> </xsl:for-each> </xsl:for-each> </td> <td style="text-align:right; white-space:nowrap; width:auto; "> <xsl:for-each select="Distribution"> <xsl:for-each select="Charge"> <xsl:for-each select="Money"> <span> <xsl:variable name="altova:seqContentStrings_8"> <xsl:value-of select="format-number(number(string(.)), '###,##0.00')"/> </xsl:variable> <xsl:variable name="altova:sContent_8" select="string($altova:seqContentStrings_8)"/> <xsl:value-of select="$altova:sContent_8"/> </span> </xsl:for-each> </xsl:for-each> </xsl:for-each> </td> </tr> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:for-each> </tbody> </table> </xsl:variable> <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )" xpath-default-namespace=""/> <xsl:variable name="altova:TableIndexInfo" select="altova:BuildTableIndexInfo($altova:table)"/> <xsl:variable name="altova:generate-cols" as="xs:boolean*" xpath-default-namespace=""> <xsl:choose> <xsl:when test="$altova:table/table/@altova:hide-cols = 'empty'"> <xsl:sequence select="for $altova:pos in 1 to $altova:col-count return some $altova:cell in $altova:table/table/(thead | tbody | tfoot)/tr/(th | td)[ altova:col-position(., $altova:TableIndexInfo) = $altova:pos ] satisfies not( altova:is-cell-empty( $altova:cell ) )"/> </xsl:when> <xsl:otherwise> <xsl:sequence select="for $altova:pos in 1 to $altova:col-count return not( exists( $altova:table/table/tbody/tr/td[ altova:col-position(., $altova:TableIndexInfo) = $altova:pos ] ) ) or ( some $altova:cell in $altova:table/table/tbody/tr/td[ altova:col-position(., $altova:TableIndexInfo) = $altova:pos ] satisfies not( altova:is-cell-empty( $altova:cell ) ) )"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="altova:nodeTableWithoutUnwantedParts"> <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:variable> <xsl:sequence select="$altova:nodeTableWithoutUnwantedParts"/> </td> </tr> </tbody> </table> </xsl:variable> <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )" xpath-default-namespace=""/> <xsl:variable name="altova:TableIndexInfo" select="altova:BuildTableIndexInfo($altova:table)"/> <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> <xsl:variable name="altova:nodeTableWithoutUnwantedParts"> <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:variable> <xsl:sequence select="$altova:nodeTableWithoutUnwantedParts"/> <br/> <br/> <br/> </xsl:for-each> <br/> <br/> <xsl:variable name="altova:table"> <table style="color:#1e2125; font-size:11px; font-style:italic; " align="center" cellpadding="2" width="50%"> <xsl:variable name="altova:CurrContextGrid_9" select="."/> <xsl:variable name="altova:ColumnData"/> <tbody style="font-size:11px; "> <tr> <td style="text-align:center; "> <span style="font-family:Arial; font-size:16px; font-style:italic; font-weight:bold; white-space:nowrap; "> <xsl:text>ProcessData</xsl:text> </span> </td> </tr> <tr> <td> <xsl:variable name="altova:table"> <table style="color:#1e2125; font-family:Consolas; font-size:11px; font-style:italic; " align="center" bgcolor="white" cellpadding="5" cellspacing="2" width="50%"> <xsl:variable name="altova:CurrContextGrid_10" select="."/> <xsl:variable name="altova:ColumnData"/> <tbody style="background-color:#f9f9f9; font-size:11px; "> <tr style="height:0.30in; white-space:nowrap; "> <td style="font-size:12px; white-space:nowrap; "> <span style="font-size:11px; font-style:italic; font-weight:bold; white-space:nowrap; "> <xsl:text>Partner</xsl:text> </span> </td> <td style="font-size:12px; "> <xsl:for-each select="Message"> <xsl:for-each select="MessagePartnerName"> <xsl:apply-templates/> </xsl:for-each> </xsl:for-each> </td> </tr> <tr style="white-space:nowrap; "> <td style="font-size:12px; white-space:nowrap; "> <span style="font-weight:bold; "> <xsl:text>iFlow</xsl:text> </span> </td> <td style="font-size:12px; "> <xsl:for-each select="Message"> <xsl:for-each select="MessageiFlow"> <xsl:apply-templates/> </xsl:for-each> </xsl:for-each> </td> </tr> <xsl:choose> <xsl:when test="string-length(Message/MessageEndpoint) > 1"> <tr style="white-space:nowrap; "> <td style="font-size:12px; white-space:nowrap; "> <span style="font-size:11px; font-style:italic; font-weight:bold; white-space:nowrap; "> <xsl:text>Endpoint</xsl:text> </span> </td> <td style="font-size:12px; "> <xsl:for-each select="Message"> <xsl:for-each select="MessageEndpoint"> <xsl:apply-templates/> </xsl:for-each> </xsl:for-each> </td> </tr> </xsl:when> <xsl:otherwise/> </xsl:choose> <tr style="white-space:nowrap; "> <td style="font-size:12px; white-space:nowrap; "> <span style="font-weight:bold; "> <xsl:text>Tenant Name</xsl:text> </span> </td> <td style="font-size:12px; "> <xsl:for-each select="Message"> <xsl:for-each select="MessageTenant"> <xsl:apply-templates/> </xsl:for-each> </xsl:for-each> </td> </tr> <xsl:choose> <xsl:when test="string-length(Message/MessageFileName) > 1"> <tr style="white-space:nowrap; "> <td style="font-size:12px; white-space:nowrap; "> <span style="font-size:11px; font-style:italic; font-weight:bold; white-space:nowrap; "> <xsl:text>Source File Name</xsl:text> </span> </td> <td style="font-size:12px; "> <xsl:for-each select="Message"> <xsl:for-each select="MessageFileName"> <xsl:apply-templates/> </xsl:for-each> </xsl:for-each> </td> </tr> </xsl:when> <xsl:otherwise/> </xsl:choose> <xsl:choose> <xsl:when test="string-length(Message/MessageId) > 1"> <tr style="white-space:nowrap; "> <td style="font-size:12px; white-space:nowrap; "> <span style="font-weight:bold; "> <xsl:text>PayloadID</xsl:text> </span> </td> <td style="font-size:12px; "> <xsl:for-each select="Message"> <xsl:for-each select="MessageName"> <xsl:apply-templates/> </xsl:for-each> </xsl:for-each> </td> </tr> </xsl:when> <xsl:otherwise/> </xsl:choose> <tr style="white-space:nowrap; "> <td> <span style="font-size:11px; font-style:italic; font-weight:bold; white-space:nowrap; "> <xsl:text>Date Time</xsl:text> </span> </td> <td> <xsl:for-each select="Message"> <xsl:for-each select="MessageTime"> <xsl:apply-templates/> </xsl:for-each> </xsl:for-each> </td> </tr> <tr style="white-space:nowrap; "> <td style="font-size:12px; white-space:nowrap; "> <span style="font-size:11px; font-style:italic; font-weight:bold; white-space:nowrap; "> <xsl:text>Message ID</xsl:text> </span> </td> <td style="font-size:12px; "> <a> <xsl:choose> <xsl:when test="not(string(concat('https://messagestoreviewer-hf3d1fb3c.dispatcher.us3.hana.ondemand.com/index.html#/entries/',Message/MessageId)))"> <xsl:attribute name="href"> <xsl:text>#</xsl:text> </xsl:attribute> </xsl:when> <xsl:when test="substring(string(concat('https://messagestoreviewer-hf3d1fb3c.dispatcher.us3.hana.ondemand.com/index.html#/entries/',Message/MessageId)), 1, 1) = '#'"> <xsl:attribute name="href"> <xsl:value-of select="concat('https://messagestoreviewer-hf3d1fb3c.dispatcher.us3.hana.ondemand.com/index.html#/entries/',Message/MessageId)"/> </xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="href"> <xsl:if test="substring(string(concat('https://messagestoreviewer-hf3d1fb3c.dispatcher.us3.hana.ondemand.com/index.html#/entries/',Message/MessageId)), 2, 1) = ':'"> <xsl:text>file:///</xsl:text> </xsl:if> <xsl:value-of select="translate(string(concat('https://messagestoreviewer-hf3d1fb3c.dispatcher.us3.hana.ondemand.com/index.html#/entries/',Message/MessageId)), '\', '/')"/> </xsl:attribute> </xsl:otherwise> </xsl:choose> <xsl:for-each select="Message"> <xsl:for-each select="MessageId"> <xsl:apply-templates/> </xsl:for-each> </xsl:for-each> </a> </td> </tr> <tr style="white-space:nowrap; "> <td> <span style="font-weight:bold; "> <xsl:text>Archive</xsl:text> </span> </td> <td> <xsl:choose> <xsl:when test="Message/MessageTenant = "l250804""> <a> <xsl:choose> <xsl:when test="not(string('file://\\idcpsi01\ARCHIVE\CPI'))"> <xsl:attribute name="href"> <xsl:text>#</xsl:text> </xsl:attribute> </xsl:when> <xsl:when test="substring(string('file://\\idcpsi01\ARCHIVE\CPI'), 1, 1) = '#'"> <xsl:attribute name="href"> <xsl:value-of select="'file://\\idcpsi01\ARCHIVE\CPI'"/> </xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="href"> <xsl:if test="substring(string('file://\\idcpsi01\ARCHIVE\CPI'), 2, 1) = ':'"> <xsl:text>file:///</xsl:text> </xsl:if> <xsl:value-of select="translate(string('file://\\idcpsi01\ARCHIVE\CPI'), '\', '/')"/> </xsl:attribute> </xsl:otherwise> </xsl:choose> <span> <xsl:text>\\idcpsi01\ARCHIVE\CPI</xsl:text> </span> </a> </xsl:when> <xsl:when test="$env = "l250805""> <a> <xsl:choose> <xsl:when test="not(string('\\idcpsi01\ARCHIVE\CPI'))"> <xsl:attribute name="href"> <xsl:text>#</xsl:text> </xsl:attribute> </xsl:when> <xsl:when test="substring(string('\\idcpsi01\ARCHIVE\CPI'), 1, 1) = '#'"> <xsl:attribute name="href"> <xsl:value-of select="'\\idcpsi01\ARCHIVE\CPI'"/> </xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="href"> <xsl:if test="substring(string('\\idcpsi01\ARCHIVE\CPI'), 2, 1) = ':'"> <xsl:text>file:///</xsl:text> </xsl:if> <xsl:value-of select="translate(string('\\idcpsi01\ARCHIVE\CPI'), '\', '/')"/> </xsl:attribute> </xsl:otherwise> </xsl:choose> <span> <xsl:text>\\idcpsi01\ARCHIVE\CPI</xsl:text> </span> </a> </xsl:when> </xsl:choose> </td> </tr> </tbody> </table> </xsl:variable> <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )" xpath-default-namespace=""/> <xsl:variable name="altova:TableIndexInfo" select="altova:BuildTableIndexInfo($altova:table)"/> <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> <xsl:variable name="altova:nodeTableWithoutUnwantedParts"> <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:variable> <xsl:sequence select="$altova:nodeTableWithoutUnwantedParts"/> </td> </tr> </tbody> </table> </xsl:variable> <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )" xpath-default-namespace=""/> <xsl:variable name="altova:TableIndexInfo" select="altova:BuildTableIndexInfo($altova:table)"/> <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> <xsl:variable name="altova:nodeTableWithoutUnwantedParts"> <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:variable> <xsl:sequence select="$altova:nodeTableWithoutUnwantedParts"/> <br/> </xsl:for-each> <br/> <br/> <br/> </body> </html> </xsl:template> <xsl:template name="Template1"> <img> <xsl:attribute name="src"> <xsl:variable name="altova:img_src" select="altova:reluri-to-content-id( translate(string('https://www.usps.com/global-elements/header/images/utility-header/logo-sb.svg'), '\', '/') )"/> <xsl:if test="substring( $altova:img_src, 2, 1) = ':'"> <xsl:text>file:///</xsl:text> </xsl:if> <xsl:value-of select="$altova:img_src"/> </xsl:attribute> <xsl:attribute name="alt"/> </img> </xsl:template> <xsl:function name="altova:is-cell-empty" as="xs:boolean"> <xsl:param name="altova:cell" as="element()"/> <xsl:sequence select="altova:is-node-empty( $altova:cell )"/> </xsl:function> <xsl:function name="altova:is-node-empty" as="xs:boolean" xpath-default-namespace=""> <xsl:param name="altova:node" as="element()"/> <xsl:sequence select="every $altova:child in $altova:node/child::node() satisfies ( ( boolean( $altova:child/self::text() ) and string-length( $altova:child ) = 0 ) or ( ( boolean( $altova:child/self::div ) or boolean( $altova:child/self::span ) or boolean( $altova:child/self::a ) ) and altova:is-node-empty( $altova:child ) ) )"/> </xsl:function> <xsl:function name="altova:col-position" as="xs:integer" xpath-default-namespace=""> <xsl:param name="altova:Cell" as="element()"/> <xsl:param name="altova:TableIndexInfo" as="element()"/> <xsl:variable name="altova:nRow" select="altova:GetGridRowNumForCell($altova:Cell)"/> <xsl:variable name="altova:nCell" select="count($altova:Cell/preceding-sibling::th) + count($altova:Cell/preceding-sibling::td) + 1" as="xs:integer"/> <xsl:sequence select="$altova:TableIndexInfo/altova:Row[$altova:nRow]/altova:ColumnIndex[$altova:nCell]"/> </xsl:function> <xsl:template match="@*" mode="altova:copy-table-cell-properties"> <xsl:copy-of select="."/> </xsl:template> <xsl:template match="@colspan" mode="altova:copy-table-cell-properties"/> <xsl:function name="altova:col-span" as="xs:integer"> <xsl:param name="altova:cell" as="element()"/> <xsl:sequence select="if ( exists( $altova:cell/@colspan ) ) then xs:integer( $altova:cell/@colspan ) else 1"/> </xsl:function> <xsl:template match="@* | node()" mode="altova:generate-table"> <xsl:param name="altova:generate-cols"/> <xsl:param name="altova:TableIndexInfo"/> <xsl:copy> <xsl:apply-templates select="@* | node()" mode="#current"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:copy> </xsl:template> <xsl:template match="tbody" mode="altova:generate-table" xpath-default-namespace=""> <xsl:param name="altova:generate-cols"/> <xsl:param name="altova:TableIndexInfo"/> <xsl:choose> <xsl:when test="empty(tr)"> <xsl:copy> <tr> <td/> </tr> </xsl:copy> </xsl:when> <xsl:otherwise> <xsl:copy> <xsl:apply-templates select="@* | node()" mode="#current"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:copy> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="tr" mode="altova:generate-table" xpath-default-namespace=""> <xsl:param name="altova:generate-cols"/> <xsl:param name="altova:TableIndexInfo"/> <xsl:choose> <xsl:when test="ancestor::table[1]/@altova:hide-rows = 'empty'"> <xsl:if test="some $altova:cell in (th | td) satisfies not(altova:is-cell-empty($altova:cell))"> <xsl:copy> <xsl:apply-templates select="@* | node()" mode="#current"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:copy> </xsl:if> </xsl:when> <xsl:when test="ancestor::table[1]/@altova:hide-rows = 'body-empty'"> <xsl:if test="not(exists(parent::tbody)) or (some $altova:cell in td satisfies not(altova:is-cell-empty($altova:cell)))"> <xsl:copy> <xsl:apply-templates select="@* | node()" mode="#current"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:copy> </xsl:if> </xsl:when> <xsl:otherwise> <xsl:copy> <xsl:apply-templates select="@* | node()" mode="#current"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> </xsl:copy> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="th | td" mode="altova:generate-table" xpath-default-namespace=""> <xsl:param name="altova:generate-cols"/> <xsl:param name="altova:TableIndexInfo"/> <xsl:variable name="altova:this-cell" select="."/> <xsl:variable name="altova:col-index" select="altova:col-position($altova:this-cell, $altova:TableIndexInfo)"/> <xsl:choose> <xsl:when test="$altova:generate-cols[$altova:col-index]"> <xsl:copy> <xsl:apply-templates select="@*" mode="#current"> <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> <xsl:with-param name="altova:TableIndexInfo" select="$altova:TableIndexInfo"/> </xsl:apply-templates> <xsl:choose> <xsl:when test="altova:is-cell-empty($altova:this-cell)"> <xsl:text> </xsl:text> </xsl:when> <xsl:otherwise> <xsl:copy-of select="node()"/> </xsl:otherwise> </xsl:choose> </xsl:copy> </xsl:when> <xsl:when test="altova:col-span($altova:this-cell) > 1"> <xsl:for-each select="for $altova:pos in $altova:col-index to ($altova:col-index + altova:col-span($altova:this-cell) - 1) return if ($altova:generate-cols[$altova:pos]) then true() else ()"> <xsl:for-each select="$altova:this-cell"> <xsl:copy> <xsl:apply-templates select="@*" mode="altova:copy-table-cell-properties"/> <xsl:text> </xsl:text> </xsl:copy> </xsl:for-each> </xsl:for-each> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="@colspan" mode="altova:generate-table" xpath-default-namespace=""> <xsl:param name="altova:generate-cols"/> <xsl:param name="altova:TableIndexInfo"/> <xsl:choose> <xsl:when test="exists( ancestor::table[ 1 ]/@altova:hide-cols )"> <xsl:variable name="altova:col-index" select="altova:col-position(.., $altova:TableIndexInfo)"/> <xsl:attribute name="colspan" select="sum( for $altova:pos in $altova:col-index to ( $altova:col-index + xs:integer( . ) - 1 ) return if ( $altova:generate-cols[ $altova:pos ] ) then 1 else 0 )"/> </xsl:when> <xsl:otherwise> <xsl:attribute name="colspan" select="."/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="@altova:hide-rows | @altova:hide-cols" mode="altova:generate-table"/> <xsl:function name="altova:CountLeadingTrueValues"> <xsl:param name="seqBools"/> <xsl:sequence select="if (not($seqBools[1] = true())) then 0 else 1 + altova:CountLeadingTrueValues($seqBools[position() gt 1])"/> </xsl:function> <xsl:function name="altova:GetCellFromRow" as="node()?" xpath-default-namespace=""> <xsl:param name="nodeTableRow" as="node()"/> <xsl:param name="nCell" as="xs:integer"/> <xsl:sequence select="$nodeTableRow/(th | td)[$nCell]"/> </xsl:function> <xsl:function name="altova:GetCellsFromRow" as="node()*" xpath-default-namespace=""> <xsl:param name="nodeTableRow" as="node()"/> <xsl:sequence select="$nodeTableRow/(th | td)"/> </xsl:function> <xsl:function name="altova:GetRowsFromTable" as="node()*" xpath-default-namespace=""> <xsl:param name="nodeTable" as="node()"/> <xsl:sequence select="$nodeTable/(thead | tbody | tfoot)/tr"/> </xsl:function> <xsl:function name="altova:GetRowspanFromCell" as="xs:integer" xpath-default-namespace=""> <xsl:param name="altova:nodeCell" as="node()"/> <xsl:variable name="altova:sRowSpan" select="$altova:nodeCell/@rowspan" as="xs:string?"/> <xsl:variable name="altova:nRowSpan" select="if ($altova:sRowSpan) then xs:integer($altova:sRowSpan) else 1" as="xs:integer"/> <xsl:sequence select="$altova:nRowSpan"/> </xsl:function> <!-- In HTML and FO, the table section order is header, footer, body. This function determines, for a given cell, the number its row would have if the section order were header, body, footer --> <xsl:function name="altova:GetGridRowNumForCell" xpath-default-namespace=""> <xsl:param name="altova:nodeTableCell" as="node()"/> <xsl:variable name="altova:nodeTableRow" select="$altova:nodeTableCell/.." as="node()"/> <xsl:variable name="altova:nodeTableSection" select="$altova:nodeTableRow/.." as="node()"/> <xsl:variable name="altova:sTableSection" select="fn:local-name($altova:nodeTableSection)" as="xs:string"/> <xsl:variable name="altova:nodeTable" select="$altova:nodeTableSection/.." as="node()"/> <xsl:variable name="altova:nRowNumInSection" select="count($altova:nodeTableRow/preceding-sibling::tr) + 1" as="xs:integer"/> <xsl:choose> <xsl:when test="$altova:sTableSection eq 'tbody'"> <xsl:sequence select="count($altova:nodeTable/thead/tr) + $altova:nRowNumInSection"/> </xsl:when> <xsl:when test="$altova:sTableSection eq 'thead'"> <xsl:sequence select="$altova:nRowNumInSection"/> </xsl:when> <xsl:when test="$altova:sTableSection eq 'tfoot'"> <xsl:sequence select="count($altova:nodeTable/thead/tr) + count($altova:nodeTable/tbody/tr) + $altova:nRowNumInSection"/> </xsl:when> <xsl:otherwise> <xsl:message select="'Internal Error'" terminate="yes"/> </xsl:otherwise> </xsl:choose> </xsl:function> <xsl:function name="altova:BuildTableIndexInfo" as="node()" xpath-default-namespace=""> <xsl:param name="altova:nodeTable" as="node()"/> <altova:ColumnIndices> <xsl:variable name="altova:nodeAllRows" select="altova:GetRowsFromTable($altova:nodeTable/table)" as="node()*"/> <xsl:if test="$altova:nodeAllRows"> <xsl:variable name="altova:seqCellsInFirstRow" select="altova:GetCellsFromRow($altova:nodeAllRows[1])" as="node()*"/> <xsl:variable name="altova:nColumnsInTable" select="sum(for $nodeCell in $altova:seqCellsInFirstRow return altova:col-span($nodeCell))" as="xs:integer"/> <xsl:variable name="altova:seqActiveRowSpans" select="for $Cell in 1 to $altova:nColumnsInTable return 0" as="xs:integer*"/> <!--xsl:sequence select="altova:BuildTableIndexInfo_Recursive($altova:nodeAllRows, 1, $altova:seqActiveRowSpans)"/--> <xsl:call-template name="altova:BuildTableIndexInfo_Recursive"> <xsl:with-param name="altova:nodeTableRows" select="$altova:nodeAllRows"/> <xsl:with-param name="altova:nRow" select="1"/> <xsl:with-param name="altova:seqActiveRowSpans" select="$altova:seqActiveRowSpans"/> </xsl:call-template> </xsl:if> </altova:ColumnIndices> </xsl:function> <!--xsl:template name="altova:BuildTableIndexInfo_Recursive" as="node()*" xpath-default-namespace=""--> <xsl:template name="altova:BuildTableIndexInfo_Recursive" xpath-default-namespace=""> <xsl:param name="altova:nodeTableRows" as="node()*"/> <xsl:param name="altova:nRow" as="xs:integer"/> <xsl:param name="altova:seqActiveRowSpans" as="xs:integer*"/> <xsl:variable name="altova:nodeRow" select="$altova:nodeTableRows[$altova:nRow]" as="node()?"/> <xsl:choose> <xsl:when test="empty($altova:nodeRow)"> <xsl:sequence select="()"/> </xsl:when> <xsl:when test="empty(altova:GetCellFromRow($altova:nodeRow, 1))"> <xsl:sequence select="()"/> </xsl:when> <xsl:otherwise> <xsl:variable name="altova:nodeCell1" select="altova:GetCellFromRow($altova:nodeRow, 1)" as="node()?"/> <xsl:variable name="altova:nColSpan" select="altova:col-span($altova:nodeCell1)" as="xs:integer"/> <altova:Row> <!--xsl:variable name="altova:seqColumnIndicesOfCurrentRow" select="altova:BuildTableIndexInfo_SingleRow_Recursive($altova:seqActiveRowSpans, $altova:nodeRow, 1, 1, $altova:nColSpan, true(), 0, 0)" as="node()*"/> <xsl:sequence select="$altova:seqColumnIndicesOfCurrentRow"/--> <xsl:call-template name="altova:BuildTableIndexInfo_SingleRow_Recursive"> <xsl:with-param name="altova:seqActiveRowSpans" select="$altova:seqActiveRowSpans"/> <xsl:with-param name="altova:nodeRow" select="$altova:nodeRow"/> <xsl:with-param name="altova:nColumn" select="1"/> <xsl:with-param name="altova:nCellInCurrentRow" select="1"/> <xsl:with-param name="altova:nColSpanInCellRemaining" select="$altova:nColSpan"/> <xsl:with-param name="altova:bColSpanBegins" select="true()"/> <xsl:with-param name="altova:nCurrentSum" select="0"/> <xsl:with-param name="altova:nRowSpansToAdd" select="0"/> </xsl:call-template> </altova:Row> <xsl:variable name="altova:seqActiveRowSpans_New" select="altova:BuildTableIndexInfo_ActiveRowSpans_Recursive($altova:seqActiveRowSpans, $altova:nodeRow, 1, 1, $altova:nColSpan)" as="xs:integer*"/> <!--xsl:sequence select="altova:BuildTableIndexInfo_Recursive($altova:nodeTableRows, $altova:nRow + 1, $altova:seqActiveRowSpans_New)"/--> <xsl:call-template name="altova:BuildTableIndexInfo_Recursive"> <xsl:with-param name="altova:nodeTableRows" select="$altova:nodeTableRows"/> <xsl:with-param name="altova:nRow" select="$altova:nRow + 1"/> <xsl:with-param name="altova:seqActiveRowSpans" select="$altova:seqActiveRowSpans_New"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <!--xsl:template name="altova:BuildTableIndexInfo_SingleRow_Recursive" as="node()*" xpath-default-namespace=""--> <xsl:template name="altova:BuildTableIndexInfo_SingleRow_Recursive" xpath-default-namespace=""> <xsl:param name="altova:seqActiveRowSpans" as="xs:integer*"/> <xsl:param name="altova:nodeRow" as="node()"/> <xsl:param name="altova:nColumn" as="xs:integer"/> <xsl:param name="altova:nCellInCurrentRow" as="xs:integer"/> <xsl:param name="altova:nColSpanInCellRemaining" as="xs:integer"/> <xsl:param name="altova:bColSpanBegins" as="xs:boolean"/> <!-- Also true if it's just a single cell --> <xsl:param name="altova:nCurrentSum" as="xs:integer"/> <xsl:param name="altova:nRowSpansToAdd" as="xs:integer"/> <xsl:choose> <xsl:when test="$altova:nColumn gt count($altova:seqActiveRowSpans)"> <xsl:sequence select="()"/> </xsl:when> <!-- If the cell is not under a rowspan --> <xsl:when test="$altova:seqActiveRowSpans[$altova:nColumn] eq 0"> <!-- If the cell is not under a colspan --> <xsl:if test="$altova:bColSpanBegins eq true()"> <!-- A non-spanned cell starts in this column --> <altova:ColumnIndex> <xsl:sequence select="$altova:nCurrentSum + 1"/> </altova:ColumnIndex> </xsl:if> <xsl:variable name="altova:nCellInCurrentRow_New" select="if ($altova:nColSpanInCellRemaining gt 1) then $altova:nCellInCurrentRow else $altova:nCellInCurrentRow + 1" as="xs:integer"/> <xsl:variable name="altova:nColSpanInCell_New" select="if ($altova:nColSpanInCellRemaining gt 1) then $altova:nColSpanInCellRemaining - 1 else if (empty(altova:GetCellFromRow($altova:nodeRow, $altova:nCellInCurrentRow_New))) then 1 else altova:col-span(altova:GetCellFromRow($altova:nodeRow, $altova:nCellInCurrentRow_New))" as="xs:integer"/> <xsl:variable name="altova:bColSpanBegins_New" select="$altova:nCellInCurrentRow ne $altova:nCellInCurrentRow_New" as="xs:boolean"/> <!--xsl:sequence select="altova:BuildTableIndexInfo_SingleRow_Recursive($altova:seqActiveRowSpans, $altova:nodeRow, $altova:nColumn + 1, $altova:nCellInCurrentRow_New, $altova:nColSpanInCell_New, $altova:bColSpanBegins_New, $altova:nCurrentSum + 1, $altova:nRowSpansToAdd)"/--> <xsl:call-template name="altova:BuildTableIndexInfo_SingleRow_Recursive"> <xsl:with-param name="altova:seqActiveRowSpans" select="$altova:seqActiveRowSpans"/> <xsl:with-param name="altova:nodeRow" select="$altova:nodeRow"/> <xsl:with-param name="altova:nColumn" select="$altova:nColumn + 1"/> <xsl:with-param name="altova:nCellInCurrentRow" select="$altova:nCellInCurrentRow_New"/> <xsl:with-param name="altova:nColSpanInCellRemaining" select="$altova:nColSpanInCell_New"/> <xsl:with-param name="altova:bColSpanBegins" select="$altova:bColSpanBegins_New"/> <xsl:with-param name="altova:nCurrentSum" select="$altova:nCurrentSum + 1"/> <xsl:with-param name="altova:nRowSpansToAdd" select="$altova:nRowSpansToAdd"/> </xsl:call-template> </xsl:when> <!-- The cell is under a rowspan --> <xsl:otherwise> <!--xsl:sequence select="altova:BuildTableIndexInfo_SingleRow_Recursive($altova:seqActiveRowSpans, $altova:nodeRow, $altova:nColumn + 1, $altova:nCellInCurrentRow, $altova:nColSpanInCellRemaining, $altova:bColSpanBegins, $altova:nCurrentSum + 1, $altova:nRowSpansToAdd + 1)"/--> <xsl:call-template name="altova:BuildTableIndexInfo_SingleRow_Recursive"> <xsl:with-param name="altova:seqActiveRowSpans" select="$altova:seqActiveRowSpans"/> <xsl:with-param name="altova:nodeRow" select="$altova:nodeRow"/> <xsl:with-param name="altova:nColumn" select="$altova:nColumn + 1"/> <xsl:with-param name="altova:nCellInCurrentRow" select="$altova:nCellInCurrentRow"/> <xsl:with-param name="altova:nColSpanInCellRemaining" select="$altova:nColSpanInCellRemaining"/> <xsl:with-param name="altova:bColSpanBegins" select="$altova:bColSpanBegins"/> <xsl:with-param name="altova:nCurrentSum" select="$altova:nCurrentSum + 1"/> <xsl:with-param name="altova:nRowSpansToAdd" select="$altova:nRowSpansToAdd + 1"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:function name="altova:BuildTableIndexInfo_ActiveRowSpans_Recursive" as="xs:integer*" xpath-default-namespace=""> <xsl:param name="altova:seqRowSpans" as="xs:integer*"/> <xsl:param name="altova:nodeCurrentRow" as="node()"/> <xsl:param name="altova:nColumn" as="xs:integer"/> <xsl:param name="altova:nCellInCurrentRow" as="xs:integer"/> <xsl:param name="altova:nColSpanInCellRemaining" as="xs:integer"/> <xsl:choose> <xsl:when test="$altova:nColumn gt count($altova:seqRowSpans)"> <xsl:sequence select="()"/> </xsl:when> <xsl:otherwise> <xsl:variable name="altova:nRowSpanForCurrentColumn" select="altova:BuildTableIndexInfo_ActiveRowSpans_SingleColumn($altova:seqRowSpans, $altova:nodeCurrentRow, $altova:nColumn, $altova:nCellInCurrentRow)" as="xs:integer?"/> <xsl:sequence select="$altova:nRowSpanForCurrentColumn"/> <xsl:variable name="altova:nCellInCurrentRow_New" select="if ($altova:seqRowSpans[$altova:nColumn] eq 0 and $altova:nColSpanInCellRemaining eq 1) then $altova:nCellInCurrentRow + 1 else $altova:nCellInCurrentRow" as="xs:integer"/> <xsl:variable name="altova:nColSpanInCell_New" select="if ($altova:seqRowSpans[$altova:nColumn] eq 0 and $altova:nCellInCurrentRow eq $altova:nCellInCurrentRow_New) then $altova:nColSpanInCellRemaining - 1 else if (empty(altova:GetCellFromRow($altova:nodeCurrentRow, $altova:nCellInCurrentRow_New))) then 1 else altova:col-span(altova:GetCellFromRow($altova:nodeCurrentRow, $altova:nCellInCurrentRow_New))" as="xs:integer"/> <xsl:sequence select="altova:BuildTableIndexInfo_ActiveRowSpans_Recursive($altova:seqRowSpans, $altova:nodeCurrentRow, $altova:nColumn + 1, $altova:nCellInCurrentRow_New, $altova:nColSpanInCell_New)"/> </xsl:otherwise> </xsl:choose> </xsl:function> <xsl:function name="altova:BuildTableIndexInfo_ActiveRowSpans_SingleColumn" as="xs:integer?" xpath-default-namespace=""> <xsl:param name="altova:seqRowSpans" as="xs:integer*"/> <xsl:param name="altova:nodeCurrentRow" as="node()"/> <xsl:param name="altova:nColumn" as="xs:integer"/> <xsl:param name="altova:nCellInCurrentRow" as="xs:integer"/> <xsl:choose> <xsl:when test="$altova:seqRowSpans[$altova:nColumn] gt 0"> <xsl:sequence select="$altova:seqRowSpans[$altova:nColumn] - 1"/> </xsl:when> <xsl:otherwise> <xsl:variable name="altova:nodeCell" select="altova:GetCellFromRow($altova:nodeCurrentRow, $altova:nCellInCurrentRow)" as="node()"/> <xsl:sequence select="altova:GetRowspanFromCell($altova:nodeCell) - 1"/> </xsl:otherwise> </xsl:choose> </xsl:function> <xsl:function name="altova:reluri-to-content-id" as="xs:string"> <xsl:param name="input"/> <xsl:choose> <xsl:when test="$altova:bGeneratingMime and not(contains($input, '://') or starts-with($input, '/') or contains($input, ':/') or contains($input, ':\'))"> <xsl:sequence select="string-join(('cid:', encode-for-uri($input), '@', $altova:execution-guid, '.Altova.StyleVision'), '')"/> </xsl:when> <xsl:otherwise> <xsl:sequence select="$input"/> </xsl:otherwise> </xsl:choose> </xsl:function> <xsl:template name="altova:xml-table-generate-table-matrix-nextrow-rowspan"> <xsl:param name="pos"/> <xsl:param name="endpos"/> <xsl:param name="rowinfo"/> <xsl:variable name="rowspan"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="($pos - 1) * 2 + 2"/> <xsl:with-param name="vector" select="$rowinfo"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="number($rowspan) > 0"> <xsl:if test="$endpos = -1 or $pos < $endpos"> <xsl:variable name="colspan"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="($pos - 1) * 2 + 1"/> <xsl:with-param name="vector" select="$rowinfo"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat($colspan,';',number($rowspan) - 1,';')"/> <xsl:call-template name="altova:xml-table-generate-table-matrix-nextrow-rowspan"> <xsl:with-param name="pos" select="$pos + 1"/> <xsl:with-param name="endpos" select="$endpos"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> </xsl:call-template> </xsl:if> </xsl:when> <xsl:otherwise> <xsl:if test="$endpos != -1 and $pos < $endpos"> <xsl:value-of select="'0;0;'"/> <xsl:call-template name="altova:xml-table-generate-table-matrix-nextrow-rowspan"> <xsl:with-param name="pos" select="$pos + 1"/> <xsl:with-param name="endpos" select="$endpos"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> </xsl:call-template> </xsl:if> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:xml-table-fill-table-matrix-with-dummy-cells"> <xsl:param name="pos"/> <xsl:param name="endpos"/> <xsl:param name="rowinfo"/> <xsl:variable name="rowspan"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="($pos - 1) * 2 + 2"/> <xsl:with-param name="vector" select="$rowinfo"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="number($rowspan) > 0"> <xsl:if test="$endpos = -1 or $pos < $endpos"> <xsl:variable name="colspan"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="($pos - 1) * 2 + 1"/> <xsl:with-param name="vector" select="$rowinfo"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="number($colspan) > 0">5</xsl:when> <xsl:otherwise>3</xsl:otherwise> </xsl:choose> <xsl:call-template name="altova:xml-table-fill-table-matrix-with-dummy-cells"> <xsl:with-param name="pos" select="$pos + 1"/> <xsl:with-param name="endpos" select="$endpos"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> </xsl:call-template> </xsl:if> </xsl:when> <xsl:otherwise> <xsl:if test="$endpos != -1 and $pos < $endpos"> <xsl:value-of select="'2'"/> <xsl:call-template name="altova:xml-table-fill-table-matrix-with-dummy-cells"> <xsl:with-param name="pos" select="$pos + 1"/> <xsl:with-param name="endpos" select="$endpos"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> </xsl:call-template> </xsl:if> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:xml-table-table-matrix-get-master-cell-colnum"> <xsl:param name="colnum"/> <xsl:param name="rownum"/> <xsl:param name="col-count"/> <xsl:param name="table-matrix"/> <xsl:variable name="rowstart" select="$col-count * ($rownum - 1)"/> <xsl:variable name="entry-type" select="substring($table-matrix,$rowstart + $colnum,1)"/> <xsl:choose> <xsl:when test="$entry-type='4' or $entry-type='5'"> <xsl:call-template name="altova:xml-table-table-matrix-get-master-cell-colnum"> <xsl:with-param name="colnum" select="$colnum - 1"/> <xsl:with-param name="rownum" select="$rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$colnum"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:xml-table-table-matrix-get-master-cell-rownum"> <xsl:param name="colnum"/> <xsl:param name="rownum"/> <xsl:param name="col-count"/> <xsl:param name="table-matrix"/> <xsl:variable name="rowstart" select="$col-count * ($rownum - 1)"/> <xsl:variable name="entry-type" select="substring($table-matrix,$rowstart + $colnum,1)"/> <xsl:choose> <xsl:when test="$entry-type='3'"> <xsl:call-template name="altova:xml-table-table-matrix-get-master-cell-rownum"> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="$rownum - 1"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$rownum"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:xml-table-table-matrix-calc-spanned-cols"> <xsl:param name="colnum"/> <xsl:param name="rownum"/> <xsl:param name="col-count"/> <xsl:param name="table-matrix"/> <xsl:call-template name="altova:xml-table-table-matrix-calc-spanned-cols-helper"> <xsl:with-param name="spanned-cols" select="0"/> <xsl:with-param name="colnum" select="$colnum + 1"/> <xsl:with-param name="rownum" select="$rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:template> <xsl:template name="altova:xml-table-table-matrix-calc-spanned-cols-helper"> <xsl:param name="spanned-cols"/> <xsl:param name="colnum"/> <xsl:param name="rownum"/> <xsl:param name="col-count"/> <xsl:param name="table-matrix"/> <xsl:choose> <xsl:when test="$colnum <= $col-count"> <xsl:variable name="rowstart" select="$col-count * ($rownum - 1)"/> <xsl:variable name="entry-type" select="substring($table-matrix,$rowstart + $colnum,1)"/> <xsl:choose> <xsl:when test="$entry-type='4' or $entry-type='5'"> <xsl:call-template name="altova:xml-table-table-matrix-calc-spanned-cols-helper"> <xsl:with-param name="spanned-cols" select="$spanned-cols + 1"/> <xsl:with-param name="colnum" select="$colnum + 1"/> <xsl:with-param name="rownum" select="$rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$spanned-cols"/> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:value-of select="$spanned-cols"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:xml-table-table-matrix-calc-spanned-rows"> <xsl:param name="colnum"/> <xsl:param name="rownum"/> <xsl:param name="col-count"/> <xsl:param name="row-count"/> <xsl:param name="table-matrix"/> <xsl:call-template name="altova:xml-table-table-matrix-calc-spanned-rows-helper"> <xsl:with-param name="spanned-rows" select="0"/> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="$rownum + 1"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:template> <xsl:template name="altova:xml-table-table-matrix-calc-spanned-rows-helper"> <xsl:param name="spanned-rows"/> <xsl:param name="colnum"/> <xsl:param name="rownum"/> <xsl:param name="col-count"/> <xsl:param name="row-count"/> <xsl:param name="table-matrix"/> <xsl:choose> <xsl:when test="$rownum <= $row-count"> <xsl:variable name="rowstart" select="$col-count * ($rownum - 1)"/> <xsl:variable name="entry-type" select="substring($table-matrix,$rowstart + $colnum,1)"/> <xsl:choose> <xsl:when test="$entry-type='3' or $entry-type='5'"> <xsl:call-template name="altova:xml-table-table-matrix-calc-spanned-rows-helper"> <xsl:with-param name="spanned-rows" select="$spanned-rows + 1"/> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="$rownum + 1"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$spanned-rows"/> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:value-of select="$spanned-rows"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:vector-count"> <xsl:param name="vector"/> <xsl:param name="separator"/> <xsl:call-template name="altova:vector-count-helper"> <xsl:with-param name="vector" select="$vector"/> <xsl:with-param name="separator" select="$separator"/> <xsl:with-param name="count" select="0"/> </xsl:call-template> </xsl:template> <xsl:template name="altova:vector-count-helper"> <xsl:param name="vector"/> <xsl:param name="separator"/> <xsl:param name="count"/> <xsl:choose> <xsl:when test="not($vector)"> <xsl:value-of select="$count"/> </xsl:when> <xsl:otherwise> <xsl:call-template name="altova:vector-count-helper"> <xsl:with-param name="vector" select="substring-after($vector,$separator)"/> <xsl:with-param name="separator" select="$separator"/> <xsl:with-param name="count" select="$count + 1"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:vector-count-value"> <xsl:param name="value"/> <xsl:param name="vector"/> <xsl:param name="separator"/> <xsl:call-template name="altova:vector-count-value-helper"> <xsl:with-param name="value" select="$value"/> <xsl:with-param name="vector" select="$vector"/> <xsl:with-param name="separator" select="$separator"/> <xsl:with-param name="count" select="0"/> </xsl:call-template> </xsl:template> <xsl:template name="altova:vector-count-value-helper"> <xsl:param name="value"/> <xsl:param name="vector"/> <xsl:param name="separator"/> <xsl:param name="count"/> <xsl:choose> <xsl:when test="string($vector)"> <xsl:variable name="current-value"> <xsl:choose> <xsl:when test="contains($vector,$separator)"> <xsl:value-of select="substring-before($vector,$separator)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$vector"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="new-count"> <xsl:choose> <xsl:when test="$value=string($current-value)"> <xsl:value-of select="$count + 1"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$count"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:call-template name="altova:vector-count-value-helper"> <xsl:with-param name="value" select="$value"/> <xsl:with-param name="vector" select="substring-after($vector,$separator)"/> <xsl:with-param name="separator" select="$separator"/> <xsl:with-param name="count" select="number($new-count)"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$count"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:vector-multiply-values"> <xsl:param name="multiplier"/> <xsl:param name="vector"/> <xsl:param name="separator"/> <xsl:if test="string($vector)"> <xsl:variable name="current-value"> <xsl:choose> <xsl:when test="contains($vector,$separator)"> <xsl:value-of select="substring-before($vector,$separator)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$vector"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:if test="string($current-value)"> <xsl:value-of select="number($current-value) * $multiplier"/> <xsl:value-of select="$separator"/> </xsl:if> <xsl:call-template name="altova:vector-multiply-values"> <xsl:with-param name="multiplier" select="$multiplier"/> <xsl:with-param name="vector" select="substring-after($vector,$separator)"/> <xsl:with-param name="separator" select="$separator"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:vector-replace-value"> <xsl:param name="old-value"/> <xsl:param name="new-value"/> <xsl:param name="vector"/> <xsl:param name="separator"/> <xsl:if test="string($vector)"> <xsl:variable name="current-value"> <xsl:choose> <xsl:when test="contains($vector,$separator)"> <xsl:value-of select="substring-before($vector,$separator)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$vector"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="$current-value = $old-value"> <xsl:value-of select="$new-value"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$current-value"/> </xsl:otherwise> </xsl:choose> <xsl:value-of select="$separator"/> <xsl:call-template name="altova:vector-replace-value"> <xsl:with-param name="old-value" select="$old-value"/> <xsl:with-param name="new-value" select="$new-value"/> <xsl:with-param name="vector" select="substring-after($vector,$separator)"/> <xsl:with-param name="separator" select="$separator"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:vector-reverse"> <xsl:param name="vector"/> <xsl:param name="separator"/> <xsl:if test="$vector"> <xsl:call-template name="altova:vector-reverse"> <xsl:with-param name="vector" select="substring-after($vector,$separator)"/> <xsl:with-param name="separator" select="$separator"/> </xsl:call-template> <xsl:choose> <xsl:when test="contains($vector,$separator)"> <xsl:value-of select="concat(substring-before($vector,$separator),$separator)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat($vector,$separator)"/> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:template> <xsl:template name="altova:vector-get-value"> <xsl:param name="index"/> <xsl:param name="vector"/> <xsl:param name="separator"/> <xsl:choose> <xsl:when test="$index = 1"> <xsl:choose> <xsl:when test="contains($vector,$separator)"> <xsl:value-of select="substring-before($vector,$separator)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$vector"/> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="$index - 1"/> <xsl:with-param name="vector" select="substring-after($vector,$separator)"/> <xsl:with-param name="separator" select="$separator"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:vector-append"> <xsl:param name="count"/> <xsl:param name="value"/> <xsl:param name="separator"/> <xsl:if test="$count > 0"> <xsl:value-of select="concat($value,$separator)"/> <xsl:call-template name="altova:vector-append"> <xsl:with-param name="count" select="$count - 1"/> <xsl:with-param name="value" select="$value"/> <xsl:with-param name="separator" select="$separator"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:vector-calc-sum"> <xsl:param name="start-sum"/> <xsl:param name="vector"/> <xsl:param name="separator"/> <xsl:choose> <xsl:when test="string($vector)"> <xsl:variable name="value"> <xsl:choose> <xsl:when test="contains($vector,$separator)"> <xsl:value-of select="substring-before($vector,$separator)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$vector"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:call-template name="altova:vector-calc-sum"> <xsl:with-param name="start-sum" select="$start-sum + number($value)"/> <xsl:with-param name="vector" select="substring-after($vector,$separator)"/> <xsl:with-param name="separator" select="$separator"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$start-sum"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:vector-calc-sum-range"> <xsl:param name="start-sum"/> <xsl:param name="from"/> <xsl:param name="to"/> <xsl:param name="vector"/> <xsl:param name="separator"/> <xsl:call-template name="altova:vector-calc-sum-range-helper"> <xsl:with-param name="start-sum" select="$start-sum"/> <xsl:with-param name="pos" select="1"/> <xsl:with-param name="from" select="$from"/> <xsl:with-param name="to" select="$to"/> <xsl:with-param name="vector" select="$vector"/> <xsl:with-param name="separator" select="$separator"/> </xsl:call-template> </xsl:template> <xsl:template name="altova:vector-calc-sum-range-helper"> <xsl:param name="start-sum"/> <xsl:param name="pos"/> <xsl:param name="from"/> <xsl:param name="to"/> <xsl:param name="vector"/> <xsl:param name="separator"/> <xsl:choose> <xsl:when test="$pos < $from"> <xsl:call-template name="altova:vector-calc-sum-range-helper"> <xsl:with-param name="start-sum" select="$start-sum"/> <xsl:with-param name="pos" select="$pos + 1"/> <xsl:with-param name="from" select="$from"/> <xsl:with-param name="to" select="$to"/> <xsl:with-param name="vector" select="substring-after($vector,$separator)"/> <xsl:with-param name="separator" select="$separator"/> </xsl:call-template> </xsl:when> <xsl:when test="$pos > $to"> <xsl:value-of select="$start-sum"/> </xsl:when> <xsl:otherwise> <xsl:variable name="value"> <xsl:choose> <xsl:when test="contains($vector,$separator)"> <xsl:value-of select="substring-before($vector,$separator)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$vector"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:call-template name="altova:vector-calc-sum-range-helper"> <xsl:with-param name="start-sum" select="$start-sum + number($value)"/> <xsl:with-param name="pos" select="$pos + 1"/> <xsl:with-param name="from" select="$from"/> <xsl:with-param name="to" select="$to"/> <xsl:with-param name="vector" select="substring-after($vector,$separator)"/> <xsl:with-param name="separator" select="$separator"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:vector-merge-vectors-using-max-value"> <xsl:param name="vector1"/> <xsl:param name="vector2"/> <xsl:param name="separator"/> <xsl:choose> <xsl:when test="string($vector1) and string($vector2)"> <xsl:variable name="value1"> <xsl:choose> <xsl:when test="contains($vector1,$separator)"> <xsl:value-of select="substring-before($vector1,$separator)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$vector1"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="value2"> <xsl:choose> <xsl:when test="contains($vector2,$separator)"> <xsl:value-of select="substring-before($vector2,$separator)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$vector2"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="number($value1) > number($value2)"> <xsl:value-of select="$value1"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$value2"/> </xsl:otherwise> </xsl:choose> <xsl:value-of select="$separator"/> <xsl:call-template name="altova:vector-merge-vectors-using-max-value"> <xsl:with-param name="vector1" select="substring-after($vector1,$separator)"/> <xsl:with-param name="vector2" select="substring-after($vector2,$separator)"/> <xsl:with-param name="separator" select="$separator"/> </xsl:call-template> </xsl:when> <xsl:when test="string($vector1)"> <xsl:value-of select="$vector1"/> </xsl:when> <xsl:when test="string($vector2)"> <xsl:value-of select="$vector2"/> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="altova:char-vector-append"> <xsl:param name="count"/> <xsl:param name="char"/> <xsl:if test="$count > 0"> <xsl:value-of select="$char"/> <xsl:call-template name="altova:char-vector-append"> <xsl:with-param name="count" select="$count - 1"/> <xsl:with-param name="char" select="$char"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:char-vector-calc-index-of-nth-char"> <xsl:param name="n"/> <xsl:param name="char"/> <xsl:param name="char-vector"/> <xsl:call-template name="altova:char-vector-calc-index-of-nth-char-helper"> <xsl:with-param name="pos" select="1"/> <xsl:with-param name="count" select="0"/> <xsl:with-param name="n" select="$n"/> <xsl:with-param name="char" select="$char"/> <xsl:with-param name="char-vector" select="$char-vector"/> </xsl:call-template> </xsl:template> <xsl:template name="altova:char-vector-calc-index-of-nth-char-helper"> <xsl:param name="pos"/> <xsl:param name="count"/> <xsl:param name="n"/> <xsl:param name="char"/> <xsl:param name="char-vector"/> <xsl:choose> <xsl:when test="substring($char-vector,$pos,1)=$char"> <xsl:choose> <xsl:when test="$n = $count+1"> <xsl:value-of select="$pos"/> </xsl:when> <xsl:otherwise> <xsl:if test="$pos < string-length($char-vector)"> <xsl:call-template name="altova:char-vector-calc-index-of-nth-char-helper"> <xsl:with-param name="pos" select="$pos + 1"/> <xsl:with-param name="count" select="$count + 1"/> <xsl:with-param name="n" select="$n"/> <xsl:with-param name="char" select="$char"/> <xsl:with-param name="char-vector" select="$char-vector"/> </xsl:call-template> </xsl:if> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:if test="$pos < string-length($char-vector)"> <xsl:call-template name="altova:char-vector-calc-index-of-nth-char-helper"> <xsl:with-param name="pos" select="$pos + 1"/> <xsl:with-param name="count" select="$count"/> <xsl:with-param name="n" select="$n"/> <xsl:with-param name="char" select="$char"/> <xsl:with-param name="char-vector" select="$char-vector"/> </xsl:call-template> </xsl:if> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-get-property"> <xsl:param name="property"/> <xsl:param name="css-styles"/> <xsl:choose> <xsl:when test="not($css-styles)"/> <xsl:when test="normalize-space(substring-before($css-styles,':'))=$property"> <xsl:choose> <xsl:when test="contains($css-styles,';')"> <xsl:value-of select="normalize-space(substring-after(substring-before($css-styles,';'),':'))"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="normalize-space(substring-after($css-styles,':'))"/> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:call-template name="altova:css-styles-get-property"> <xsl:with-param name="property" select="$property"/> <xsl:with-param name="css-styles" select="substring-after($css-styles,';')"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-remove-property"> <xsl:param name="property"/> <xsl:param name="css-styles"/> <xsl:if test="string($css-styles)"> <xsl:variable name="actual-property" select="normalize-space(substring-before($css-styles,':'))"/> <xsl:if test="not(contains($actual-property,';'))"> <xsl:if test="$actual-property!=$property"> <xsl:variable name="value"> <xsl:choose> <xsl:when test="contains($css-styles,';')"> <xsl:value-of select="normalize-space(substring-after(substring-before($css-styles,';'),':'))"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="normalize-space(substring-after($css-styles,':'))"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:value-of select="concat($actual-property,':',$value,';')"/> </xsl:if> </xsl:if> <xsl:call-template name="altova:css-styles-remove-property"> <xsl:with-param name="property" select="$property"/> <xsl:with-param name="css-styles" select="substring-after($css-styles,';')"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:css-styles-get-inherited-styles-for-table-cell"> <xsl:param name="css-styles"/> <xsl:if test="string($css-styles)"> <xsl:variable name="property" select="normalize-space(substring-before($css-styles,':'))"/> <xsl:variable name="value"> <xsl:choose> <xsl:when test="contains($css-styles,';')"> <xsl:value-of select="normalize-space(substring-after(substring-before($css-styles,';'),':'))"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="normalize-space(substring-after($css-styles,':'))"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="$property='background'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='background-color'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='color'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='font'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='font-family'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='font-size'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='font-style'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='font-variant'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='font-weight'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='letter-spacing'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='text-align'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='text-decoration'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='text-indent'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='text-transform'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> <xsl:when test="$property='vertical-align'"> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:when> </xsl:choose> <xsl:call-template name="altova:css-styles-get-inherited-styles-for-table-cell"> <xsl:with-param name="css-styles" select="substring-after($css-styles,';')"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:css-styles-split-shorthand-styles"> <xsl:param name="css-styles"/> <xsl:if test="string($css-styles)"> <xsl:variable name="property" select="normalize-space(substring-before($css-styles,':'))"/> <xsl:if test="string($property) and not(contains($property,';'))"> <xsl:variable name="value"> <xsl:choose> <xsl:when test="contains($css-styles,';')"> <xsl:value-of select="normalize-space(substring-after(substring-before($css-styles,';'),':'))"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="normalize-space(substring-after($css-styles,':'))"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="$property='background'"> <xsl:call-template name="altova:css-styles-split-background"> <xsl:with-param name="value" select="string($value)"/> </xsl:call-template> </xsl:when> <xsl:when test="$property='border'"> <xsl:call-template name="altova:css-styles-split-border"> <xsl:with-param name="value" select="string($value)"/> </xsl:call-template> </xsl:when> <xsl:when test="$property='border-top'"> <xsl:call-template name="altova:css-styles-split-border-top"> <xsl:with-param name="value" select="string($value)"/> </xsl:call-template> </xsl:when> <xsl:when test="$property='border-right'"> <xsl:call-template name="altova:css-styles-split-border-right"> <xsl:with-param name="value" select="string($value)"/> </xsl:call-template> </xsl:when> <xsl:when test="$property='border-bottom'"> <xsl:call-template name="altova:css-styles-split-border-bottom"> <xsl:with-param name="value" select="string($value)"/> </xsl:call-template> </xsl:when> <xsl:when test="$property='border-left'"> <xsl:call-template name="altova:css-styles-split-border-left"> <xsl:with-param name="value" select="string($value)"/> </xsl:call-template> </xsl:when> <xsl:when test="$property='border-color'"> <xsl:call-template name="altova:css-styles-split-border-color"> <xsl:with-param name="value" select="string($value)"/> </xsl:call-template> </xsl:when> <xsl:when test="$property='border-style'"> <xsl:call-template name="altova:css-styles-split-border-style"> <xsl:with-param name="value" select="string($value)"/> </xsl:call-template> </xsl:when> <xsl:when test="$property='border-width'"> <xsl:call-template name="altova:css-styles-split-border-width"> <xsl:with-param name="value" select="string($value)"/> </xsl:call-template> </xsl:when> <xsl:when test="$property='font'"> <xsl:call-template name="altova:css-styles-split-font-style"> <xsl:with-param name="value" select="string($value)"/> <xsl:with-param name="font-style" select="'normal'"/> <xsl:with-param name="font-variant" select="'normal'"/> <xsl:with-param name="font-weight" select="'normal'"/> </xsl:call-template> </xsl:when> <xsl:when test="$property='margin'"> <xsl:call-template name="altova:css-styles-split-margin-style"> <xsl:with-param name="value" select="string($value)"/> </xsl:call-template> </xsl:when> <xsl:when test="$property='padding'"> <xsl:call-template name="altova:css-styles-split-padding-style"> <xsl:with-param name="value" select="string($value)"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat($property,':',$value,';')"/> </xsl:otherwise> </xsl:choose> </xsl:if> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="substring-after($css-styles,';')"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:css-styles-is-value-length"> <xsl:param name="value"/> <xsl:variable name="unit" select="translate($value,'0123456789+-.','')"/> <xsl:choose> <xsl:when test="$unit='em'">1</xsl:when> <xsl:when test="$unit='ex'">1</xsl:when> <xsl:when test="$unit='px'">1</xsl:when> <xsl:when test="$unit='in'">1</xsl:when> <xsl:when test="$unit='cm'">1</xsl:when> <xsl:when test="$unit='mm'">1</xsl:when> <xsl:when test="$unit='pt'">1</xsl:when> <xsl:when test="$unit='pc'">1</xsl:when> <xsl:when test="$unit=''"> <xsl:variable name="number" select="translate($value,'ceimnptx','')"/> <xsl:choose> <xsl:when test="number($number)=0">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-is-value-background-color"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="$value='transparent'">1</xsl:when> <xsl:otherwise> <xsl:variable name="is-color"> <xsl:call-template name="altova:css-styles-is-value-color"> <xsl:with-param name="value" select="$value"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$is-color='1'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-is-value-background-image"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="$value='none'">1</xsl:when> <xsl:otherwise> <xsl:variable name="is-uri"> <xsl:call-template name="altova:css-styles-is-value-uri"> <xsl:with-param name="value" select="$value"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$is-uri='1'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-is-value-background-repeat"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="$value='repeat'">1</xsl:when> <xsl:when test="$value='repeat-x'">1</xsl:when> <xsl:when test="$value='repeat-y'">1</xsl:when> <xsl:when test="$value='no-repeat'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-is-value-background-attachment"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="$value='scroll'">1</xsl:when> <xsl:when test="$value='fixed'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-is-value-color"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="$value='aqua'">1</xsl:when> <xsl:when test="$value='black'">1</xsl:when> <xsl:when test="$value='blue'">1</xsl:when> <xsl:when test="$value='fuchsia'">1</xsl:when> <xsl:when test="$value='gray'">1</xsl:when> <xsl:when test="$value='green'">1</xsl:when> <xsl:when test="$value='lime'">1</xsl:when> <xsl:when test="$value='maroon'">1</xsl:when> <xsl:when test="$value='navy'">1</xsl:when> <xsl:when test="$value='olive'">1</xsl:when> <xsl:when test="$value='orange'">1</xsl:when> <xsl:when test="$value='purple'">1</xsl:when> <xsl:when test="$value='red'">1</xsl:when> <xsl:when test="$value='silver'">1</xsl:when> <xsl:when test="$value='teal'">1</xsl:when> <xsl:when test="$value='white'">1</xsl:when> <xsl:when test="$value='yellow'">1</xsl:when> <xsl:when test="starts-with($value,'#')">1</xsl:when> <xsl:when test="starts-with($value,'rgb(')">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-is-value-border-width"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="$value='thin'">1</xsl:when> <xsl:when test="$value='medium'">1</xsl:when> <xsl:when test="$value='thick'">1</xsl:when> <xsl:otherwise> <xsl:variable name="is-length"> <xsl:call-template name="altova:css-styles-is-value-length"> <xsl:with-param name="value" select="$value"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$is-length='1'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-is-value-border-style"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="$value='none'">1</xsl:when> <xsl:when test="$value='hidden'">1</xsl:when> <xsl:when test="$value='dotted'">1</xsl:when> <xsl:when test="$value='dashed'">1</xsl:when> <xsl:when test="$value='solid'">1</xsl:when> <xsl:when test="$value='double'">1</xsl:when> <xsl:when test="$value='groove'">1</xsl:when> <xsl:when test="$value='ridge'">1</xsl:when> <xsl:when test="$value='inset'">1</xsl:when> <xsl:when test="$value='outset'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-is-value-border-color"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="$value='transparent'">1</xsl:when> <xsl:otherwise> <xsl:variable name="is-color"> <xsl:call-template name="altova:css-styles-is-value-color"> <xsl:with-param name="value" select="$value"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$is-color='1'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-is-value-font-style"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="$value='normal'">1</xsl:when> <xsl:when test="$value='italic'">1</xsl:when> <xsl:when test="$value='oblique'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-is-value-font-variant"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="$value='normal'">1</xsl:when> <xsl:when test="$value='small-caps'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-is-value-font-weight"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="$value='normal'">1</xsl:when> <xsl:when test="$value='bold'">1</xsl:when> <xsl:when test="$value='bolder'">1</xsl:when> <xsl:when test="$value='lighter'">1</xsl:when> <xsl:when test="$value='100'">1</xsl:when> <xsl:when test="$value='200'">1</xsl:when> <xsl:when test="$value='300'">1</xsl:when> <xsl:when test="$value='400'">1</xsl:when> <xsl:when test="$value='500'">1</xsl:when> <xsl:when test="$value='600'">1</xsl:when> <xsl:when test="$value='700'">1</xsl:when> <xsl:when test="$value='800'">1</xsl:when> <xsl:when test="$value='900'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-is-value-uri"> <xsl:param name="value"/> <xsl:choose> <xsl:when test="starts-with($value,'url(')">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-split-background"> <xsl:param name="value"/> <xsl:if test="$value"> <xsl:variable name="first-value"> <xsl:choose> <xsl:when test="contains($value,' ')"> <xsl:value-of select="substring-before($value,' ')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$value"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="is-background-color"> <xsl:call-template name="altova:css-styles-is-value-background-color"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-background-image"> <xsl:call-template name="altova:css-styles-is-value-background-image"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-background-repeat"> <xsl:call-template name="altova:css-styles-is-value-background-repeat"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-background-attachment"> <xsl:call-template name="altova:css-styles-is-value-background-attachment"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$is-background-color='1'"> <xsl:value-of select="concat('background-color:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-background-image='1'"> <xsl:value-of select="concat('background-image:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-background-repeat='1'"> <xsl:value-of select="concat('background-repeat:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-background-attachment='1'"> <xsl:value-of select="concat('background-attachment:',$first-value,';')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat('background-position:',$first-value,';')"/> </xsl:otherwise> </xsl:choose> <xsl:call-template name="altova:css-styles-split-background"> <xsl:with-param name="value" select="substring-after($value,' ')"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:css-styles-split-border"> <xsl:param name="value"/> <xsl:if test="$value"> <xsl:variable name="first-value"> <xsl:choose> <xsl:when test="contains($value,' ')"> <xsl:value-of select="substring-before($value,' ')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$value"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="is-border-width"> <xsl:call-template name="altova:css-styles-is-value-border-width"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-border-style"> <xsl:call-template name="altova:css-styles-is-value-border-style"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-border-color"> <xsl:call-template name="altova:css-styles-is-value-border-color"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$is-border-width='1'"> <xsl:value-of select="concat('border-top-width:',$first-value,';')"/> <xsl:value-of select="concat('border-right-width:',$first-value,';')"/> <xsl:value-of select="concat('border-bottom-width:',$first-value,';')"/> <xsl:value-of select="concat('border-left-width:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-border-style='1'"> <xsl:value-of select="concat('border-top-style:',$first-value,';')"/> <xsl:value-of select="concat('border-right-style:',$first-value,';')"/> <xsl:value-of select="concat('border-bottom-style:',$first-value,';')"/> <xsl:value-of select="concat('border-left-style:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-border-color='1'"> <xsl:value-of select="concat('border-top-color:',$first-value,';')"/> <xsl:value-of select="concat('border-right-color:',$first-value,';')"/> <xsl:value-of select="concat('border-bottom-color:',$first-value,';')"/> <xsl:value-of select="concat('border-left-color:',$first-value,';')"/> </xsl:when> </xsl:choose> <xsl:call-template name="altova:css-styles-split-border"> <xsl:with-param name="value" select="substring-after($value,' ')"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:css-styles-split-border-top"> <xsl:param name="value"/> <xsl:if test="$value"> <xsl:variable name="first-value"> <xsl:choose> <xsl:when test="contains($value,' ')"> <xsl:value-of select="substring-before($value,' ')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$value"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="is-border-width"> <xsl:call-template name="altova:css-styles-is-value-border-width"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-border-style"> <xsl:call-template name="altova:css-styles-is-value-border-style"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-border-color"> <xsl:call-template name="altova:css-styles-is-value-border-color"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$is-border-width='1'"> <xsl:value-of select="concat('border-top-width:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-border-style='1'"> <xsl:value-of select="concat('border-top-style:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-border-color='1'"> <xsl:value-of select="concat('border-top-color:',$first-value,';')"/> </xsl:when> </xsl:choose> <xsl:call-template name="altova:css-styles-split-border-top"> <xsl:with-param name="value" select="substring-after($value,' ')"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:css-styles-split-border-right"> <xsl:param name="value"/> <xsl:if test="$value"> <xsl:variable name="first-value"> <xsl:choose> <xsl:when test="contains($value,' ')"> <xsl:value-of select="substring-before($value,' ')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$value"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="is-border-width"> <xsl:call-template name="altova:css-styles-is-value-border-width"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-border-style"> <xsl:call-template name="altova:css-styles-is-value-border-style"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-border-color"> <xsl:call-template name="altova:css-styles-is-value-border-color"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$is-border-width='1'"> <xsl:value-of select="concat('border-right-width:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-border-style='1'"> <xsl:value-of select="concat('border-right-style:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-border-color='1'"> <xsl:value-of select="concat('border-right-color:',$first-value,';')"/> </xsl:when> </xsl:choose> <xsl:call-template name="altova:css-styles-split-border-right"> <xsl:with-param name="value" select="substring-after($value,' ')"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:css-styles-split-border-bottom"> <xsl:param name="value"/> <xsl:if test="$value"> <xsl:variable name="first-value"> <xsl:choose> <xsl:when test="contains($value,' ')"> <xsl:value-of select="substring-before($value,' ')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$value"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="is-border-width"> <xsl:call-template name="altova:css-styles-is-value-border-width"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-border-style"> <xsl:call-template name="altova:css-styles-is-value-border-style"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-border-color"> <xsl:call-template name="altova:css-styles-is-value-border-color"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$is-border-width='1'"> <xsl:value-of select="concat('border-bottom-width:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-border-style='1'"> <xsl:value-of select="concat('border-bottom-style:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-border-color='1'"> <xsl:value-of select="concat('border-bottom-color:',$first-value,';')"/> </xsl:when> </xsl:choose> <xsl:call-template name="altova:css-styles-split-border-bottom"> <xsl:with-param name="value" select="substring-after($value,' ')"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:css-styles-split-border-left"> <xsl:param name="value"/> <xsl:if test="$value"> <xsl:variable name="first-value"> <xsl:choose> <xsl:when test="contains($value,' ')"> <xsl:value-of select="substring-before($value,' ')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$value"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="is-border-width"> <xsl:call-template name="altova:css-styles-is-value-border-width"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-border-style"> <xsl:call-template name="altova:css-styles-is-value-border-style"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-border-color"> <xsl:call-template name="altova:css-styles-is-value-border-color"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$is-border-width='1'"> <xsl:value-of select="concat('border-left-width:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-border-style='1'"> <xsl:value-of select="concat('border-left-style:',$first-value,';')"/> </xsl:when> <xsl:when test="$is-border-color='1'"> <xsl:value-of select="concat('border-left-color:',$first-value,';')"/> </xsl:when> </xsl:choose> <xsl:call-template name="altova:css-styles-split-border-left"> <xsl:with-param name="value" select="substring-after($value,' ')"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:css-styles-split-border-color"> <xsl:param name="value"/> <xsl:variable name="count"> <xsl:call-template name="altova:vector-count"> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="number($count)=1"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('border-top-color:',$value1,';')"/> <xsl:value-of select="concat('border-right-color:',$value1,';')"/> <xsl:value-of select="concat('border-bottom-color:',$value1,';')"/> <xsl:value-of select="concat('border-left-color:',$value1,';')"/> </xsl:when> <xsl:when test="number($count)=2"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('border-top-color:',$value1,';')"/> <xsl:value-of select="concat('border-right-color:',$value2,';')"/> <xsl:value-of select="concat('border-bottom-color:',$value1,';')"/> <xsl:value-of select="concat('border-left-color:',$value2,';')"/> </xsl:when> <xsl:when test="number($count)=3"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value3"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="3"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('border-top-color:',$value1,';')"/> <xsl:value-of select="concat('border-right-color:',$value2,';')"/> <xsl:value-of select="concat('border-bottom-color:',$value3,';')"/> <xsl:value-of select="concat('border-left-color:',$value2,';')"/> </xsl:when> <xsl:when test="number($count)=4"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value3"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="3"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value4"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="4"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('border-top-color:',$value1,';')"/> <xsl:value-of select="concat('border-right-color:',$value2,';')"/> <xsl:value-of select="concat('border-bottom-color:',$value3,';')"/> <xsl:value-of select="concat('border-left-color:',$value4,';')"/> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-split-border-style"> <xsl:param name="value"/> <xsl:variable name="count"> <xsl:call-template name="altova:vector-count"> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="number($count)=1"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('border-top-style:',$value1,';')"/> <xsl:value-of select="concat('border-right-style:',$value1,';')"/> <xsl:value-of select="concat('border-bottom-style:',$value1,';')"/> <xsl:value-of select="concat('border-left-style:',$value1,';')"/> </xsl:when> <xsl:when test="number($count)=2"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('border-top-style:',$value1,';')"/> <xsl:value-of select="concat('border-right-style:',$value2,';')"/> <xsl:value-of select="concat('border-bottom-style:',$value1,';')"/> <xsl:value-of select="concat('border-left-style:',$value2,';')"/> </xsl:when> <xsl:when test="number($count)=3"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value3"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="3"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('border-top-style:',$value1,';')"/> <xsl:value-of select="concat('border-right-style:',$value2,';')"/> <xsl:value-of select="concat('border-bottom-style:',$value3,';')"/> <xsl:value-of select="concat('border-left-style:',$value2,';')"/> </xsl:when> <xsl:when test="number($count)=4"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value3"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="3"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value4"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="4"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('border-top-style:',$value1,';')"/> <xsl:value-of select="concat('border-right-style:',$value2,';')"/> <xsl:value-of select="concat('border-bottom-style:',$value3,';')"/> <xsl:value-of select="concat('border-left-style:',$value4,';')"/> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-split-border-width"> <xsl:param name="value"/> <xsl:variable name="count"> <xsl:call-template name="altova:vector-count"> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="number($count)=1"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('border-top-width:',$value1,';')"/> <xsl:value-of select="concat('border-right-width:',$value1,';')"/> <xsl:value-of select="concat('border-bottom-width:',$value1,';')"/> <xsl:value-of select="concat('border-left-width:',$value1,';')"/> </xsl:when> <xsl:when test="number($count)=2"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('border-top-width:',$value1,';')"/> <xsl:value-of select="concat('border-right-width:',$value2,';')"/> <xsl:value-of select="concat('border-bottom-width:',$value1,';')"/> <xsl:value-of select="concat('border-left-width:',$value2,';')"/> </xsl:when> <xsl:when test="number($count)=3"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value3"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="3"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('border-top-width:',$value1,';')"/> <xsl:value-of select="concat('border-right-width:',$value2,';')"/> <xsl:value-of select="concat('border-bottom-width:',$value3,';')"/> <xsl:value-of select="concat('border-left-width:',$value2,';')"/> </xsl:when> <xsl:when test="number($count)=4"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value3"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="3"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value4"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="4"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('border-top-width:',$value1,';')"/> <xsl:value-of select="concat('border-right-width:',$value2,';')"/> <xsl:value-of select="concat('border-bottom-width:',$value3,';')"/> <xsl:value-of select="concat('border-left-width:',$value4,';')"/> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-split-font-style"> <xsl:param name="value"/> <xsl:param name="font-style"/> <xsl:param name="font-variant"/> <xsl:param name="font-weight"/> <xsl:if test="$value"> <xsl:variable name="first-value"> <xsl:choose> <xsl:when test="contains($value,' ')"> <xsl:value-of select="substring-before($value,' ')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$value"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="is-font-style"> <xsl:call-template name="altova:css-styles-is-value-font-style"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-font-variant"> <xsl:call-template name="altova:css-styles-is-value-font-variant"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:variable name="is-font-weight"> <xsl:call-template name="altova:css-styles-is-value-font-weight"> <xsl:with-param name="value" select="$first-value"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$is-font-style='1' and $is-font-variant='1' and $is-font-weight='1'"> <xsl:call-template name="altova:css-styles-split-font-style"> <xsl:with-param name="value" select="substring-after($value,' ')"/> <xsl:with-param name="font-style" select="$font-style"/> <xsl:with-param name="font-variant" select="$font-variant"/> <xsl:with-param name="font-weight" select="$font-weight"/> </xsl:call-template> </xsl:when> <xsl:when test="$is-font-style='1'"> <xsl:call-template name="altova:css-styles-split-font-style"> <xsl:with-param name="value" select="substring-after($value,' ')"/> <xsl:with-param name="font-style" select="$first-value"/> <xsl:with-param name="font-variant" select="$font-variant"/> <xsl:with-param name="font-weight" select="$font-weight"/> </xsl:call-template> </xsl:when> <xsl:when test="$is-font-variant='1'"> <xsl:call-template name="altova:css-styles-split-font-style"> <xsl:with-param name="value" select="substring-after($value,' ')"/> <xsl:with-param name="font-style" select="$font-style"/> <xsl:with-param name="font-variant" select="$first-value"/> <xsl:with-param name="font-weight" select="$font-weight"/> </xsl:call-template> </xsl:when> <xsl:when test="$is-font-weight='1'"> <xsl:call-template name="altova:css-styles-split-font-style"> <xsl:with-param name="value" select="substring-after($value,' ')"/> <xsl:with-param name="font-style" select="$font-style"/> <xsl:with-param name="font-variant" select="$font-variant"/> <xsl:with-param name="font-weight" select="$first-value"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat('font-style:',$font-style,';')"/> <xsl:value-of select="concat('font-variant:',$font-variant,';')"/> <xsl:value-of select="concat('font-weight:',$font-weight,';')"/> <xsl:choose> <xsl:when test="contains($first-value,'/')"> <xsl:value-of select="concat('font-size:',substring-before($first-value,'/'),';')"/> <xsl:value-of select="concat('line-height:',substring-after($first-value,'/'),';')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat('font-size:',$first-value,';')"/> </xsl:otherwise> </xsl:choose> <xsl:value-of select="concat('font-family:',substring-after($value,' '),';')"/> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:template> <xsl:template name="altova:css-styles-split-margin-style"> <xsl:param name="value"/> <xsl:variable name="count"> <xsl:call-template name="altova:vector-count"> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="number($count)=1"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('margin-top:',$value1,';')"/> <xsl:value-of select="concat('margin-right:',$value1,';')"/> <xsl:value-of select="concat('margin-bottom:',$value1,';')"/> <xsl:value-of select="concat('margin-left:',$value1,';')"/> </xsl:when> <xsl:when test="number($count)=2"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('margin-top:',$value1,';')"/> <xsl:value-of select="concat('margin-right:',$value2,';')"/> <xsl:value-of select="concat('margin-bottom:',$value1,';')"/> <xsl:value-of select="concat('margin-left:',$value2,';')"/> </xsl:when> <xsl:when test="number($count)=3"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value3"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="3"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('margin-top:',$value1,';')"/> <xsl:value-of select="concat('margin-right:',$value2,';')"/> <xsl:value-of select="concat('margin-bottom:',$value3,';')"/> <xsl:value-of select="concat('margin-left:',$value2,';')"/> </xsl:when> <xsl:when test="number($count)=4"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value3"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="3"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value4"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="4"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('margin-top:',$value1,';')"/> <xsl:value-of select="concat('margin-right:',$value2,';')"/> <xsl:value-of select="concat('margin-bottom:',$value3,';')"/> <xsl:value-of select="concat('margin-left:',$value4,';')"/> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-split-padding-style"> <xsl:param name="value"/> <xsl:variable name="count"> <xsl:call-template name="altova:vector-count"> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="number($count)=1"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('padding-top:',$value1,';')"/> <xsl:value-of select="concat('padding-right:',$value1,';')"/> <xsl:value-of select="concat('padding-bottom:',$value1,';')"/> <xsl:value-of select="concat('padding-left:',$value1,';')"/> </xsl:when> <xsl:when test="number($count)=2"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('padding-top:',$value1,';')"/> <xsl:value-of select="concat('padding-right:',$value2,';')"/> <xsl:value-of select="concat('padding-bottom:',$value1,';')"/> <xsl:value-of select="concat('padding-left:',$value2,';')"/> </xsl:when> <xsl:when test="number($count)=3"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value3"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="3"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('padding-top:',$value1,';')"/> <xsl:value-of select="concat('padding-right:',$value2,';')"/> <xsl:value-of select="concat('padding-bottom:',$value3,';')"/> <xsl:value-of select="concat('padding-left:',$value2,';')"/> </xsl:when> <xsl:when test="number($count)=4"> <xsl:variable name="value1"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="1"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value2"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="2"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value3"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="3"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:variable name="value4"> <xsl:call-template name="altova:vector-get-value"> <xsl:with-param name="index" select="4"/> <xsl:with-param name="vector" select="$value"/> <xsl:with-param name="separator" select="' '"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat('padding-top:',$value1,';')"/> <xsl:value-of select="concat('padding-right:',$value2,';')"/> <xsl:value-of select="concat('padding-bottom:',$value3,';')"/> <xsl:value-of select="concat('padding-left:',$value4,';')"/> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="altova:css-styles-output-fo-attributes"> <xsl:param name="css-styles"/> <xsl:variable name="splitted-styles"> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($css-styles)"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="altova:css-styles-output-fo-attributes-helper"> <xsl:with-param name="css-styles" select="$splitted-styles"/> </xsl:call-template> </xsl:template> <xsl:template name="altova:css-styles-output-fo-attributes-helper"> <xsl:param name="css-styles"/> <xsl:variable name="property" select="normalize-space(substring-before($css-styles,':'))"/> <xsl:if test="string($property) and not(contains($property,';'))"> <xsl:choose> <xsl:when test="$property='html-table-align'"/> <xsl:when test="$property='vertical-align'"> <xsl:attribute name="display-align"> <xsl:variable name="value" select="normalize-space(substring-after(substring-before($css-styles,';'),':'))"/> <xsl:choose> <xsl:when test="$value='top'">before</xsl:when> <xsl:when test="$value='middle'">center</xsl:when> <xsl:when test="$value='bottom'">after</xsl:when> <xsl:otherwise>auto</xsl:otherwise> </xsl:choose> </xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="{$property}"> <xsl:value-of select="normalize-space(substring-after(substring-before($css-styles,';'),':'))"/> </xsl:attribute> </xsl:otherwise> </xsl:choose> <xsl:call-template name="altova:css-styles-output-fo-attributes-helper"> <xsl:with-param name="css-styles" select="substring-after($css-styles,';')"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:css-styles-convert-length-to-twips"> <xsl:param name="css-length"/> <xsl:param name="dpi" select="96"/> <xsl:param name="em-height-pt" select="12"/> <xsl:param name="parent-length-twips" select="0"/> <xsl:choose> <xsl:when test="contains($css-length,'cm')"> <xsl:value-of select="(number(substring-before($css-length,'cm')) * 1440) div 2.54"/> </xsl:when> <xsl:when test="contains($css-length,'mm')"> <xsl:value-of select="(number(substring-before($css-length,'mm')) * 1440) div 25.4"/> </xsl:when> <xsl:when test="contains($css-length,'in')"> <xsl:value-of select="number(substring-before($css-length,'in')) * 1440"/> </xsl:when> <xsl:when test="contains($css-length,'pc')"> <xsl:value-of select="number(substring-before($css-length,'pc')) * 240"/> </xsl:when> <xsl:when test="contains($css-length,'pt')"> <xsl:value-of select="number(substring-before($css-length,'pt')) * 20"/> </xsl:when> <xsl:when test="contains($css-length,'px')"> <xsl:value-of select="(number(substring-before($css-length,'px')) * 1440) div $dpi"/> </xsl:when> <xsl:when test="contains($css-length,'em')"> <xsl:value-of select="number(substring-before($css-length,'em')) * 20 * $em-height-pt"/> </xsl:when> <xsl:when test="contains($css-length,'ex')"> <xsl:value-of select="number(substring-before($css-length,'ex')) * 10 * $em-height-pt"/> </xsl:when> <xsl:when test="contains($css-length,'%')"> <xsl:value-of select="(number(substring-before($css-length,'%')) * $parent-length-twips) div 100"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-calc-entry-spanned-cols"> <xsl:param name="entry"/> <xsl:choose> <xsl:when test="$entry"> <xsl:choose> <xsl:when test="$entry/@colspan"> <xsl:value-of select="number($entry/@colspan) - 1"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-calc-entry-spanned-rows"> <xsl:param name="entry"/> <xsl:choose> <xsl:when test="$entry"> <xsl:choose> <xsl:when test="$entry/@rowspan"> <xsl:value-of select="number($entry/@rowspan) - 1"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-table-get-table-user-styles"/> <xsl:template name="altova:html-table-table-get-caption-user-styles"/> <xsl:template name="altova:html-table-table-get-thead-user-styles"> <xsl:text>background-color:#d2d2d2;</xsl:text> </xsl:template> <xsl:template name="altova:html-table-table-get-tfoot-user-styles"/> <xsl:template name="altova:html-table-table-get-tbody-user-styles"/> <xsl:template name="altova:html-table-table-get-tr-user-styles"> <xsl:param name="rownum"/> </xsl:template> <xsl:template name="altova:html-table-table-get-td-user-styles"> <xsl:param name="colnum"/> <xsl:param name="rownum"/> </xsl:template> <xsl:template name="altova:html-table-table-get-th-user-styles"> <xsl:param name="colnum"/> <xsl:param name="rownum"/> <xsl:text>font-family:Arial;</xsl:text> </xsl:template> <xsl:template name="altova:html-table-table-calc-table-effective-styles"> <xsl:param name="table"/> <xsl:text>border-collapse:separate;</xsl:text> <xsl:text>border-spacing:2px;</xsl:text> <xsl:variable name="align" select="normalize-space(string($table/@align))"/> <xsl:if test="string-length($align) > 0"> <xsl:value-of select="concat('html-table-align:',$align,';')"/> </xsl:if> <xsl:variable name="bgcolor" select="normalize-space(string($table/@bgcolor))"/> <xsl:if test="string-length($bgcolor) > 0"> <xsl:value-of select="concat('background-color:',$bgcolor,';')"/> </xsl:if> <xsl:variable name="effective-border"> <xsl:variable name="border" select="normalize-space(string($table/@border))"/> <xsl:choose> <xsl:when test="string-length($border) > 0"> <xsl:value-of select="$border"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="effective-frame"> <xsl:variable name="frame" select="normalize-space(string($table/@frame))"/> <xsl:choose> <xsl:when test="string-length($frame) > 0"> <xsl:value-of select="$frame"/> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="$effective-border='0'">void</xsl:when> <xsl:otherwise>border</xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="$effective-frame='above' or $effective-frame='hsides' or $effective-frame='box' or $effective-frame='border'"> <xsl:text>border-top-style:solid;</xsl:text> <xsl:value-of select="concat('border-top-width:',$effective-border,'px;')"/> </xsl:when> <xsl:otherwise> <xsl:text>border-top-style:none;</xsl:text> </xsl:otherwise> </xsl:choose> <xsl:choose> <xsl:when test="$effective-frame='rhs' or $effective-frame='vsides' or $effective-frame='box' or $effective-frame='border'"> <xsl:text>border-right-style:solid;</xsl:text> <xsl:value-of select="concat('border-right-width:',$effective-border,'px;')"/> </xsl:when> <xsl:otherwise> <xsl:text>border-right-style:none;</xsl:text> </xsl:otherwise> </xsl:choose> <xsl:choose> <xsl:when test="$effective-frame='below' or $effective-frame='hsides' or $effective-frame='box' or $effective-frame='border'"> <xsl:text>border-bottom-style:solid;</xsl:text> <xsl:value-of select="concat('border-bottom-width:',$effective-border,'px;')"/> </xsl:when> <xsl:otherwise> <xsl:text>border-bottom-style:none;</xsl:text> </xsl:otherwise> </xsl:choose> <xsl:choose> <xsl:when test="$effective-frame='lhs' or $effective-frame='vsides' or $effective-frame='box' or $effective-frame='border'"> <xsl:text>border-left-style:solid;</xsl:text> <xsl:value-of select="concat('border-left-width:',$effective-border,'px;')"/> </xsl:when> <xsl:otherwise> <xsl:text>border-left-style:none;</xsl:text> </xsl:otherwise> </xsl:choose> <xsl:variable name="cellspacing" select="normalize-space(string($table/@cellspacing))"/> <xsl:if test="string-length($cellspacing) > 0"> <xsl:value-of select="concat('border-spacing:',$cellspacing,'px;')"/> </xsl:if> <xsl:variable name="height" select="normalize-space(string($table/@height))"/> <xsl:if test="string-length($height) > 0"> <xsl:choose> <xsl:when test="contains($height,'%')"> <xsl:value-of select="concat('height:',$height,';')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat('height:',$height,'px;')"/> </xsl:otherwise> </xsl:choose> </xsl:if> <xsl:variable name="width" select="normalize-space(string($table/@width))"/> <xsl:if test="string-length($width) > 0"> <xsl:choose> <xsl:when test="contains($width,'%')"> <xsl:value-of select="concat('width:',$width,';')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat('width:',$width,'px;')"/> </xsl:otherwise> </xsl:choose> </xsl:if> <xsl:variable name="user-styles"> <xsl:for-each select="$table"> <xsl:call-template name="altova:html-table-table-get-table-user-styles"/> </xsl:for-each> </xsl:variable> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($user-styles)"/> </xsl:call-template> <xsl:variable name="style" select="normalize-space(string($table/@style))"/> <xsl:if test="string-length($style) > 0"> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($style)"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:html-table-table-calc-table-align"> <xsl:param name="effective-styles"/> <xsl:variable name="html-table-align"> <xsl:call-template name="altova:css-styles-get-property"> <xsl:with-param name="property" select="'html-table-align'"/> <xsl:with-param name="css-styles" select="string($effective-styles)"/> </xsl:call-template> </xsl:variable> <xsl:variable name="margin-left"> <xsl:call-template name="altova:css-styles-get-property"> <xsl:with-param name="property" select="'margin-left'"/> <xsl:with-param name="css-styles" select="string($effective-styles)"/> </xsl:call-template> </xsl:variable> <xsl:variable name="margin-right"> <xsl:call-template name="altova:css-styles-get-property"> <xsl:with-param name="property" select="'margin-right'"/> <xsl:with-param name="css-styles" select="string($effective-styles)"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$margin-left='auto' and $margin-right='auto'">center</xsl:when> <xsl:when test="$margin-left='auto'">right</xsl:when> <xsl:when test="$margin-right='auto'">left</xsl:when> <xsl:otherwise> <xsl:value-of select="$html-table-align"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-table-calc-caption-effective-styles"> <xsl:param name="caption"/> <xsl:text>text-align:center;</xsl:text> <xsl:variable name="align" select="normalize-space(string($caption/@align))"/> <xsl:choose> <xsl:when test="$align='top'">caption-side:top;</xsl:when> <xsl:when test="$align='bottom'">caption-side:bottom;</xsl:when> <xsl:otherwise>caption-side:top;</xsl:otherwise> </xsl:choose> <xsl:variable name="user-styles"> <xsl:for-each select="$caption"> <xsl:call-template name="altova:html-table-table-get-caption-user-styles"/> </xsl:for-each> </xsl:variable> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($user-styles)"/> </xsl:call-template> <xsl:variable name="style" select="normalize-space(string($caption/@style))"/> <xsl:if test="string-length($style) > 0"> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($style)"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:html-table-table-calc-thead-effective-styles"> <xsl:param name="thead"/> <xsl:variable name="align" select="normalize-space(string($thead/@align))"/> <xsl:if test="string-length($align) > 0"> <xsl:value-of select="concat('text-align:',$align,';')"/> </xsl:if> <xsl:variable name="valign" select="normalize-space(string($thead/@valign))"/> <xsl:if test="string-length($valign) > 0"> <xsl:value-of select="concat('vertical-align:',$valign,';')"/> </xsl:if> <xsl:variable name="user-styles"> <xsl:for-each select="$thead"> <xsl:call-template name="altova:html-table-table-get-thead-user-styles"/> </xsl:for-each> </xsl:variable> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($user-styles)"/> </xsl:call-template> <xsl:variable name="style" select="normalize-space(string($thead/@style))"/> <xsl:if test="string-length($style) > 0"> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($style)"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:html-table-table-calc-tfoot-effective-styles"> <xsl:param name="tfoot"/> <xsl:variable name="align" select="normalize-space(string($tfoot/@align))"/> <xsl:if test="string-length($align) > 0"> <xsl:value-of select="concat('text-align:',$align,';')"/> </xsl:if> <xsl:variable name="valign" select="normalize-space(string($tfoot/@valign))"/> <xsl:if test="string-length($valign) > 0"> <xsl:value-of select="concat('vertical-align:',$valign,';')"/> </xsl:if> <xsl:variable name="user-styles"> <xsl:for-each select="$tfoot"> <xsl:call-template name="altova:html-table-table-get-tfoot-user-styles"/> </xsl:for-each> </xsl:variable> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($user-styles)"/> </xsl:call-template> <xsl:variable name="style" select="normalize-space(string($tfoot/@style))"/> <xsl:if test="string-length($style) > 0"> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($style)"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:html-table-table-calc-tbody-effective-styles"> <xsl:param name="tbody"/> <xsl:variable name="align" select="normalize-space(string($tbody/@align))"/> <xsl:if test="string-length($align) > 0"> <xsl:value-of select="concat('text-align:',$align,';')"/> </xsl:if> <xsl:variable name="valign" select="normalize-space(string($tbody/@valign))"/> <xsl:if test="string-length($valign) > 0"> <xsl:value-of select="concat('vertical-align:',$valign,';')"/> </xsl:if> <xsl:variable name="user-styles"> <xsl:for-each select="$tbody"> <xsl:call-template name="altova:html-table-table-get-tbody-user-styles"/> </xsl:for-each> </xsl:variable> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($user-styles)"/> </xsl:call-template> <xsl:variable name="style" select="normalize-space(string($tbody/@style))"/> <xsl:if test="string-length($style) > 0"> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($style)"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:html-table-table-calc-row-effective-styles"> <xsl:param name="rownum"/> <xsl:param name="row"/> <xsl:variable name="align" select="normalize-space(string($row/@align))"/> <xsl:if test="string-length($align) > 0"> <xsl:value-of select="concat('text-align:',$align,';')"/> </xsl:if> <xsl:variable name="bgcolor" select="normalize-space(string($row/@bgcolor))"/> <xsl:if test="string-length($bgcolor) > 0"> <xsl:value-of select="concat('background-color:',$bgcolor,';')"/> </xsl:if> <xsl:variable name="valign" select="normalize-space(string($row/@valign))"/> <xsl:if test="string-length($valign) > 0"> <xsl:value-of select="concat('vertical-align:',$valign,';')"/> </xsl:if> <xsl:variable name="height" select="normalize-space(string($row/@height))"/> <xsl:if test="string($height)"> <xsl:choose> <xsl:when test="contains($height,'%')"> <xsl:value-of select="concat('height:',$height,';')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat('height:',$height,'px;')"/> </xsl:otherwise> </xsl:choose> </xsl:if> <xsl:variable name="user-styles"> <xsl:for-each select="$row"> <xsl:call-template name="altova:html-table-table-get-tr-user-styles"> <xsl:with-param name="rownum" select="$rownum"/> </xsl:call-template> </xsl:for-each> </xsl:variable> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($user-styles)"/> </xsl:call-template> <xsl:variable name="style" select="normalize-space(string($row/@style))"/> <xsl:if test="string-length($style) > 0"> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($style)"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:html-table-table-calc-cell-effective-styles"> <xsl:param name="colnum"/> <xsl:param name="rownum"/> <xsl:param name="col-count"/> <xsl:param name="row-count"/> <xsl:param name="is-first-table-row"/> <xsl:param name="is-last-table-row"/> <xsl:param name="row"/> <xsl:param name="entry"/> <xsl:param name="parent-user-styles"/> <xsl:choose> <xsl:when test="$entry/self::th"> <xsl:text>text-align:center;</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>text-align:left;</xsl:text> </xsl:otherwise> </xsl:choose> <xsl:call-template name="altova:css-styles-get-inherited-styles-for-table-cell"> <xsl:with-param name="css-styles" select="$parent-user-styles"/> </xsl:call-template> <xsl:text>padding-top:1px;</xsl:text> <xsl:text>padding-right:1px;</xsl:text> <xsl:text>padding-bottom:1px;</xsl:text> <xsl:text>padding-left:1px;</xsl:text> <xsl:text>vertical-align:middle;</xsl:text> <xsl:if test="$entry/self::th"> <xsl:text>font-weight:bold;</xsl:text> </xsl:if> <xsl:variable name="cellpadding" select="normalize-space(string($row/ancestor::table[1]/@cellpadding))"/> <xsl:if test="string($cellpadding)"> <xsl:value-of select="concat('padding-top:',$cellpadding,'px;')"/> <xsl:value-of select="concat('padding-right:',$cellpadding,'px;')"/> <xsl:value-of select="concat('padding-bottom:',$cellpadding,'px;')"/> <xsl:value-of select="concat('padding-left:',$cellpadding,'px;')"/> </xsl:if> <xsl:variable name="effective-border"> <xsl:variable name="border" select="normalize-space(string($row/ancestor::table[1]/@border))"/> <xsl:choose> <xsl:when test="string-length($border) > 0"> <xsl:value-of select="$border"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="effective-frame"> <xsl:variable name="frame" select="normalize-space(string($row/ancestor::table[1]/@frame))"/> <xsl:choose> <xsl:when test="string-length($frame) > 0"> <xsl:value-of select="$frame"/> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="$effective-border='0'">void</xsl:when> <xsl:otherwise>border</xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="effective-rules"> <xsl:variable name="rules" select="normalize-space(string($row/ancestor::table[1]/@rules))"/> <xsl:choose> <xsl:when test="string-length($rules) > 0"> <xsl:value-of select="$rules"/> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="$effective-border='0'">none</xsl:when> <xsl:otherwise>all</xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="show-border-top"> <xsl:choose> <xsl:when test="$is-first-table-row"> <xsl:choose> <xsl:when test="$effective-frame='above'">1</xsl:when> <xsl:when test="$effective-frame='hsides'">1</xsl:when> <xsl:when test="$effective-frame='box'">1</xsl:when> <xsl:when test="$effective-frame='border'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="$effective-rules='all'">1</xsl:when> <xsl:when test="$effective-rules='rows'">1</xsl:when> <xsl:when test="$effective-rules='groups'"> <xsl:choose> <xsl:when test="$rownum=1">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="$show-border-top='1'"> <xsl:text>border-top-style:solid;</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>border-top-style:none;</xsl:text> </xsl:otherwise> </xsl:choose> <xsl:variable name="show-border-right"> <xsl:choose> <xsl:when test="$colnum=$col-count"> <xsl:choose> <xsl:when test="$effective-frame='rhs'">1</xsl:when> <xsl:when test="$effective-frame='vsides'">1</xsl:when> <xsl:when test="$effective-frame='box'">1</xsl:when> <xsl:when test="$effective-frame='border'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="$effective-rules='all'">1</xsl:when> <xsl:when test="$effective-rules='cols'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="$show-border-right='1'"> <xsl:text>border-right-style:solid;</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>border-right-style:none;</xsl:text> </xsl:otherwise> </xsl:choose> <xsl:variable name="show-border-bottom"> <xsl:choose> <xsl:when test="$is-last-table-row"> <xsl:choose> <xsl:when test="$effective-frame='below'">1</xsl:when> <xsl:when test="$effective-frame='hsides'">1</xsl:when> <xsl:when test="$effective-frame='box'">1</xsl:when> <xsl:when test="$effective-frame='border'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="$effective-rules='all'">1</xsl:when> <xsl:when test="$effective-rules='rows'">1</xsl:when> <xsl:when test="$effective-rules='groups'"> <xsl:choose> <xsl:when test="$rownum=$row-count">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="$show-border-bottom='1'"> <xsl:text>border-bottom-style:solid;</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>border-bottom-style:none;</xsl:text> </xsl:otherwise> </xsl:choose> <xsl:variable name="show-border-left"> <xsl:choose> <xsl:when test="$colnum=1"> <xsl:choose> <xsl:when test="$effective-frame='lhs'">1</xsl:when> <xsl:when test="$effective-frame='vsides'">1</xsl:when> <xsl:when test="$effective-frame='box'">1</xsl:when> <xsl:when test="$effective-frame='border'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="$effective-rules='all'">1</xsl:when> <xsl:when test="$effective-rules='cols'">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="$show-border-left='1'"> <xsl:text>border-left-style:solid;</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>border-left-style:none;</xsl:text> </xsl:otherwise> </xsl:choose> <xsl:variable name="align" select="normalize-space(string($entry/@align))"/> <xsl:if test="string-length($align) > 0"> <xsl:value-of select="concat('text-align:',$align,';')"/> </xsl:if> <xsl:variable name="bgcolor" select="normalize-space(string($entry/@bgcolor))"/> <xsl:if test="string-length($bgcolor) > 0"> <xsl:value-of select="concat('background-color:',$bgcolor,';')"/> </xsl:if> <xsl:variable name="valign" select="normalize-space(string($entry/@valign))"/> <xsl:if test="string-length($valign) > 0"> <xsl:value-of select="concat('vertical-align:',$valign,';')"/> </xsl:if> <xsl:variable name="height" select="normalize-space(string($entry/@height))"/> <xsl:if test="string($height)"> <xsl:choose> <xsl:when test="contains($height,'%')"> <xsl:value-of select="concat('height:',$height,';')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat('height:',$height,'px;')"/> </xsl:otherwise> </xsl:choose> </xsl:if> <xsl:variable name="width" select="normalize-space(string($entry/@width))"/> <xsl:if test="string($width)"> <xsl:choose> <xsl:when test="contains($width,'%')"> <xsl:value-of select="concat('width:',$width,';')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat('width:',$width,'px;')"/> </xsl:otherwise> </xsl:choose> </xsl:if> <xsl:variable name="user-styles"> <xsl:choose> <xsl:when test="$entry/self::th"> <xsl:for-each select="$entry"> <xsl:call-template name="altova:html-table-table-get-th-user-styles"> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="$rownum"/> </xsl:call-template> </xsl:for-each> </xsl:when> <xsl:when test="$entry/self::td"> <xsl:for-each select="$entry"> <xsl:call-template name="altova:html-table-table-get-td-user-styles"> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="$rownum"/> </xsl:call-template> </xsl:for-each> </xsl:when> <xsl:otherwise> <xsl:call-template name="altova:html-table-table-get-td-user-styles"> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="$rownum"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($user-styles)"/> </xsl:call-template> <xsl:variable name="style" select="normalize-space(string($entry/@style))"/> <xsl:if test="string-length($style) > 0"> <xsl:call-template name="altova:css-styles-split-shorthand-styles"> <xsl:with-param name="css-styles" select="string($style)"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:html-table-table-is-first-table-row"> <xsl:param name="row"/> <xsl:choose> <xsl:when test="$row/parent::thead"> <xsl:choose> <xsl:when test="$row/preceding-sibling::tr">0</xsl:when> <xsl:otherwise>1</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="$row/parent::tfoot">0</xsl:when> <xsl:when test="$row/parent::tbody"> <xsl:choose> <xsl:when test="$row/../preceding-sibling::thead">0</xsl:when> <xsl:when test="$row/../preceding-sibling::tbody">0</xsl:when> <xsl:when test="$row/preceding-sibling::tr">0</xsl:when> <xsl:otherwise>1</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="$row/parent::table"> <xsl:choose> <xsl:when test="$row/preceding-sibling::tr">0</xsl:when> <xsl:otherwise>1</xsl:otherwise> </xsl:choose> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-table-is-last-table-row"> <xsl:param name="row"/> <xsl:choose> <xsl:when test="$row/parent::thead">0</xsl:when> <xsl:when test="$row/parent::tfoot"> <xsl:choose> <xsl:when test="$row/following-sibling::tr">0</xsl:when> <xsl:otherwise>1</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="$row/parent::tbody"> <xsl:choose> <xsl:when test="$row/../preceding-sibling::tfoot">0</xsl:when> <xsl:when test="$row/../following-sibling::tbody">0</xsl:when> <xsl:when test="$row/following-sibling::tr">0</xsl:when> <xsl:otherwise>1</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="$row/parent::table"> <xsl:choose> <xsl:when test="$row/following-sibling::tr">0</xsl:when> <xsl:otherwise>1</xsl:otherwise> </xsl:choose> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-table-calc-col-count"> <xsl:param name="table"/> <xsl:variable name="col-count"> <xsl:choose> <xsl:when test="$table/tr[1]"> <xsl:call-template name="altova:html-table-table-calc-col-count-row"> <xsl:with-param name="row" select="$table/tr[1]"/> <xsl:with-param name="rowinfo" select="''"/> </xsl:call-template> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="($table/thead|$table/tfoot|$table/tbody)[1]"> <xsl:call-template name="altova:html-table-table-calc-col-count-tbody"> <xsl:with-param name="tbody" select="($table/thead|$table/tfoot|$table/tbody)[1]"/> <xsl:with-param name="col-count-max" select="number($col-count)"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$col-count"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-table-calc-col-count-tbody"> <xsl:param name="tbody"/> <xsl:param name="col-count-max"/> <xsl:variable name="col-count"> <xsl:call-template name="altova:html-table-table-calc-col-count-row"> <xsl:with-param name="row" select="$tbody/tr[1]"/> <xsl:with-param name="rowinfo" select="''"/> </xsl:call-template> </xsl:variable> <xsl:variable name="new-col-count-max"> <xsl:choose> <xsl:when test="$col-count-max >= number($col-count)"> <xsl:value-of select="$col-count-max"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$col-count"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="next-tbody" select="($tbody/following-sibling::thead|$tbody/following-sibling::tfoot|$tbody/following-sibling::tbody)[1]"/> <xsl:choose> <xsl:when test="$next-tbody"> <xsl:call-template name="altova:html-table-table-calc-col-count-tbody"> <xsl:with-param name="tbody" select="$next-tbody"/> <xsl:with-param name="col-count-max" select="number($new-col-count-max)"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$new-col-count-max"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-table-calc-col-count-row"> <xsl:param name="row"/> <xsl:param name="rowinfo"/> <xsl:variable name="rowinfo-count"> <xsl:call-template name="altova:vector-count"> <xsl:with-param name="vector" select="$rowinfo"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> </xsl:variable> <xsl:variable name="first-entry" select="($row/td|$row/th)[1]"/> <xsl:variable name="nextrowinfo"> <xsl:call-template name="altova:html-table-table-generate-table-matrix-nextrowinfo"> <xsl:with-param name="entry" select="$first-entry"/> <xsl:with-param name="pos" select="1"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> <xsl:with-param name="col-count" select="number($rowinfo-count) div 2"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$row/following-sibling::tr[1]"> <xsl:call-template name="altova:html-table-table-calc-col-count-row"> <xsl:with-param name="row" select="$row/following-sibling::tr[1]"/> <xsl:with-param name="rowinfo" select="$nextrowinfo"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:variable name="nextrowinfo-count"> <xsl:call-template name="altova:vector-count"> <xsl:with-param name="vector" select="$nextrowinfo"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="number($nextrowinfo-count) div 2"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-table-generate-table-matrix"> <xsl:param name="tbody"/> <xsl:param name="col-count"/> <xsl:variable name="rowinfo"> <xsl:call-template name="altova:vector-append"> <xsl:with-param name="count" select="$col-count * 2"/> <xsl:with-param name="value" select="'0'"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="altova:html-table-table-generate-table-matrix-row"> <xsl:with-param name="row" select="$tbody/tr[1]"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> <xsl:with-param name="col-count" select="$col-count"/> </xsl:call-template> </xsl:template> <xsl:template name="altova:html-table-table-generate-table-matrix-row"> <xsl:param name="row"/> <xsl:param name="rowinfo"/> <xsl:param name="col-count"/> <xsl:variable name="first-entry" select="($row/td|$row/th)[1]"/> <xsl:call-template name="altova:html-table-table-generate-table-matrix-entry"> <xsl:with-param name="entry" select="$first-entry"/> <xsl:with-param name="pos" select="1"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> <xsl:with-param name="col-count" select="$col-count"/> </xsl:call-template> <xsl:variable name="nextrowinfo"> <xsl:call-template name="altova:html-table-table-generate-table-matrix-nextrowinfo"> <xsl:with-param name="entry" select="$first-entry"/> <xsl:with-param name="pos" select="1"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> <xsl:with-param name="col-count" select="$col-count"/> </xsl:call-template> </xsl:variable> <xsl:for-each select="$row/following-sibling::tr[1]"> <xsl:call-template name="altova:html-table-table-generate-table-matrix-row"> <xsl:with-param name="row" select="."/> <xsl:with-param name="rowinfo" select="$nextrowinfo"/> <xsl:with-param name="col-count" select="$col-count"/> </xsl:call-template> </xsl:for-each> </xsl:template> <xsl:template name="altova:html-table-table-generate-table-matrix-entry"> <xsl:param name="entry"/> <xsl:param name="pos"/> <xsl:param name="rowinfo"/> <xsl:param name="col-count"/> <xsl:variable name="dummy-cells"> <xsl:call-template name="altova:xml-table-fill-table-matrix-with-dummy-cells"> <xsl:with-param name="pos" select="$pos"/> <xsl:with-param name="endpos" select="-1"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="$dummy-cells"/> <xsl:value-of select="'1'"/> <xsl:variable name="colspan"> <xsl:call-template name="altova:html-table-calc-entry-spanned-cols"> <xsl:with-param name="entry" select="$entry"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="altova:char-vector-append"> <xsl:with-param name="count" select="number($colspan)"/> <xsl:with-param name="char" select="'4'"/> </xsl:call-template> <xsl:variable name="nextpos" select="$pos + string-length($dummy-cells) + 1 + number($colspan)"/> <xsl:choose> <xsl:when test="($entry/following-sibling::td|$entry/following-sibling::th)[1]"> <xsl:call-template name="altova:html-table-table-generate-table-matrix-entry"> <xsl:with-param name="entry" select="($entry/following-sibling::td|$entry/following-sibling::th)[1]"/> <xsl:with-param name="pos" select="$nextpos"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> <xsl:with-param name="col-count" select="$col-count"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name="altova:xml-table-fill-table-matrix-with-dummy-cells"> <xsl:with-param name="pos" select="$nextpos"/> <xsl:with-param name="endpos" select="$col-count + 1"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-table-generate-table-matrix-nextrowinfo"> <xsl:param name="entry"/> <xsl:param name="pos"/> <xsl:param name="rowinfo"/> <xsl:param name="col-count"/> <xsl:call-template name="altova:xml-table-generate-table-matrix-nextrow-rowspan"> <xsl:with-param name="pos" select="$pos"/> <xsl:with-param name="endpos" select="-1"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> </xsl:call-template> <xsl:variable name="dummy-cells"> <xsl:call-template name="altova:xml-table-fill-table-matrix-with-dummy-cells"> <xsl:with-param name="pos" select="$pos"/> <xsl:with-param name="endpos" select="-1"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> </xsl:call-template> </xsl:variable> <xsl:variable name="colspan"> <xsl:call-template name="altova:html-table-calc-entry-spanned-cols"> <xsl:with-param name="entry" select="$entry"/> </xsl:call-template> </xsl:variable> <xsl:variable name="rowspan"> <xsl:call-template name="altova:html-table-calc-entry-spanned-rows"> <xsl:with-param name="entry" select="$entry"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="altova:vector-append"> <xsl:with-param name="count" select="1"/> <xsl:with-param name="value" select="concat('0;',$rowspan)"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> <xsl:call-template name="altova:vector-append"> <xsl:with-param name="count" select="number($colspan)"/> <xsl:with-param name="value" select="concat('1;',$rowspan)"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> <xsl:variable name="nextpos" select="$pos + string-length($dummy-cells) + 1 + number($colspan)"/> <xsl:choose> <xsl:when test="($entry/following-sibling::td|$entry/following-sibling::th)[1]"> <xsl:call-template name="altova:html-table-table-generate-table-matrix-nextrowinfo"> <xsl:with-param name="entry" select="($entry/following-sibling::td|$entry/following-sibling::th)[1]"/> <xsl:with-param name="pos" select="$nextpos"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> <xsl:with-param name="col-count" select="$col-count"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name="altova:xml-table-generate-table-matrix-nextrow-rowspan"> <xsl:with-param name="pos" select="$nextpos"/> <xsl:with-param name="endpos" select="$col-count + 1"/> <xsl:with-param name="rowinfo" select="$rowinfo"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-table-calc-col-width-vector"> <xsl:param name="unit"/> <xsl:param name="col-count"/> <xsl:param name="table"/> <xsl:param name="table-width-twips"/> <xsl:variable name="col-width-vector"> <xsl:choose> <xsl:when test="$table/tr"> <xsl:variable name="table-matrix"> <xsl:call-template name="altova:html-table-table-generate-table-matrix"> <xsl:with-param name="tbody" select="$table"/> <xsl:with-param name="col-count" select="$col-count"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="altova:html-table-table-calc-col-width-vector-helper2"> <xsl:with-param name="unit" select="$unit"/> <xsl:with-param name="colnum" select="1"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="count($table/tr)"/> <xsl:with-param name="tbody" select="$table"/> <xsl:with-param name="table-width-twips" select="$table-width-twips"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name="altova:vector-append"> <xsl:with-param name="count" select="$col-count"/> <xsl:with-param name="value" select="0"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:call-template name="altova:html-table-table-calc-col-width-vector-helper"> <xsl:with-param name="unit" select="$unit"/> <xsl:with-param name="col-width-vector" select="$col-width-vector"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="tbody" select="($table/thead|$table/tfoot|$table/tbody)[1]"/> <xsl:with-param name="table-width-twips" select="$table-width-twips"/> </xsl:call-template> </xsl:template> <xsl:template name="altova:html-table-table-calc-col-width-vector-helper"> <xsl:param name="unit"/> <xsl:param name="col-width-vector"/> <xsl:param name="col-count"/> <xsl:param name="tbody"/> <xsl:param name="table-width-twips"/> <xsl:choose> <xsl:when test="$tbody"> <xsl:variable name="table-matrix"> <xsl:call-template name="altova:html-table-table-generate-table-matrix"> <xsl:with-param name="tbody" select="$tbody"/> <xsl:with-param name="col-count" select="$col-count"/> </xsl:call-template> </xsl:variable> <xsl:variable name="new-col-width-vector"> <xsl:call-template name="altova:html-table-table-calc-col-width-vector-helper2"> <xsl:with-param name="unit" select="$unit"/> <xsl:with-param name="colnum" select="1"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="count($tbody/tr)"/> <xsl:with-param name="tbody" select="$tbody"/> <xsl:with-param name="table-width-twips" select="$table-width-twips"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:variable> <xsl:variable name="max-col-width-vector"> <xsl:call-template name="altova:vector-merge-vectors-using-max-value"> <xsl:with-param name="vector1" select="$col-width-vector"/> <xsl:with-param name="vector2" select="$new-col-width-vector"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="altova:html-table-table-calc-col-width-vector-helper"> <xsl:with-param name="unit" select="$unit"/> <xsl:with-param name="col-width-vector" select="$max-col-width-vector"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="tbody" select="($tbody/following-sibling::thead|$tbody/following-sibling::tfoot|$tbody/following-sibling::tbody)[1]"/> <xsl:with-param name="table-width-twips" select="$table-width-twips"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$col-width-vector"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-table-calc-col-width-vector-helper2"> <xsl:param name="unit"/> <xsl:param name="colnum"/> <xsl:param name="col-count"/> <xsl:param name="row-count"/> <xsl:param name="tbody"/> <xsl:param name="table-width-twips"/> <xsl:param name="table-matrix"/> <xsl:call-template name="altova:html-table-table-calc-effective-col-width"> <xsl:with-param name="unit" select="$unit"/> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="tbody" select="$tbody"/> <xsl:with-param name="table-width-twips" select="$table-width-twips"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> <xsl:text>;</xsl:text> <xsl:if test="$colnum < $col-count"> <xsl:call-template name="altova:html-table-table-calc-col-width-vector-helper2"> <xsl:with-param name="unit" select="$unit"/> <xsl:with-param name="colnum" select="$colnum + 1"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="tbody" select="$tbody"/> <xsl:with-param name="table-width-twips" select="$table-width-twips"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="altova:html-table-table-calc-effective-col-width"> <xsl:param name="unit"/> <xsl:param name="colnum"/> <xsl:param name="col-count"/> <xsl:param name="row-count"/> <xsl:param name="tbody"/> <xsl:param name="table-width-twips"/> <xsl:param name="table-matrix"/> <xsl:call-template name="altova:html-table-table-calc-effective-col-width-helper"> <xsl:with-param name="unit" select="$unit"/> <xsl:with-param name="max-col-width" select="0"/> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="1"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="tbody" select="$tbody"/> <xsl:with-param name="table-width-twips" select="$table-width-twips"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:template> <xsl:template name="altova:html-table-table-calc-effective-col-width-helper"> <xsl:param name="max-col-width"/> <xsl:param name="unit"/> <xsl:param name="colnum"/> <xsl:param name="rownum"/> <xsl:param name="col-count"/> <xsl:param name="row-count"/> <xsl:param name="tbody"/> <xsl:param name="table-width-twips"/> <xsl:param name="table-matrix"/> <xsl:variable name="master-colnum"> <xsl:call-template name="altova:xml-table-table-matrix-get-master-cell-colnum"> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="$rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:variable> <xsl:variable name="master-rownum"> <xsl:call-template name="altova:xml-table-table-matrix-get-master-cell-rownum"> <xsl:with-param name="colnum" select="$master-colnum"/> <xsl:with-param name="rownum" select="$rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:variable> <xsl:variable name="master-entry-type" select="substring($table-matrix,$col-count * ($master-rownum - 1) + $master-colnum,1)"/> <xsl:variable name="master-row" select="$tbody/tr[position()=number($master-rownum)]"/> <xsl:variable name="master-pos-in-xml"> <xsl:choose> <xsl:when test="$master-entry-type='1'"> <xsl:value-of select="string-length(translate(substring($table-matrix,$col-count * ($master-rownum - 1) + 1,$colnum),'102345','1'))"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="master-entry" select="($master-row/td|$master-row/th)[position()=number($master-pos-in-xml)]"/> <xsl:variable name="spanned-cols"> <xsl:call-template name="altova:xml-table-table-matrix-calc-spanned-cols"> <xsl:with-param name="colnum" select="$master-colnum"/> <xsl:with-param name="rownum" select="$master-rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:variable> <xsl:variable name="effective-styles"> <xsl:call-template name="altova:html-table-table-calc-cell-effective-styles"> <xsl:with-param name="colnum" select="$master-colnum"/> <xsl:with-param name="rownum" select="$master-rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="is-first-table-row" select="false()"/> <xsl:with-param name="is-last-table-row" select="false()"/> <xsl:with-param name="row" select="$master-row"/> <xsl:with-param name="entry" select="$master-entry"/> <xsl:with-param name="parent-user-styles" select="''"/> </xsl:call-template> </xsl:variable> <xsl:variable name="reversed-styles"> <xsl:call-template name="altova:vector-reverse"> <xsl:with-param name="vector" select="$effective-styles"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> </xsl:variable> <xsl:variable name="width"> <xsl:call-template name="altova:css-styles-get-property"> <xsl:with-param name="property" select="'width'"/> <xsl:with-param name="css-styles" select="string($reversed-styles)"/> </xsl:call-template> </xsl:variable> <xsl:variable name="cell-width"> <xsl:choose> <xsl:when test="$unit='twips'"> <xsl:call-template name="altova:css-styles-convert-length-to-twips"> <xsl:with-param name="css-length" select="$width"/> <xsl:with-param name="dpi" select="$altova:nPxPerIn"/> <xsl:with-param name="em-height-pt" select="12"/> <xsl:with-param name="parent-length-twips" select="$table-width-twips"/> </xsl:call-template> </xsl:when> <xsl:when test="$unit='percent'"> <xsl:choose> <xsl:when test="contains($width,'%')"> <xsl:value-of select="substring-before($width,'%')"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="col-width" select="number($cell-width) div (number($spanned-cols) + 1)"/> <xsl:variable name="new-max-col-width"> <xsl:choose> <xsl:when test="number($col-width) > number($max-col-width)"> <xsl:value-of select="$col-width"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$max-col-width"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="$rownum < $row-count"> <xsl:call-template name="altova:html-table-table-calc-effective-col-width-helper"> <xsl:with-param name="max-col-width" select="number($new-max-col-width)"/> <xsl:with-param name="unit" select="$unit"/> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="$rownum + 1"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="tbody" select="$tbody"/> <xsl:with-param name="table-width-twips" select="$table-width-twips"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="round($new-max-col-width)"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-table-calc-effective-row-height-twips"> <xsl:param name="rownum"/> <xsl:param name="col-count"/> <xsl:param name="row-count"/> <xsl:param name="row"/> <xsl:param name="row-styles"/> <xsl:param name="table-matrix"/> <xsl:variable name="reversed-styles"> <xsl:call-template name="altova:vector-reverse"> <xsl:with-param name="vector" select="$row-styles"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> </xsl:variable> <xsl:variable name="height"> <xsl:call-template name="altova:css-styles-get-property"> <xsl:with-param name="property" select="'height'"/> <xsl:with-param name="css-styles" select="string($reversed-styles)"/> </xsl:call-template> </xsl:variable> <xsl:variable name="row-height-twips"> <xsl:call-template name="altova:css-styles-convert-length-to-twips"> <xsl:with-param name="css-length" select="$height"/> <xsl:with-param name="dpi" select="$altova:nPxPerIn"/> <xsl:with-param name="em-height-pt" select="12"/> <xsl:with-param name="parent-length-twips" select="0"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="altova:html-table-table-calc-effective-row-height-twips-helper"> <xsl:with-param name="max-row-height-twips" select="$row-height-twips"/> <xsl:with-param name="colnum" select="1"/> <xsl:with-param name="rownum" select="$rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="row" select="$row"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:template> <xsl:template name="altova:html-table-table-calc-effective-row-height-twips-helper"> <xsl:param name="max-row-height-twips"/> <xsl:param name="colnum"/> <xsl:param name="rownum"/> <xsl:param name="col-count"/> <xsl:param name="row-count"/> <xsl:param name="row"/> <xsl:param name="table-matrix"/> <xsl:variable name="master-colnum"> <xsl:call-template name="altova:xml-table-table-matrix-get-master-cell-colnum"> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="$rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:variable> <xsl:variable name="master-rownum"> <xsl:call-template name="altova:xml-table-table-matrix-get-master-cell-rownum"> <xsl:with-param name="colnum" select="$master-colnum"/> <xsl:with-param name="rownum" select="$rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:variable> <xsl:variable name="master-entry-type" select="substring($table-matrix,$col-count * ($master-rownum - 1) + $master-colnum,1)"/> <xsl:variable name="master-row" select="$row/../tr[position()=number($master-rownum)]"/> <xsl:variable name="master-pos-in-xml"> <xsl:choose> <xsl:when test="$master-entry-type='1'"> <xsl:value-of select="string-length(translate(substring($table-matrix,$col-count * ($master-rownum - 1) + 1,$colnum),'102345','1'))"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="master-entry" select="($master-row/td|$master-row/th)[position()=number($master-pos-in-xml)]"/> <xsl:variable name="spanned-rows"> <xsl:call-template name="altova:xml-table-table-matrix-calc-spanned-rows"> <xsl:with-param name="colnum" select="$master-colnum"/> <xsl:with-param name="rownum" select="$master-rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:variable> <xsl:variable name="effective-styles"> <xsl:call-template name="altova:html-table-table-calc-cell-effective-styles"> <xsl:with-param name="colnum" select="$master-colnum"/> <xsl:with-param name="rownum" select="$master-rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="is-first-table-row" select="false()"/> <xsl:with-param name="is-last-table-row" select="false()"/> <xsl:with-param name="row" select="$master-row"/> <xsl:with-param name="entry" select="$master-entry"/> <xsl:with-param name="parent-user-styles" select="''"/> </xsl:call-template> </xsl:variable> <xsl:variable name="reversed-styles"> <xsl:call-template name="altova:vector-reverse"> <xsl:with-param name="vector" select="$effective-styles"/> <xsl:with-param name="separator" select="';'"/> </xsl:call-template> </xsl:variable> <xsl:variable name="height"> <xsl:call-template name="altova:css-styles-get-property"> <xsl:with-param name="property" select="'height'"/> <xsl:with-param name="css-styles" select="string($reversed-styles)"/> </xsl:call-template> </xsl:variable> <xsl:variable name="cell-height-twips"> <xsl:call-template name="altova:css-styles-convert-length-to-twips"> <xsl:with-param name="css-length" select="$height"/> <xsl:with-param name="dpi" select="$altova:nPxPerIn"/> <xsl:with-param name="em-height-pt" select="12"/> <xsl:with-param name="parent-length-twips" select="0"/> </xsl:call-template> </xsl:variable> <xsl:variable name="row-height-twips" select="number($cell-height-twips) div (number($spanned-rows) + 1)"/> <xsl:variable name="new-max-row-height-twips"> <xsl:choose> <xsl:when test="number($row-height-twips) > number($max-row-height-twips)"> <xsl:value-of select="$row-height-twips"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$max-row-height-twips"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="$colnum < $col-count"> <xsl:call-template name="altova:html-table-table-calc-effective-row-height-twips-helper"> <xsl:with-param name="max-row-height-twips" select="number($new-max-row-height-twips)"/> <xsl:with-param name="colnum" select="$colnum + 1"/> <xsl:with-param name="rownum" select="$rownum"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="row" select="$row"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="round($new-max-row-height-twips)"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="altova:html-table-table-output-table"> <xsl:param name="table"/> <table> <xsl:copy-of select="$table/@id|$table/@class|$table/@lang|$table/@dir|$table/@title|$table/@onclick|$table/@ondblclick|$table/@onmousedown|$table/@onmouseup|$table/@onmouseover|$table/@onmousemove|$table/@onmouseout|$table/@onkeypress|$table/@onkeydown|$table/@onkeyup|$table/@bgcolor|$table/@frame|$table/@rules|$table/@border|$table/@cellspacing|$table/@cellpadding|$table/@summary|$table/@align|$table/@width|$table/@height"/> <xsl:variable name="user-styles"> <xsl:for-each select="$table"> <xsl:call-template name="altova:html-table-table-get-table-user-styles"/> </xsl:for-each> </xsl:variable> <xsl:if test="string($user-styles) or $table/@style"> <xsl:attribute name="style"> <xsl:value-of select="concat($user-styles,string($table/@style))"/> </xsl:attribute> </xsl:if> <xsl:variable name="col-count"> <xsl:call-template name="altova:html-table-table-calc-col-count"> <xsl:with-param name="table" select="$table"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="altova:html-table-table-output-caption"> <xsl:with-param name="table" select="$table"/> </xsl:call-template> <xsl:call-template name="altova:html-table-table-output-thead"> <xsl:with-param name="table" select="$table"/> <xsl:with-param name="col-count" select="number($col-count)"/> </xsl:call-template> <xsl:call-template name="altova:html-table-table-output-tfoot"> <xsl:with-param name="table" select="$table"/> <xsl:with-param name="col-count" select="number($col-count)"/> </xsl:call-template> <xsl:call-template name="altova:html-table-table-output-tbody"> <xsl:with-param name="table" select="$table"/> <xsl:with-param name="col-count" select="number($col-count)"/> </xsl:call-template> </table> </xsl:template> <xsl:template name="altova:html-table-table-output-caption"> <xsl:param name="table"/> <xsl:for-each select="$table/caption"> <caption> <xsl:copy-of select="@id|@class|@lang|@dir|@title|@onclick|@ondblclick|@onmousedown|@onmouseup|@onmouseover|@onmousemove|@onmouseout|@onkeypress|@onkeydown|@onkeyup|@align"/> <xsl:variable name="user-styles"> <xsl:call-template name="altova:html-table-table-get-caption-user-styles"/> </xsl:variable> <xsl:if test="string($user-styles) or @style"> <xsl:attribute name="style"> <xsl:value-of select="concat($user-styles,@style)"/> </xsl:attribute> </xsl:if> <xsl:apply-templates select="."/> </caption> </xsl:for-each> </xsl:template> <xsl:template name="altova:html-table-table-output-thead"> <xsl:param name="table"/> <xsl:param name="col-count"/> <xsl:for-each select="$table/thead"> <thead> <xsl:copy-of select="@id|@class|@lang|@dir|@title|@onclick|@ondblclick|@onmousedown|@onmouseup|@onmouseover|@onmousemove|@onmouseout|@onkeypress|@onkeydown|@onkeyup|@align|@char|@charoff|@valign"/> <xsl:variable name="user-styles"> <xsl:call-template name="altova:html-table-table-get-thead-user-styles"/> </xsl:variable> <xsl:if test="string($user-styles) or @style"> <xsl:attribute name="style"> <xsl:value-of select="concat($user-styles,@style)"/> </xsl:attribute> </xsl:if> <xsl:variable name="table-matrix"> <xsl:call-template name="altova:html-table-table-generate-table-matrix"> <xsl:with-param name="tbody" select="."/> <xsl:with-param name="col-count" select="$col-count"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="altova:html-table-table-output-rows"> <xsl:with-param name="tbody" select="."/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="string-length($table-matrix) div $col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </thead> </xsl:for-each> </xsl:template> <xsl:template name="altova:html-table-table-output-tfoot"> <xsl:param name="table"/> <xsl:param name="col-count"/> <xsl:for-each select="$table/tfoot"> <tfoot> <xsl:copy-of select="@id|@class|@lang|@dir|@title|@onclick|@ondblclick|@onmousedown|@onmouseup|@onmouseover|@onmousemove|@onmouseout|@onkeypress|@onkeydown|@onkeyup|@align|@char|@charoff|@valign"/> <xsl:variable name="user-styles"> <xsl:call-template name="altova:html-table-table-get-tfoot-user-styles"/> </xsl:variable> <xsl:if test="string($user-styles) or @style"> <xsl:attribute name="style"> <xsl:value-of select="concat($user-styles,@style)"/> </xsl:attribute> </xsl:if> <xsl:variable name="table-matrix"> <xsl:call-template name="altova:html-table-table-generate-table-matrix"> <xsl:with-param name="tbody" select="."/> <xsl:with-param name="col-count" select="$col-count"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="altova:html-table-table-output-rows"> <xsl:with-param name="tbody" select="."/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="string-length($table-matrix) div $col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </tfoot> </xsl:for-each> </xsl:template> <xsl:template name="altova:html-table-table-output-tbody"> <xsl:param name="table"/> <xsl:param name="col-count"/> <xsl:for-each select="$table/tbody"> <tbody> <xsl:copy-of select="@id|@class|@lang|@dir|@title|@onclick|@ondblclick|@onmousedown|@onmouseup|@onmouseover|@onmousemove|@onmouseout|@onkeypress|@onkeydown|@onkeyup|@align|@char|@charoff|@valign"/> <xsl:variable name="user-styles"> <xsl:call-template name="altova:html-table-table-get-tbody-user-styles"/> </xsl:variable> <xsl:if test="string($user-styles) or @style"> <xsl:attribute name="style"> <xsl:value-of select="concat($user-styles,@style)"/> </xsl:attribute> </xsl:if> <xsl:variable name="table-matrix"> <xsl:call-template name="altova:html-table-table-generate-table-matrix"> <xsl:with-param name="tbody" select="."/> <xsl:with-param name="col-count" select="$col-count"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="altova:html-table-table-output-rows"> <xsl:with-param name="tbody" select="."/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="string-length($table-matrix) div $col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </tbody> </xsl:for-each> <xsl:if test="$table/tr"> <tbody> <xsl:variable name="user-styles"> <xsl:call-template name="altova:html-table-table-get-tbody-user-styles"/> </xsl:variable> <xsl:if test="string($user-styles)"> <xsl:attribute name="style"> <xsl:value-of select="$user-styles"/> </xsl:attribute> </xsl:if> <xsl:variable name="table-matrix"> <xsl:call-template name="altova:html-table-table-generate-table-matrix"> <xsl:with-param name="tbody" select="$table"/> <xsl:with-param name="col-count" select="$col-count"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="altova:html-table-table-output-rows"> <xsl:with-param name="tbody" select="$table"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="string-length($table-matrix) div $col-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </tbody> </xsl:if> </xsl:template> <xsl:template name="altova:html-table-table-output-rows"> <xsl:param name="tbody"/> <xsl:param name="col-count"/> <xsl:param name="row-count"/> <xsl:param name="table-matrix"/> <xsl:for-each select="$tbody/tr"> <tr> <xsl:copy-of select="@id|@class|@lang|@dir|@title|@onclick|@ondblclick|@onmousedown|@onmouseup|@onmouseover|@onmousemove|@onmouseout|@onkeypress|@onkeydown|@onkeyup|@bgcolor|@align|@char|@charoff|@valign|@height"/> <xsl:variable name="user-styles"> <xsl:call-template name="altova:html-table-table-get-tr-user-styles"> <xsl:with-param name="rownum" select="position()"/> </xsl:call-template> </xsl:variable> <xsl:if test="string($user-styles) or @style"> <xsl:attribute name="style"> <xsl:value-of select="concat($user-styles,@style)"/> </xsl:attribute> </xsl:if> <xsl:call-template name="altova:html-table-table-output-cells"> <xsl:with-param name="colnum" select="1"/> <xsl:with-param name="rownum" select="position()"/> <xsl:with-param name="row" select="."/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </tr> </xsl:for-each> </xsl:template> <xsl:template name="altova:html-table-table-output-cells"> <xsl:param name="colnum"/> <xsl:param name="rownum"/> <xsl:param name="row"/> <xsl:param name="col-count"/> <xsl:param name="row-count"/> <xsl:param name="table-matrix"/> <xsl:variable name="rowstart" select="$col-count * ($rownum - 1)"/> <xsl:variable name="entry-type" select="substring($table-matrix,$rowstart + $colnum,1)"/> <xsl:variable name="pos-in-xml"> <xsl:choose> <xsl:when test="$entry-type='1'"> <xsl:value-of select="string-length(translate(substring($table-matrix,$rowstart+1,$colnum),'102345','1'))"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="entry" select="($row/td|$row/th)[position()=number($pos-in-xml)]"/> <xsl:if test="$entry-type='1' or $entry-type='2'"> <xsl:variable name="name"> <xsl:choose> <xsl:when test="$entry/self::th">th</xsl:when> <xsl:otherwise>td</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:element name="{$name}"> <xsl:copy-of select="$entry/@id|$entry/@class|$entry/@lang|$entry/@dir|$entry/@title|$entry/@onclick|$entry/@ondblclick|$entry/@onmousedown|$entry/@onmouseup|$entry/@onmouseover|$entry/@onmousemove|$entry/@onmouseout|$entry/@onkeypress|$entry/@onkeydown|$entry/@onkeyup|$entry/@bgcolor|$entry/@align|$entry/@char|$entry/@charoff|$entry/@valign|$entry/@headers|$entry/@scope|$entry/@abbr|$entry/@axis|$entry/@rowspan|$entry/@colspan|$entry/@nowrap|$entry/@width|$entry/@height"/> <xsl:variable name="user-styles"> <xsl:choose> <xsl:when test="$entry/self::th"> <xsl:for-each select="$entry"> <xsl:call-template name="altova:html-table-table-get-th-user-styles"> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="$rownum"/> </xsl:call-template> </xsl:for-each> </xsl:when> <xsl:when test="$entry/self::td"> <xsl:for-each select="$entry"> <xsl:call-template name="altova:html-table-table-get-td-user-styles"> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="$rownum"/> </xsl:call-template> </xsl:for-each> </xsl:when> <xsl:otherwise> <xsl:call-template name="altova:html-table-table-get-td-user-styles"> <xsl:with-param name="colnum" select="$colnum"/> <xsl:with-param name="rownum" select="$rownum"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:if test="string($user-styles) or $entry/@style"> <xsl:attribute name="style"> <xsl:value-of select="concat($user-styles,string($entry/@style))"/> </xsl:attribute> </xsl:if> <xsl:variable name="value"> <xsl:for-each select="$entry"> <xsl:apply-templates select="."/> </xsl:for-each> </xsl:variable> <xsl:if test="string-length($value)=0"> <xsl:text>​</xsl:text> </xsl:if> <xsl:copy-of select="$value"/> </xsl:element> </xsl:if> <xsl:if test="$colnum < $col-count"> <xsl:call-template name="altova:html-table-table-output-cells"> <xsl:with-param name="colnum" select="$colnum + 1"/> <xsl:with-param name="rownum" select="$rownum"/> <xsl:with-param name="row" select="$row"/> <xsl:with-param name="col-count" select="$col-count"/> <xsl:with-param name="row-count" select="$row-count"/> <xsl:with-param name="table-matrix" select="$table-matrix"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template match="table"> <xsl:call-template name="altova:html-table-table-output-table"> <xsl:with-param name="table" select="."/> </xsl:call-template> </xsl:template> <xsl:function name="altova:GetChartYValuesForSingleSeries"> <xsl:param name="seqCategoryLeafPos" as="node()*"/> <xsl:param name="nodeSeriesLeafPos" as="node()"/> <xsl:param name="bValuesInCategory" as="xs:boolean"/> <xsl:for-each select="$seqCategoryLeafPos"> <xsl:element name="altova:Value"> <xsl:value-of select="altova:GetChartYValueForSingleSeriesPos($nodeSeriesLeafPos, ., $bValuesInCategory)"/> </xsl:element> </xsl:for-each> </xsl:function> <xsl:function name="altova:GetChartYValueForSingleSeriesPos"> <xsl:param name="nodeSeriesLeafPos" as="node()"/> <xsl:param name="nodeCategoryLeafPos" as="node()"/> <xsl:param name="bValuesInCategory" as="xs:boolean"/> <xsl:variable name="altova:seqCategoryContextIds" select="$nodeCategoryLeafPos/altova:Context/@altova:ContextId" as="xs:string*"/> <xsl:variable name="altova:seqSeriesContextIds" select="$nodeSeriesLeafPos/altova:Context/@altova:ContextId" as="xs:string*"/> <xsl:variable name="altova:sCommonContextId" select="for $i in $altova:seqCategoryContextIds return if (some $j in $altova:seqSeriesContextIds satisfies $i eq $j) then $i else ()" as="xs:string*"/> <xsl:choose> <xsl:when test="count($altova:sCommonContextId) gt 1"> <xsl:message select="concat('Found several values instead of a single one (contexts: ', string-join($altova:sCommonContextId, ', '), ').')" terminate="yes"/> </xsl:when> <xsl:when test="count($altova:sCommonContextId) lt 1"> <xsl:message select="concat('XBRL Chart: Info: No value found for position labeled "', $nodeCategoryLeafPos/@altova:sLabel, '"')" terminate="no"/> <xsl:sequence select="'altova:no-value'"/> </xsl:when> <xsl:when test="$bValuesInCategory"> <xsl:sequence select="xs:string($nodeCategoryLeafPos/altova:Context[@altova:ContextId eq $altova:sCommonContextId]/@altova:Value)"/> </xsl:when> <xsl:otherwise> <xsl:sequence select="xs:string($nodeSeriesLeafPos/altova:Context[@altova:ContextId eq $altova:sCommonContextId]/@altova:Value)"/> </xsl:otherwise> </xsl:choose> </xsl:function> <xsl:function name="altova:GetChartLabelForPos" as="xs:string"> <xsl:param name="nodeParam" as="node()"/> <xsl:value-of select="string-join($nodeParam/ancestor-or-self::altova:Pos/@altova:sLabel, ' ')"/> </xsl:function> <xsl:function name="altova:convert-length-to-pixel" as="xs:decimal"> <xsl:param name="altova:length"/> <xsl:variable name="normLength" select="normalize-space($altova:length)"/> <xsl:choose> <xsl:when test="ends-with($normLength, 'px')"> <xsl:value-of select="substring-before($normLength, 'px')"/> </xsl:when> <xsl:when test="ends-with($normLength, 'in')"> <xsl:value-of select="xs:decimal(substring-before($normLength, 'in')) * $altova:nPxPerIn"/> </xsl:when> <xsl:when test="ends-with($normLength, 'cm')"> <xsl:value-of select="xs:decimal(substring-before($normLength, 'cm')) * $altova:nPxPerIn div 2.54"/> </xsl:when> <xsl:when test="ends-with($normLength, 'mm')"> <xsl:value-of select="xs:decimal(substring-before($normLength, 'mm')) * $altova:nPxPerIn div 25.4"/> </xsl:when> <xsl:when test="ends-with($normLength, 'pt')"> <xsl:value-of select="xs:decimal(substring-before($normLength, 'pt')) * $altova:nPxPerIn div 72.0"/> </xsl:when> <xsl:when test="ends-with($normLength, 'pc')"> <xsl:value-of select="xs:decimal(substring-before($normLength, 'pc')) * $altova:nPxPerIn div 6.0"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$normLength"/> </xsl:otherwise> </xsl:choose> </xsl:function> <xsl:function name="altova:convert-length-to-mm" as="xs:decimal"> <xsl:param name="altova:length"/> <xsl:variable name="normLength" select="normalize-space($altova:length)"/> <xsl:choose> <xsl:when test="ends-with($normLength, 'px')"> <xsl:value-of select="xs:decimal(substring-before($normLength, 'px')) div $altova:nPxPerIn * 25.4"/> </xsl:when> <xsl:when test="ends-with($normLength, 'in')"> <xsl:value-of select="xs:decimal(substring-before($normLength, 'in')) * 25.4"/> </xsl:when> <xsl:when test="ends-with($normLength, 'cm')"> <xsl:value-of select="xs:decimal(substring-before($normLength, 'cm')) * 10"/> </xsl:when> <xsl:when test="ends-with($normLength, 'mm')"> <xsl:value-of select="substring-before($normLength, 'mm') "/> </xsl:when> <xsl:when test="ends-with($normLength, 'pt')"> <xsl:value-of select="xs:decimal(substring-before($normLength, 'pt')) * 25.4 div 72.0"/> </xsl:when> <xsl:when test="ends-with($normLength, 'pc')"> <xsl:value-of select="xs:decimal(substring-before($normLength, 'pc')) * 25.4 div 6.0"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="number($normLength) div $altova:nPxPerIn * 25.4"/> </xsl:otherwise> </xsl:choose> </xsl:function> </xsl:stylesheet>