XML模板程序
用FME要素属性值填充XML文档。文档作为模板提供,转换器将使用XQuery将属性值和几何体信息插入模板中。模板可以从属性、文件加载,也可以直接输入到transformer参数中。
输入端口
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
对于进入根输入端口根计算XML模板,并将结果放入result属性参数中。
输出端口
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
经过转换器处理后,从该端口输出特征。
参数
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
分组子要素
“按参数分组子特征”允许对子特征进行比中的参数更粗粒度的过滤FME:流程功能功能。如果将此参数设置为属性名称列表,则FME:流程功能函数只处理与当前正在处理的特征具有相同属性值的子特征。请注意,此参数对根特征。每个根特征将被处理并从变压器输出。
分组子特征时,如果每组中的所有特征都是连续的,则可以通过将“分组子特征是连续的”参数设置为“是”来提高转换器的性能。设置此值时,根所有适用的子特征到达变压器后,将立即处理特征。这意味着transformer将以非阻塞的方式运行,而不是在开始处理模板之前等待所有特性到达。如果一个组中的特征不是全部连续到达,则变换器的行为是未定义的。如果发生这种情况,一些子特征可能不会被处理。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
在XMLTemplater中fme:获取属性,fme:获取列表属性和fme:获取xml属性功能特别有用。只允许不改变该功能的功能。看看XQuery函数文档有关可用函数的更多信息。
以下XML模板填充了具有“ID”功能属性的值的XML元素。
XQuery函数也可以用来填充XML属性值。
要用列表属性的内容填充XML元素序列,可以使用循环遍历列表项,如下例所示:
<道路>
{
fme中的$ load_id:get-list-attribute(“Road_ids {}”)
返回
}
一个常见的用例是,仅当feature属性有值时才写出XML元素。为此,使用if-then-else语句。以下示例仅当功能包含显示名称属性,并且该属性的值不是空字符串。
如果(fme:has属性(“显示名称”)而不是(fme:获取属性(“显示名称”)eq“))然后{fme:获取属性(“显示名称”)} else()}
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
评估模板时,它只能访问当前正在处理的功能的属性。为了使模板能够访问多个特征的属性,引入了子模板的概念。使用FME:流程功能函数,变压器可以在一组功能上评估子模板,然后将结果插入第一个模板。在变压器接口中,每个子模板将被给出一个名称。然后将用于此名称FME:流程功能调用以标识要评估的子模板。此外,将为每个子模板创建一个转换器输入端口。子模板将在输入相应变压器输入的特征上进行处理。输入其中一个输入端口的特征称为子特征。
在下面的示例中根模板用单个特征的信息构造一个
<村庄>
<姓名>{fme:获取属性(“名称”)}
<人口> {FME:Get-Attribute(“人口”)} plation>
<房屋>
{fme:过程特征(“房子”)}
与HOUSE输入端口关联的模板创建
<房子>
<地址> {fme:get-attribute(“地址”)} 地址>
<所有者>{fme:获取属性(“所有者”)}
如果单个特征进入根输入和两个特性进入内部输入,生成的XML文档可能如下所示:
<村庄>
<房屋>
<房子>
123主街<所有者> John Doe Owner>
<房子>
<地址> 324主街地址>
无名氏
一个模板可以调用多个子模板。例如,在上面的示例中,我们可以添加另一个名为BUSINESS的子模板,然后使用processfeatures函数从根模板。另外,子模板可以运行另一个子模板,其中限制子模板可能不直接或间接运行自身。
选择要处理的子要素
通常,进入XMLTemplater的特性有一个层次结构。例如,每个村庄都会有一些房子,每个房子都会有几个房间,等等FME:流程功能使用如上所述的功能,所得到的文档可能不正确。假设有两个村庄,每个村庄都有五个房子。每个村庄和房屋都是由一个单独的FME功能表示。村庄的功能被路由到了根输入端口在房屋功能被路由到房屋输入端口。
如果使用上述模板运行transformer,则会像预期的那样有两个输出特性。然而,这两个<村庄>元素将包括所有十个<房子>元素。正确的行为是只评估与当前村庄特征相对应的房屋特征上的子模板。
这个FME:流程功能函数提供了执行此操作的方法。附加功能参数可用于过滤要处理的子特征。第二个参数是属性名列表,第三个参数是属性值列表。只处理其属性与给定的属性名称和值列表匹配的子特征。
此函数调用将评估所有房屋特征的房屋子模板村庄id属性与当前功能的id属性匹配。
fme:过程特征(“房子”,“村庄”,fme:获取属性(“id”))
可以指定多个属性/值对。在这种情况下,属性名和属性值必须包含在括号中。下面的函数调用将对所有房屋要素的房屋子模板进行求值村庄id属性与当前要素的id属性匹配,并且num_floors.属性为2。
fme:过程特征(“房屋”,“村庄id”,“楼层数”)(fme:获取属性(“id”),2)
使用单个函数调用运行多个子模板
可以使用单个函数调用来评估多个子模板。只需将模板名称列表传递给FME:流程功能功能。子模板将根据列表中指定的每个子要素进行评估。这些特征将按照它们进入变压器的顺序进行处理。以下函数调用处理房屋和业务子模板:
fme:过程特征(“房子”、“生意”))
子特征选择参数在FME:流程功能函数用于评估多个子模板。
在同一功能上运行子模板
可以使用用于评估当前模板的相同功能评估子模板。这个fme:过程模板函数获取应该计算的子模板的名称或名称列表。将对这些模板进行评估,并将结果插入到当前模板中。要计算模板,只需输入子模板的名称作为函数参数。例如,在处理房屋特征时,我们可以使用以下函数调用评估所有者模板。所有者模板将使用进入HOUSE输入端口的功能进行评估。
fme:过程模板(“业主”)
要评估一组模板,请传递名称列表:
FME:流程模板((“所有者”,“地址”))
这种技术可以通过将重复的模板结构移动到一个地方来模块化XML模板。例如,如果房屋和企业都有地址,则可以将地址提取到地址模板中,然后房屋和企业模板可以使用fme:过程模板函数插入地址值。这样,地址模板不必在房屋和业务模板内重复。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
几何体模板可用于写出自定义XML几何体。有大量的函数可以提取几何数据,并处理几何图形的子模板。有关更多信息,请参阅XQuery函数文档所有几何函数的列表,以及如何使用子模板写出几何数据。
几何图形子模板的操作方式与常规子模板相同,但几何图形子模板不会在转换器上创建输入端口。
正在评估几何模板时,访问功能属性的功能(fme:获取属性等),仍然可用。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
通过template Expression参数或template File参数指定XML模板时,转换器将验证所有引用的特征属性是否存在于传入特征中。如果输入特性中缺少属性(未公开),则转换器将以红色突出显示为不完整。出现这种情况时,转换器的摘要注释将指示XML模板正在引用的缺少的属性。
此外,当子模板名称传递给FME:流程功能和fme:过程模板函数,将验证名称以确保它们与变压器接口中给出的名称匹配。
要覆盖此附加验证行为,请设置参数验证属性/模板名称不。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
更新后的XML文档写入的属性。默认值为_结果.
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
指定更新的XML文档是否应以XML头声明开头。默认情况下,输出将包含一个XML头。当输出要与其他值连接到一个更大的XML文档中时,省略头可能很有用。
自动生成XML模板
在XMLTemplater编辑器窗口中,“Generate”按钮可用于打开一个对话框,该对话框可用于生成XML文档,该文档可用作XML模板的基础。此对话框使用与XML采样生成器变压器。有关如何使用此对话框的详细信息,请参阅XML采样生成器文档。
编辑变压器参数
使用一组菜单选项,可以通过引用工作空间中的其他元素来指定转换器参数。更高级的功能,如高级编辑器和算术编辑器,也可以在一些变压器。要访问这些选项的菜单,请单击在适用参数旁边。有关详细信息,请参阅变压器参数菜单选项.
变压器类别
搜索FME知识中心
搜索有关此变压器的样本和信息FME知识中心.