[xsl] Testing for parent node

Subject: [xsl] Testing for parent node
From: Vincenzo Menanno <enzo13@xxxxxxx>
Date: Fri, 30 Dec 2011 03:59:07 -0800
Hi everyone,

I am on this list but I rarely post.

               <Field id="1" dataType="Text" fieldType="Normal" name="name">
                  <Comment/>
                  <AutoEnter allowEditing="True" constant="False" furigana="False" lookup="False" calculation="False">
                     <ConstantData/>
                  </AutoEnter>
                  <Validation message="False" maxLength="False" valuelist="False" calculation="False" alwaysValidateCalculation="False" type="OnlyDuringDataEntry">
                     <NotEmpty value="False"/>
                     <Unique value="False"/>
                     <Existing value="False"/>
                     <StrictValidation value="False"/>
                  </Validation>
                  <Storage autoIndex="True" index="None" indexLanguage="English" global="False" maxRepetition="1"/>
               </Field>
               <Field id="2" dataType="Number" fieldType="Calculated" name="sfksjfhd">
                  <Calculation table="Test"><![CDATA[Left ( name; 3 ) & "sdkfhskdfhsdf" & sdafsadf & Asin ( ZARK::boart ) & sdafsadf Copy2]]></Calculation>
                  <DisplayCalculation>
                     <Chunk type="FunctionRef">Left</Chunk>
                     <Chunk type="NoRef"> ( </Chunk>
                     <Chunk type="FieldRef">
                        <Field table="Test" id="1" name="name"/>
                     </Chunk>
                     <Chunk type="NoRef">; 3 ) &amp; &quot;sdkfhskdfhsdf&quot; &amp; </Chunk>
                     <Chunk type="CustomFunctionRef">sdafsadf</Chunk>
                     <Chunk type="NoRef"> &amp; </Chunk>
                     <Chunk type="FunctionRef">Asin</Chunk>
                     <Chunk type="NoRef"> ( </Chunk>
                     <Chunk type="FieldRef">
                        <Field table="ZARK" id="1" name="boart"/>
                     </Chunk>
                     <Chunk type="NoRef"> ) &amp; </Chunk>
                     <Chunk type="CustomFunctionRef">sdafsadf Copy2</Chunk>
                  </DisplayCalculation>
                  <Comment/>
                  <AutoEnter alwaysEvaluate="False"/>
                  <Storage storeCalculationResults="False" indexLanguage="English" global="False" maxRepetition="1"/>
               </Field>

--------------------

               <Field id="3" dataType="Text" fieldType="Normal" name="sfkjsdfklj">
                  <Comment/>
                  <AutoEnter allowEditing="True" overwriteExistingValue="False" alwaysEvaluate="False" constant="False" furigana="False" lookup="False" calculation="True">
                     <ConstantData/>
                     <Calculation table="Test"><![CDATA[Asin ( sfksjfhd )]]></Calculation>
                     <DisplayCalculation>
                        <Chunk type="FunctionRef">Asin</Chunk>
                        <Chunk type="NoRef"> ( </Chunk>
                        <Chunk type="FieldRef">
                           <Field table="Test" id="2" name="sfksjfhd"/>
                        </Chunk>
                        <Chunk type="NoRef"> )</Chunk>
                     </DisplayCalculation>
                  </AutoEnter>
                  <Validation message="False" maxLength="False" valuelist="False" calculation="False" alwaysValidateCalculation="False" type="OnlyDuringDataEntry">
                     <NotEmpty value="False"/>
                     <Unique value="False"/>
                     <Existing value="False"/>
                     <StrictValidation value="False"/>
                  </Validation>
                  <Storage autoIndex="True" index="None" indexLanguage="English" global="False" maxRepetition="1"/>
               </Field>

My XPATH is fixed to all Calculations within the BaseTableCatalog - like this.

/FMPReport/File[1]/BaseTableCatalog[1]//Calculation

In some cases the parent of the calculation will be "Field" (see example) in other cases it will be "AutoEnter" (see example) or "Validation"

I have tried a number of different things but I can't get any of them to work and bring me reliable results.

This returns nothing for the"$from" variable

      <xsl:variable name="from">
         <xsl:choose>
            <xsl:when test="../parent='Field'">53</xsl:when>
            <xsl:when test="../parent='AutoEnter'">54</xsl:when>
            <xsl:when test="../parent='Validation'">55</xsl:when>
         </xsl:choose>
      </xsl:variable>

This returns nothing when the calculation is a child of Field but it returns always the 53 when the calculation is "AutoEnter" or "Validation"

      <xsl:variable name="from">
         <xsl:choose>
            <xsl:when test="local-name(../parent::*)='Field'">53</xsl:when>
            <xsl:when test="local-name(../parent::*)='AutoEnter'">54</xsl:when>
            <xsl:when test="local-name(../parent::*)='Validation'">55</xsl:when>
         </xsl:choose>
      </xsl:variable>

I know the answer is obvious and I am just missing it.

Thanks for any suggestions or help on this.

Vince

Current Thread