XMLTemplater
用FME特性属性值填充XML文档。文档作为模板提供,转换器将使用XQuery将属性值和几何信息插入模板。模板可以从属性、文件中加载,也可以直接输入transformer参数。
输入端口
的每个特性根输入端口,根计算XML模板,并将结果放入result属性参数中。
输出端口
该端口经过变压器处理后输出特性。
参数
分组Sub-Features
方法中的参数相比,按参数分组子功能允许对子功能进行更粗粒度的筛选FME:过程特性函数。将此参数设置为属性名列表时,将FME:过程特性函数将只处理与当前正在处理的特性具有相同属性值的子特性。请注意,此参数对根特性。每一个根特征将被处理并从变压器中输出。
当对子特征进行分组时,如果每个分组中的特征都是连续的,则可以通过将分组的子特征连续参数设为Yes来提高变压器的性能。当设置这个值时,根当所有适用的子特性到达转换器时,将立即处理特性。这意味着transformer将以非阻塞的方式运行,而不是在开始处理模板之前等待所有特性的到来。如果一个组中的特性不是全部连续到达,则转换器的行为是未定义的。如果发生这种情况,一些子功能可能不会被处理。
在XMLTemplater中fme:get属性,fme:获取列表属性和fme:获取xml属性函数特别有用。只允许不改变特性的函数。看到xquery函数文档有关可用函数的更多信息。
下面的XML模板使用' id '特性属性的值填充XML元素。
还可以使用XQuery函数填充XML属性值。
为了用list属性的内容填充一个XML元素序列,使用循环遍历list项,如下面的示例所示:
{
$road_id in fme:get-list-attribute("road_ids{}")
返回
}
一个常见的用例是,仅在特性属性具有值时才写出XML元素。为此,使用if-then-else语句。下面的示例仅在特性包含时才写出displayName元素显示名称属性,该属性的值不是空字符串。
{如果(fme:has attribute(“display_name”)而不是(fme:get attribute(“display_name”)eq“”),则 {fme:get attribute(“display_name”)} else()}
在评估模板时,它只能访问当前正在处理的特性的属性。为了允许模板访问多个特性的属性,引入了子模板的概念。使用FME:过程特性函数中,转换器可以对一组特性上的子模板进行评估,然后将结果插入到第一个模板中。在transformer接口中,每个子模板都有一个名称。然后将在。中使用此名称FME:过程特性来电识别子模板来评价。此外,变压器输入端口会为每个子模板来创建。子模板将在其上输入对应的变压器输入特征进行处理。其输入这些输入端口之一的特征将被称为子功能。
在下面的例子中,根模板构建一个
{FME:过程的功能( “HOUSE”)}
与房子的输入端口相关联的模板创建
如果一个要素进入根输入和两个功能进家门输入,生成的XML文档看起来是这样的:
模板可以调用许多子模板。例如,在上面的例子中,我们可以添加名为BUSINESS的另一个子模板,然后使用过程中的功能函数来运行从这个子模板根模板。此外,子模板可以运行其他子模板,与子模板不得直接或间接地运行本身的限制。
选择子功能到进程
通常有一个分层结构上进入XMLTemplater的功能。例如,每个村都会有一些房屋,每家都会有好几个房间,等等。如果FME:过程特性函数被用作如上所述,所得到的文件可能是不正确的。假设有两个村庄,各有五间房屋。每个村的房子是由一个单独的FME功能表示。村里的功能被路由到根输入端口,而屋特征被路由到HOUSE输入端口。
如果变压器与上面的模板运行,将有两个输出功能,符合市场预期。然而,两者的
该FME:过程特性功能提供了一种方法来做到这一点。附加功能参数可被用于过滤子功能将被处理。第二个参数是属性名称的列表,并且第三是属性值的列表。只有子功能属性匹配属性名称和值的定列表将被处理。
调用该函数将评估HOUSE子模板上的所有屋特征,其村庄属性当前要素的id属性相匹配。
FME:工艺功能( “HOUSE”, “village_id”,FME:获得属性( “ID”))
多于一个的属性/值对可以被指定。在这种情况下,属性名和属性值必须包含在括号中。下面的函数调用将评估HOUSE子模板上的所有屋特征,其村庄属性当前要素的id属性相匹配,并且其数层属性是2。
FME:工艺功能( “HOUSE”,( “village_id”, “num_floors”),(FME:获得属性( “ID”),2))
运行多个子模板用一个函数调用
它可以评估使用一个函数调用多个子模板。只需通过模板名称的列表FME:过程特性函数。子模板将在每个列表中指定的子功能进行评估。该功能将在他们进入了变压器的顺序进行处理。下面的函数调用处理家庭和部门子模板:
FME:过程的功能(( “HOUSE”, “业务”))
仍然可以使用的子特征选择参数时FME:过程特性功能是用来评估多个子模板。
运行在相同特征的子模板
这是可能的,以评估使用正被用来评估当前模板相同特征的子模板。该FME:过程模板功能需要一个名称,或应评估名称的子模板列表。这些模板将被评估,其结果将被插入到当前模板。为了评估模板,刚进入子模板作为函数参数的名称。例如,当正在处理一套房子的功能,我们可以使用下面的函数调用评估OWNER模板。店主模板将使用进屋输入端口的功能进行评估。
FME:流程的模板(“所有者”)
为了评估一组模板,通过名称的列表:
FME:流程的模板(( “所有者”, “地址”))
这种技术可以用于模块化XML模板,通过移动重复模板结构成一个单一的位置。例如,如果两院和企业有一个地址,这个地址可以提取到一个地址模板,然后将房子和业务模板可以使用FME:过程模板功能插入地址值。通过这种方式,地址模板没有房子和业务模板内被复制。
几何模板可以用来写出来的自定义XML的几何形状。有大量的功能,其允许几何数据的提取,和子模板上的几何形状的处理。欲了解更多信息,请参阅xquery函数文档对于所有的几何函数的列表,以及如何使用子模板写出来的几何数据。
几何子模板以同样的方式作为常规子模板操作,与几何子模板不变压器创建一个输入端口例外。
虽然几何模板被评估时,函数访问功能属性(fme:get属性等),仍可使用。
当指定通过模板Expression参数或模板文件参数XML模板,变压器将验证所有引用的要素属性存在于传入的功能。如果属性是从输入功能缺失(不暴露),变压器将被突出显示红色是不完整的。当这种情况发生时,变压器的总结注释将指示缺少的属性的XML模板引用。
此外,当子模板的名称被传递到FME:过程特性和FME:过程模板功能名称将被验证,以确保它们匹配变压器接口提供的名称。
要覆盖这一额外的验证行为,设置参数验证属性/模板名称为No.
到更新XML文档写的属性。默认值是_结果。
指定更新XML文档是否应该以一个XML头声明开始。默认情况下,输出将包含XML头。当输出是与其它值被连结成一个更大的XML文档省略报头可以是有用的。
自动生成XML模板
在XMLTemplater编辑器窗口中,“生成”按钮可用于打开一个对话框,该对话框可用于生成作为XML模板基础的XML文档。此对话框使用与XMLSampleGenerator变压器。有关如何使用此对话框的更多信息,请参阅XMLSampleGenerator文档。
编辑变压器参数
使用一组菜单选项,可以通过引用工作空间中的其他元素来分配transformer参数。更高级的功能,如高级编辑器和算术编辑器,也可以在一些转换器中使用。要访问这些选项的菜单,请单击在可适用的参数旁边。有关更多信息,请参见变压器参数菜单选项。
变压器的分类
搜索FME知识中心
有关此变压器的示例和信息,请参阅FME知识中心。