将参数从动态页面列表传递到语义Mediawiki

将参数从动态页面列表传递到语义Mediawiki,mediawiki,mediawiki-templates,semantic-mediawiki,dynamic-pages,Mediawiki,Mediawiki Templates,Semantic Mediawiki,Dynamic Pages,我正试图创建一个模板,通过生成一个包含动态页面列表的页面列表来输出一个动态报告,然后使用语义Mediawiki在每个页面上运行查询,将整个混乱输出到一个表中。模板的结构如下所示: {| class="wikitable sortable collapsible collapsed" width="100%" |- valign="bottom" ! width="15%" | Compound ID ! width="15%" | Generic name ! width="15%" | Tra

我正试图创建一个模板,通过生成一个包含动态页面列表的页面列表来输出一个动态报告,然后使用语义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.''
}}
|}
{{基于指示的复合列表/行}
由以下部分组成:

<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>
{{!}{{show:{{{{{1}}}}{124;复合id}
{{!}{!}{{!}{{{}{{}显示:{{{{1}}}}}|?复合通用名}
{{!}{!}{{!}{{}{{}显示:{{{{1}}}}}|复合商品名}
{{!}{!}{{!}{{{}{{{显示:{{{{1}}}}{124;开发者}
{{!}{{!}{{}}{{{{!}}}{{{提问:[类别:临床研究][[复合编号:{{1}}}]}}研究阶段={1}限制=1}主标签=-|搜索标签=|排序=研究阶段|顺序=下降}
{{!}{!}{{!}{{{显示:{{{1}}}}}}}}目标}
{{ask}
查询是这不仅仅是一个直接的DPL表的原因:因为针对特定适应症的特定化合物的临床开发的当前阶段是一个频繁变化的动态数据段,所以唯一的选择似乎是使用
{{ask}
查询以找出符合参数的临床试验中研究阶段的最高值。但是这个模板将调查自动生成的页面,我没有一种方法自动加载每个复合物的指示列表(应用语义标记),因此它是基于指示链接列表生成的,这些指示链接本身是由每个复合物页面上的
{{dpl}}
函数生成的

我已经一步一步地解决了这个问题,以下问题都没有:

  • 模板代码是可靠的,并生成适当的结构
  • 表行模板是可靠的,如果我删除
    {{{dpl}}
    函数并将其替换为模板和一个复合页面名称作为参数,例如
    {{基于指示的复合列表/行| infliximab}
    ,它将创建我正在寻找的输出
  • 当使用默认输出格式时,
    {{#dpl}}
    函数生成正确的页面列表
  • {{{#dpl}}
    函数在使用一个简单的伪模板(只是一个无序的列表)时,将列表作为顺序参数正确地传递
  • 然而,当我把所有的部分放在一起时,我只得到了空的表格单元格。
    {{#show}}
    {{#ask}
    函数似乎无法接受DPL输入作为参数。是否有一个额外的参数或中间步骤我跳过,可以清理输入,使整个工作?还是DPL和SMW在这方面根本不兼容

    • 动态传道者2.01
    • 语义MediaWiki 1.8
    • MediaWiki 1.20.2
    • PHP 5.3.19(apache2handler)
    • MySQL 5.1.30

    问题似乎在于,当您使用
    format
    参数时,Semantic Mediawiki无法解析动态页面列表生成的
    页面%
    %TITLE%
    变量,而且无法解决这一问题,因为在函数完成之前,DPL不会将这些变量呈现为真实数据