【发布时间】:2017-09-25 21:53:04
【问题描述】:
所以我有一个辩论系统,用户应该按照以下格式发表他们的论点和反对意见:
<argument>Argument about something.
<objection>Objection to the argument.
<objection>Objection to the objection.</objection>
</objection>
<objection>Second objection to the argument.</objection>
</argument>
但我不能指望用户总是做对,所以我需要一些方法来规范/美化他们的输入。我尝试了标准方式:
$dom = new DOMDocument;
$dom->preserveWhiteSpace = false;
$dom->loadXML('<argument>a<objection>b</objection></argument>');
$dom->formatOutput = true;
echo $dom->saveXml();
但不幸的是这个输出:
<argument>a<objection>b</objection></argument>
显然这是因为标准的 PHP 漂亮打印忽略了所有混合内容 XML。我做了一些研究,我认为 XSL 可能是关键。但我以前从来没有接触过,所以我还不确定。任何人都可以确认并给我一两个有用的指针吗?也许是一个例子?谢谢!
【问题讨论】:
-
protip:有更多的结构。一段数据是“一件事”吗?标记它。比如参数中的纯文本是一个东西,为什么没有标记? “异议”中的纯文本也是如此:那是什么文本?这本身就是反对意见吗?你需要 more 结构在这个数据 =)
-
印刷精美。因为您在根级别有一个未封闭的文本,所以它保持一行。删除 a 或将其放在节点中,您将看到缩进。