Subject: [xsl] Algorithm for setting a variable number of attributes From: "rick@xxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 2 Aug 2022 17:47:46 -0000 |
Hello All, I have this as my input: <?xml version="1.0" encoding="UTF-8"?> <root> <subtask>SUBTASK 25-31-04-714-080 - (20130315)</subtask> </root> And this is my desired output: <?xml version="1.0" encoding="UTF-8"?> <root> <subtask chapnbr="25" sectnbr="31" subnbr="04" func="714" seq="080" revdate="20130315"/> </root> I am using a function to parse the input and get it down to a tokenized sequence. Sometimes the input may not have all of the same positions of data; for example, it may be: <subtask>SUBTASK 25-31-04</subtask> I can use a series of <xsl:if> statements to add the appropriate attribute values based on count($attributes), but that makes the <xsl:template match="subtask"> a bit busy. I am wondering if there is a better way to do this. For example, can I add the attributes to the element inside my function? Here is my XSLT. Thank you. <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:math="http://www.w3.org/2005/xpath-functions/math" xmlns:rq="http://www.frameexpert.com/functions" exclude-result-prefixes="xs math rq" version="3.0" expand-text="yes"> <xsl:output indent="yes"/> <xsl:template match="/"> <root> <xsl:apply-templates/> </root> </xsl:template> <xsl:template match="subtask"> <xsl:copy> <xsl:variable name="attributes" select="rq:getSubtaskAttributes(.)"/> <xsl:message>{$attributes}</xsl:message> </xsl:copy> </xsl:template> <xsl:function name="rq:getSubtaskAttributes"> <xsl:param name="context"/> <xsl:variable name="variable1" select="replace($context,'[^-\d]+','')"/> <xsl:sequence select="tokenize($variable1,'-')"/> </xsl:function> </xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Grouping help, rick@xxxxxxxxxxxxxx | Thread | Re: [xsl] Algorithm for setting a v, Martin Honnen martin |
Re: [xsl] Grouping help, rick@xxxxxxxxxxxxxx | Date | Re: [xsl] Algorithm for setting a v, Martin Honnen martin |
Month |