span8
span4
在这种情况下,XMLXQueryUpdater可能是更好的选择。我的最后一个例子:xqueryupdater-example.fmw
我不知道为什么我之前的帖子没有出现…
重试。附件是一个使用XQuery的工作空间示例:xmltemplater - - 2.逐步示例
(添加)@Mark2At亚搏在线Safe,这似乎是在XQuery表达式中操作结构化列表的一种更聪明的方法。
1 {FME:GET属性( “points.startPoint.value1”)} {FME:GET属性( “points.startPoint.value2”)} {$让V1:= {在FME $ V:获取列表属性( “points.middlePoint {}值1”)返回$ V}设$ V2:= {在FME $ V:获取列表属性( “points.middlePoint {}值2”)返回$ v} $对于我在(1〜FN:计数($ V1))收益率({FN:SUM(($ I,1))} ,{$ V1 [$ i]于} ,{$ V2 [$ i]于} )}{FME:GET属性( “_ NUM”)} {FME:GET属性( “points.endPoint.value1”)} {FME:GET属性( “points.endPoint.value2”)}
更简单的XQuery表达式一闪而过。嵌套的迭代是不是在这种情况下,重要的:)
XMLTemplater_B:
{在$我在$ X {FME:获取XML属性( “xml_fragment”)} /元/点/ *回报( {$ I} {$ X / VALUE1},{$ X /值2})}
XMLTemplater_C:
1 {FME:GET属性( “points.startPoint.value1”)} {FME:GET属性( “points.startPoint.value2”)} {在$我在FME $ X:获取列表属性( “points.middlePoint {}值1”)让$一个:= FN:CONCAT( “points.middlePoint {”,{$ I} -1“} .value2" )返回({总和(($ I,1))} ,{$ X} ,{FME:获取属性($ A)} )}{FME:GET属性( “_ NUM”)} {FME:GET属性( “points.endPoint.value1”)} {FME:GET属性( “points.endPoint.value2”)}
嗯…, my posts in this thread won't appear anyway.
再次重试。这是最新的例子:xmltemplater - - 4.逐步示例
我认为子模板是解决这个问题的方法。
在xmltemplater将其放入子模板端口之前爆炸列表。
我包括一个例子来说明。subelementsxmltemplaterexample.fmw
希望这能助你一臂之力
当你读取数据时,你应该得到如下属性:
points.startPoint。value1 points.startPoint.value2 points.middlePoint{}.value1 points.middlePoint{}.value2 points.endpoint.value1 points.endpoint.value2
middlePoint属性中的{}部分表示一个列表,因为可以有多个值。
您可以在XMLTemplater中使用以下内容来遍历该列表:
{在FME $ X:获取列表属性( “points.middlePoint {}值1。”)回归 {$ X} }
我不太能让它开始工作,恐怕我得赶着去参加一个会议。但我希望这能让你开始。整个模板的起点和终点都在中间。
我真正不清楚的是嵌套那些循环-因为你需要一个value1和value2。我对XQuery不是很感兴趣。但就像我说的,这应该是一个好的起点。
好。它的工作原理在一定程度上。我用这个模板:
{FME:GET属性( “points.startPoint.value1”)} {FME:GET属性( “points.startPoint.value2”)} {在FME $ X:获取列表属性( “points.middlePoint {}值1。”)回归{$ X} }{FME:GET属性( “points.endPoint.value1”)} {FME:GET属性( “points.endPoint.value2”)} 我似乎无法得到的是中间值1 /值2配对。如果我对循环运行的两个连续然后我得到的所有数值1的,那么所有的值2的。
如果我窝环我与每一个值2,这也是不正确配对的每一个值1。
不知何故,我需要交错两个查询。也许@takashi的方式做到这一点知道?我也许会邮寄到StackOverflow上也一样,有人可能知道。
你好@Mark2At亚搏在线Safe,也许这个模板表达式可以作为你的预期。临时XML片断创建和嵌套“的”组合迭代的伎俩。假定“_num”属性存储所有点= 2 +数字“points.middlePoint {}”列表中的元素的数量。
1 {FME:GET属性( “points.startPoint.value1”)} {FME:GET属性( “points.startPoint.value2”)} {在$我在FME $ X:获取列表属性( “points.middlePoint {}值1”)让$一个:= FN:CONCAT( “points.middlePoint {”,{$ I} -1“}.value2") let $t :=return {for $v in $t/* return $v}} {fn: sum(({$我},1))} {$ X} {FME:获取属性($ A)} {FME:GET属性( “_ NUM”)} {FME:GET属性( “points.endPoint.value1”)} {FME:GET属性( “points.endPoint.value2”)}
好。如此看来,“FME:获取列表属性”功能,只是返回值的序列,所以这种表达也是可能的。
1 {FME:GET属性( “points.startPoint.value1”)} {FME:GET属性( “points.startPoint.value2”)} {let $v1:= fme:get-list-attribute("points.middlePoint{}.value1")让$v2:= fme:get-list-attribute("points.middlePoint{}.value2") for $i in (1 to fn:count($v1)) return ({$ i + 1} ,{$ V1 [$ i]于} ,{$ V2 [$ i]于} )}{FME:GET属性( “_ NUM”)} {FME:GET属性( “points.endPoint.value1”)} {FME:GET属性( “points.endPoint.value2”)}
该表达式也适用。#希望这篇文章将出现...
1 {FME:GET属性( “points.startPoint.value1”)} {FME:GET属性( “points.startPoint.value2”)} {$为我(0到FN:计数(FME:获取列表属性()) - 1 “points.middlePoint {}值1”)返回({$ i + 2} ,{fme: get-attribute (fn: concat(“点。middlePoint{“我美元,”}.value1 ")} ,{fme: get-attribute (fn: concat(“点。middlePoint{“我美元,”}.value2 ")} )}{fn:count(fme:get-list-attribute("points.middlePoint{}.value1")) + 2} {FME:GET属性( “points.endPoint.value1”)} {FME:GET属性( “points.endPoint.value2”)}
©2019安全亚搏在线软件公司法律