3

我正在尝试创建一个模板,该模板将通过使用动态页面列表生成页面列表来输出动态报告,然后使用 Semantic Mediawiki 在每个页面上运行查询,在表格中输出整个混乱。模板的结构如下所示:

{| class="wikitable sortable collapsible collapsed" width="100%"
|- valign="bottom"
! width="15%" | Compound ID
! width="15%" | Generic name
! width="15%" | Trade name
! width="15%" | Developer
! width="10%" | Phase of development
! width="30%" | Target
{{#dpl:
 | category=compounds
 | linksto={{PAGENAME}}{{#dpl: linksto={{PAGENAME}} | redirects=only | mode=userformat | format=,{{!}},%TITLE%, | suppresserrors=true }}
 | ignorecase=true
 | distinct=strict
 | format=,{{!}}- valign="top"\n{{indication-based compound list/row|%TITLE%}}\n
 | noresultsheader={{!}}-\n{{!}} colspan="6" align="center" {{!}} ''No compounds have yet been studied for this indication.''
}}
|}

{{indication-based compound list/row}}包括以下内容:

<includeonly>{{!}} {{#show: {{{1}}} | ?compound id }}
{{!}}{{!}} {{#show: {{{1}}} | ?compound generic name }}
{{!}}{{!}} {{#show: {{{1}}} | ?compound trade name }}
{{!}}{{!}} {{#show: {{{1}}} | ?developer }}
{{!}}{{!}} {{#ask: [[category:clinical studies]][[compound number::{{{1|}}}]] | ?Study phase=| limit=1| mainlabel=-| searchlabel=| sort=Study phase| order=descending }}
{{!}}{{!}} {{#show: {{{1|}}} | ?target }}</includeonly>

查询是为什么这{{#ask}}不仅仅是一个直接的 DPL 表的原因:因为针对特定适应症的特定化合物的当前临床开发阶段是一个经常变化的动态数据,唯一的选择似乎是使用查询以{{#ask}}找出符合参数的临床试验中研究阶段的最高值。但是这个模板将调查自动生成的页面,我没有办法为每个化合物自动加载指示列表(应用语义标记),所以它是根据本身的指示链接列表生成的由{{#dpl}}每个复合页面上的函数生成。

我一步一步地完成了这一步,以下都不是问题:

  1. 模板代码是健全的,并生成正确的结构。
  2. 表格行模板是合理的,如果我删除该{{#dpl}}函数并将其替换为模板和复合页面名称作为参数,例如{{indication-based compound list/row|infliximab}},它会创建我正在寻找的输出。
  3. 使用默认输出格式时,该{{#dpl}}函数会生成正确的页面列表。
  4. 当与简单的虚拟模板(只是一个无序列表)一起使用时,该{{#dpl}}函数会正确地将列表作为顺序参数传递。format = ,{{template}}

但是,当我将所有部分放在一起时,我只会得到空的表格单元格。{{#show}}and{{#ask}}函数似乎无法接受 DPL 输入作为参数。是否有我跳过的额外参数或中间步骤可以清理输入并使整个工作正常?还是DPL和SMW在这种方式上根本不兼容?

  • 动态页面列表 2.01
  • 语义媒体维基 1.8
  • 媒体维基 1.20.2
  • PHP 5.3.19 (apache2handler)
  • MySQL 5.1.30
4

1 回答 1

2

看起来问题是 Semantic Mediawiki在您使用参数时无法解析动态页面列表生成的PAGE%和变量,并且没有办法解决这个问题,因为 DPL 在函数完成之前不会将它们呈现为真实数据。%TITLE%format

于 2013-03-12T14:32:39.070 回答