This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Resent: Help please on a select statement.


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]