Subject: [xsl] Resent: Help please on a select statement. From: Wolfgang Bogacz <wbogacz@xxxxxxxxxxx> Date: Sat, 24 Mar 2001 10:44:07 -0500 |
Given this type of input: <g id="ProcessData_0001" > <text style="font-family:Arial; font-size:21; fill:#EF82EF; " x="980" y="504"> <CS3000GR:dataFormat type="string" digit="3,0" zeroReading="yes" unit="yes"/> <CS3000GR:processData data="F01226.LOOP"/> </text> </g> <g id="ProcessData_0002" > <text style="font-family:Arial; font-size:21; fill:#EF82EF; " x="334" y="652"> <dataFormat type="string" digit="3,0" zeroReading="yes" unit="yes"/> <processData data="T01096.LOOP"/> </text> </g> <g id="ProcessData_0003" > <text style="font-family:Arial; font-size:21; fill:#00FF00; " x="155" y="657"> <CS3000GR:dataFormat type="numeric" digit="4,1" zeroReading="yes" unit="yes"/> <CS3000GR:processData data="F01212.PV"/> </text> </g> <g id="ProcessData_0004" > <text style="font-family:Arial; font-size:21; fill:#00FF00; " x="155" y="657"> <dataFormat type="numeric" digit="4,1" zeroReading="yes" unit="yes"/> <processData data="F01213.PV"/> </text> </g> And this stylesheet: <xsl:template match="g"> <xsl:copy> <xsl:if test="string-length(normalize-space(@id)) != 0"> <xsl:attribute name="id"><xsl:value-of select="normalize-space(@id)"/></xsl:attribute> </xsl:if> <xsl:choose> <xsl:when test="count(descendant::CS3000GR:dataFormat[@digit]) != 0"> <xsl:choose> <xsl:when test="count(./text/CS3000GR:dataFormat) != 0"> <xsl:choose> <xsl:when test="substring(normalize-space(./text/CS3000GR:dataFormat[@digit]),string-l ength(normalize-space(./text/CS3000GR:dataFormat[@digit])),1)='0'"> <xsl:attribute name="ProcessBook:NumberFormat"><xsl:value-of select="'#,##0'"/></xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="ProcessBook:NumberFormat"><xsl:value-of select="'#,##0.00'"/></xsl:attribute> </xsl:otherwise> </xsl:choose> </xsl:when> </xsl:choose> </xsl:when> <xsl:when test="count(descendant::dataFormat[@digit]) != 0"> Block of the same logic as just above with ./CS3000GR instead of ./text/CS3000GR </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="count(descendant::CS3000GR:processData[@data]) != 0"> <xsl:choose> <xsl:when test="count(./text/CS3000GR:processData) != 0"> <xsl:attribute name="ProcessBook:PtTagName"><xsl:value-of select="./text/CS3000GR:processData[@data]"/></xsl:attribute> </xsl:when> <xsl:when test="count(./text/processData) != 0"> <xsl:attribute name="ProcessBook:PtTagName"><xsl:value-of select="./text/processData[@data]"/></xsl:attribute> </xsl:when> </xsl:choose> </xsl:when> </xsl:choose> </xsl:copy> <!--<xsl:apply-templates/>--> </xsl:template> (Note that the namespace CS3000GR is not always used, and <emph>sometimes</emph> CS3000GR:dataFormat and CS3000GR:processData exist outside a text element, hence the circuitous logic there) This is my desired lines for my output which elevates the 'data' from processData to PtTagName, and determines if the NumberFormat should be integer, based on ',0' in 'digit' from dataFormat, or decimal. <g id="ProcessData_0001" ProcessBook:NumberFormat="#,##0" ProcessBook:PtTagName="F01226.LOOP" /> <g id="ProcessData_0002" ProcessBook:NumberFormat="#,##0" ProcessBook:PtTagName="T01096.LOOP" /> <g id="ProcessData_0003" ProcessBook:NumberFormat="#,##0.00" ProcessBook:PtTagName="F01212.PV" /> <g id="ProcessData_0004" ProcessBook:NumberFormat="#,##0.00" ProcessBook:PtTagName="F01213.PV" /> But I always get "#,##0.00" (decimal, the otherwise) for NumberFormat , and "" (nothing) for PtTagName. I hope someone can provide some insight on the desired selects. Thanks for any help you can give, and sorry about the length of this message. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] transform method of javax.xml, Vasu Durgavarjhula | Thread | [xsl] Resent: Help please on a sele, Wolfgang Bogacz |
RE: [xsl] xsl 1.1 security model?, Michael Kay | Date | Re: [xsl] another href question, Michael Beddow |
Month |