你在这里: 流行格式 > XML(可扩展标记语言)读写器 > xfMap > 特征映射规则 > 属性下定义映射规则 元素)
FME功能建设
下定义映射规则 元素)

一个映射规则R1 与元素匹配的元素E可能无法执行所有必要的映射E的子元素。在这种情况下,需要匹配其他映射规则E项下指定的 元素。

回想一下,当一个FME功能正在构建中(即,至少一个特征映射规则激活时),则特征搜索集只能包含来自?的映射规则 元素。当激活时,这些映射规则将对当前正在构建的特性起作用;他们没有具体说明一个新的FME功能的结构。

考虑以下输入XML文档,points2.xml:

points2.xml

           
           
            
             
              
               
              
             
            
            
             
              
               
              
             
            
           

一个映射规则R1,在 元素,它与 元素将难以从所有元素中提取信息 元素。

还记得吗,提取表达式目前不支持对匹配元素的子元素进行索引访问。所有R1现在能做的,是从第一个提取数据吗 元素。

在匹配的映射规则中定义的提取表达式 元素将无法到达另一个 元素,因为它表达式字符串只能指第一 元素。要克服此限制,我们需要在 匹配 元素。

R2下的映射规则 匹配 元素。当R2激活它就会挂起R1,并使用相同的FME功能R1创建。以下是xfMap文档,feature_content.xmp,确实是这样的:

feature_content.xmp

           
           
            
             
             
            
            
             
             
              
               
                
                 
                 
                
                
                 
                
               
              
             
            
           

points2.xmlfeature_content.xmp文档输入XML阅读器,FME功能输出如下:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
功能类型:
属性:颜色。blue' has value 0.596'
属性:颜色。green' has value 0.233'
属性:颜色。red' has value 0.324'
属性:xml_type'的值为xml_no_geom'
几何类型:未知(0)
=============================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
功能类型:
属性:颜色。blue' has value 0.554'
属性:颜色。green' has value 0.948'
属性:颜色。red' has value 0.874'
属性:xml_type'的值为xml_no_geom'
几何类型:未知(0)
=============================================================

事情是这样的:

一步

特征搜索集内容(步骤后)

映射规则状态Rp(步骤)

1.

特征搜索集初始化:

没有执行任何特征映射规则,因此定义了映射规则 元素feature_content.xmp将文档添加到功能搜索集。

{R1}

R1:取消激活

R2:取消激活

2.

XML阅读器读取<的开始标记。分>元素:

feature-search-set中的映射规则没有匹配<分>元素。读者继续阅读的内容 元素。

{R1}

R1:取消激活

R2:取消激活

3.

XML阅读器读取<的开始标记。点>元素:

映射规则R1在特征搜索集中匹配<点>元素。R1被激活。R1也处于执行状态,因为 元素是当前的上下文元素。

由于至少有一个特征映射规则被激活(即,R1),功能特征搜索集的内容将默认包含<feature-content-map >元素,在这种情况下,它只是R2

{R2}

R1:激活、执行

R2:取消激活

4.

XML阅读器读取<的开始标记。颜色>元素:

映射规则R2在特征搜索集中匹配<颜色>元素。R2被激活。没有全新的FME功能,因为R2在<feature-content-map >元素。的 元素也是上下文元素R1是暂停,R2现在执行。

特征映射规则R2有一个<属性>元素,R2为正在构造的FME特性提供这些属性。

{R2}

R1:激活,暂停

R2:激活、执行

5.

<颜色>元素结束标记被读取。这 元素最初触发的激活R2,所以R2是否已停用(请参阅标题部分映射规则)。

特征搜索集不会改变,因为至少有一个已激活特征映射规则,这是R1

{R2}

R1:激活、执行

R2:取消激活

6.

步骤4)和5)在接下来的两个<颜色>元素。

{R2}

7.

<点>元素结束标记被读取。

R1取消激活。XML阅读器认为构建中的FME特性在什么时候完成R1不活跃,这是因为R1是一个特征映射规则在<特征映射>元素。

没有特征映射规则是激活的,所以映射规则定义在 元素feature_content.xmp文档成为特征搜索集。

{R1}

R1:取消激活

R2:取消激活

8.

步骤3)到步骤7)对于第二个<点>元素。

9.

<分>元素结束标记被读取。XML阅读器已经读完了输入的XML文档。

{}

R1:取消激活

R2:取消激活

考虑另一个例子:

points3.xml

           
           
            
             
              
              
              
             
             
              
               0.324
              
              
               0.233
              
              
               0.596
              
             
             
            
            
             
              
              
              
             
             
              
               0.874
              
              
               0.948
              
              
               0.554
              
             
             
            
           

feature_content2.xmp

           
           
            
             
              
               
               
               
              
              
               
                
                 
                
                
                 
                
               
               
                
                 
                
                
                 
                
               
              
             
            
            
             
              
               
                
                 
                 
                
                
                 
                
               
              
             
             
              
               
                
                 
                 
                
                
                 
                
               
              
             
            
           

points3.xml,feature_content2.xmp将文档输入XML阅读器,输出以下FME特性:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
功能类型:myPoint_0”
属性:fill_color。蓝色的值是0。596
属性:fill_color。green' has value 0.233'
属性:fill_color。红色'值为0.324'
属性:位置。x '的值为10.0'
属性:位置。y '的值是0.0'
属性:outline_color。蓝色“有值1.0”
属性:outline_color。绿色“有价值1.0”
属性:outline_color。红色“值为1.0”
属性:xml_type'的值为xml_no_geom'
几何类型:未知(0)
=============================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
功能类型:myPoint_1”
属性:fill_color。blue' has value 0.554"'
属性:fill_color。green' has value 0.948'
属性:fill_color。红色'值为0.874'
属性:位置。x '有值5.0'
属性:位置。y '有值5.0'
属性:outline_color。蓝色'有值0.5'
属性:outline_color。绿色'有值0.5'
属性:outline_color。红色'有值0.5'
属性:xml_type'的值为xml_no_geom'
几何类型:未知(0)
=============================================================