Skip to main content
Solved

XML Templater - Xquery Loop through List Variable


Forum|alt.badge.img+1

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>

 

 

Best answer by bhornung

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>

View original
Did this help you find an answer to your question?

2 replies

Forum|alt.badge.img+1
  • Author
  • April 12, 2019

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>

Forum|alt.badge.img+1
  • Author
  • Best Answer
  • April 12, 2019

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


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings