Skip to main content

I am creating an XMLtemplate that loops through all the id\\value pairs in a list and creates an XMLelement for each.

I got the looping working after reading through some of @takashi's post replys, but the $i variable is not getting passed correctly into the fme:get-attribute function on the list number. Am I going about this wrong? Is there a different way that I need to call the variable inside the function?

 

<update_transaction object="ObjectNameHere">

{for $i in (1 to xs:integer({fme:get-attribute("_Result_count")}))

return (

<attribute_value name="{fme:get-attribute("Inspection.Results.Result{$i}.id")}">{fme:get-attribute("Inspection.Results.Result{$i}.Value")}</attribute_value>

)

}

</update_transaction>

 

 

I currently am getting this when I run the Templater:

 

<?xml version="1.0" encoding="UTF-8"?>

 

<task format="sw_standard 1.0">

 

<task_attributes>

 

<assigned_to/>

 

<date/>

 

<priority>Normal</priority>

 

<reference_id>FileName Without Time Stamp</reference_id>

 

<sender/>

 

<title>Filename + _TM</title>

 

<type>Maintenance</type>

 

</task_attributes>

 

<properties/>

 

 

<data>

 

<update_transaction object="BuildThisInAttributeManager">

 

 

<attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/>

 

 

 

</update_transaction><update_transaction object="BuildThisInAttributeManager">

 

 

<attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/><attribute_value name=""/>

 

 

 

</update_transaction>

 

</data>

 

</task>

I fixed it using xquery concatenation ||

<attribute_value name="{fme:get-attribute("Inspection.Results.Result{"||$i||"}.id")}">{fme:get-attribute("Inspection.Results.Result{"||$i||"}.Value")}</attribute_value>


Reply