Subject: [xsl] Problem with converting to XSLT 2.0 From: "Heckel, Matt , Ctr, OSD-PA&E" <Matthew.Heckel.ctr@xxxxxxx> Date: Wed, 2 Mar 2005 15:37:58 -0500 |
Classification: UNCLASSIFIED Hi, I've managed to turn a seemingly simple task into a major time kill. All I wanted to do was convert my template to version 2.0 (from version 1.0) to take advantage of its nifty grouping functionality. But no.. after nailing the complicated grouping stuff, I ran into a problem using a simple utility template, text.justify.xslt, from Sal Mangano's Cookbook that worked fine in V. 1.0. From what I've observed, the <xsl:choose> element in text.justify.xslt is now acting more like an <xsl:if> element. That is, all of the <when> conditions are being tested for, including <otherwise>, even though the first test of the group is true. I should be getting the one data element in my source file but instead I'm getting the string "INVALID ALIGN" printed out after each attribute. I'm not sure if my problem lies with the new <sequence> element for choose (doubt it) or something to do with XSLT V. 2.0 only allowing 1 node being used in value-of calls as opposed to a nodeset which was ok in V. 1.0. I think this is an ez one for someone other then my newbie self. MUCH appreciation~ Matt Source Doc: <?xml version="1.0" encoding="UTF-8" ?> <CASTDataset> <ETL_KV_1 BLUE_THTR_CMD_NM="CFCK" KV_POT_FILE_NM="pots.t11" KV_SLOT_FILE_NM="slots.t11" RED_THTR_CMD_NM="DPARK" THTR_ID="1" /> </CASTDataset> Main Template: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2004/07/xpath-functions" xmlns:xdt="http://www.w3.org/2004/07/xpath-datatypes"> <xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:include href="..\text\text.justify.xslt"/> <xsl:variable name="endline" select="'
'"/> <xsl:template match="/"> <xsl:template match="CASTDataset/ETL_KV_1"> <xsl:call-template name="text_justify"> <xsl:with-param name="value" select="concat(' ',@BLUE_THTR_CMD_NM)"/> <xsl:with-param name="width" select="14"/> <xsl:with-param name="align" select=" 'left' "/> </xsl:call-template> <xsl:text> </xsl:text> <xsl:call-template name="text_justify"> <xsl:with-param name="value" select="concat(' ',@RED_THTR_CMD_NM)"/> <xsl:with-param name="width" select="12"/> <xsl:with-param name="align" select=" 'left' "/> </xsl:call-template> <xsl:text> </xsl:text> <xsl:call-template name="text_justify"> <xsl:with-param name="value" select="concat(' ',@KV_SLOT_FILE_NM)"/> <xsl:with-param name="width" select="30"/> <xsl:with-param name="align" select=" 'left' "/> </xsl:call-template> <xsl:text> </xsl:text> <xsl:call-template name="text_justify"> <xsl:with-param name="value" select="concat(' ',@KV_POT_FILE_NM)"/> <xsl:with-param name="width" select="30"/> <xsl:with-param name="align" select=" 'left' "/> </xsl:call-template> <xsl:value-of select="$endline"/> </xsl:template> </xsl:stylesheet> Utility Template: (I've abbreviated the code from the Cookbook for readability) <?xml version="1.0" encoding="UTF-8"?> <!--<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:str="http://www.ora.com/XSLTCookbook/namespaces/strings" xmlns:text="http://www.ora.com/XSLTCookbook/namespaces/text" extension-element-prefixes="text"> --> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2004/07/xpath-functions" xmlns:text="http://www.ora.com/XSLTCookbook/namespaces/text" extension-element-prefixes="text"> <xsl:template name="text_justify"> <xsl:param name="value" /> <xsl:param name="width" select="10"/> <xsl:param name="align" select=" 'left' "/> <xsl:variable name="output" select="substring($value,1,$width)"/> <xsl:choose> <xsl:when test="$align = 'left'"> <xsl:value-of select="$output"/> </xsl:when> <xsl:when test="$align = 'right'"> <xsl:value-of select="$output"/> </xsl:when> <xsl:when test="$align = 'center'"> <xsl:value-of select="$output"/> </xsl:when> <xsl:otherwise>INVALID ALIGN</xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] most efficient way to che, David Carlisle | Thread | RE: [xsl] Problem with converting t, Michael Kay |
[xsl] most efficient way to check f, Sebastien Boisvert | Date | [xsl] TOC Problem, Frank Lorenz |
Month |