You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MediaWiki语义模板报错:属性值含无效字符问题求助

解决MediaWiki语义子对象@category参数解析报错问题

问题描述

我创建了一个兼具视觉展示和语义填充功能的MediaWiki模板,在指定页面使用时,语义子对象部分失效,报错信息如下:

Property "" (as page type) with input value "psicologia|governo|politica|lavoro|+sep=|" contains invalid characters or is incomplete and therefore can cause unexpected results during a query or annotation process.

当前模板代码:

[{{{url}}} {{{title}}}] - {{{categories}}} 
{{#subobject:
|url = {{{url}}}
|title = {{{title}}}
|@category={{{categories}}}
}}

期望运行效果:

{{#subobject:
|url = https://www.instagram.com/p/CXeE2j-NT6s/
|title = Bullismo: proposta una legge in Francia per punirlo penalmente. Si rischia anche il carcere
|@category=bullismo|violenza|leggi|punizioni|+sep=|
}}

原因分析

报错的核心原因是MediaWiki模板解析器会把参数值中的|识别为模板/函数的参数分隔符。当{{{categories}}}的值包含|时,#subobject会错误地将这些|当成自身的参数分隔符,导致@category的参数值被截断,剩余部分被解析为无键的空属性,最终触发无效属性报错。

解决方案

有两种可靠的解决方式,任选其一即可:

方式一:修改模板使用{{#tag:subobject}}语法

将原模板中的{{#subobject: ... }}替换为{{#tag:subobject| ... }},标签内部的|不会被解析为参数分隔符,能完整保留categories参数的原始值:

[{{{url}}} {{{title}}}] - {{{categories}}} 
{{#tag:subobject|
url = {{{url}}}
title = {{{title}}}
@category={{{categories}}}
}}

方式二:调用模板时转义|字符

如果不想修改模板,可在调用模板时将categories参数中的|替换为MediaWiki的转义字符{{!}},确保解析器不会将其识别为参数分隔符:

{{你的模板名
|url=https://www.instagram.com/p/CXeE2j-NT6s/
|title=Bullismo: proposta una legge in Francia per punirlo penalmente. Si rischia anche il carcere
|categories=bullismo{{!}}violenza{{!}}leggi{{!}}punizioni{{!}}+sep={{!}}
}}

验证效果

应用上述修改后,语义子对象将正确生成期望的代码,不再触发报错,同时视觉展示部分保持正常。

内容的提问来源于stack exchange,提问作者Revious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:33:34