3

我想总结使用模板输入的数据,每页可以出现多次。我希望此摘要仅基于当前页面。

我似乎无法弄清楚如何捕获分配给每个页面模板多次分配给属性集的所有值。我尝试过的所有语义查询都只返回给定页面上属性的唯一值。

例如,如果我的模板具有三个字段和属性:

</noinclude><includeonly>
'''GeneralFoodF:'''  [[GeneralFoodP::{{{GeneralFoodF|}}}]] 

'''SpecificFoodF:'''  [[SpecificFoodP::{{{SpecificFoodF|}}}]] 

'''RatingFoodF:'''  [[RatingFoodP::{{{RatingFoodF|}}}]] 
</includeonly>

然后我将这个模板的四次出现添加到具有这些值的特定页面:

   {{FoodT
   |GeneralFoodF=Fruit
   |SpecificFoodF=Apple
   |RatingFoodF=4
   }}
   {{FoodT
   |GeneralFoodF=Vegetable
   |SpecificFoodF=Spinach
   |RatingFoodF=5
   }}
   {{FoodT
   |GeneralFoodF=Fruit
   |SpecificFoodF=Pear
   |RatingFoodF=5
   }}
   {{FoodT
   |GeneralFoodF=Fruit
   |SpecificFoodF=Apple
   |RatingFoodF=3
   }}

然后我执行 #show 查询:

{{#show: {{PAGENAME}} | mainlabel =- | headers = hide | link=none | ?GeneralFoodP}}

当我期望它返回时,它返回:水果,蔬菜:水果,蔬菜,水果,水果。wiki 页面文本是正确的,并显示了所有四个条目,但我似乎无法使用语义查询捕获重复的条目。如何捕获在给定页面上输入的所有(包括重复项)属性值?

4

1 回答 1

1

想一想属性的含义:如果汽车有属性is red,那么如果您两次声明它,它就不会变得更红。颜色仍然是红色,而不是“红红”。因此,您向我们展示的结果是完全可以预期的。

根据您的需要,您可能需要考虑使用子对象。它们是对象,就像页面一样,但没有自己的页面,它们可以有一个或多个属性:

{{#subobject:
 |GeneralFoodF=Fruit
 |SpecificFoodF=Apple
 |RatingFoodF=3
 |Belongs to={{PAGENAME}}
}}

然后,您可以像这样查询该页面的所有子对象:

{{#ask: [[Belongs to::{{PAGENAME}}]]
 |?GeneralFoodF
 |?SpecificFoodF
 |?RatingFoodF
}}

或所有页面上的类似子对象:

{{#ask: [[SpecificFoodF::+]]
 |?GeneralFoodF
 |?SpecificFoodF
 |?RatingFoodF
}}

也可以命名子对象,但在您的情况下,您希望它们是匿名的(有效地将它们全部命名为唯一的、自动创建的名称)。

看:

于 2014-04-23T07:32:39.310 回答