gpt4 book ai didi

PHP, XML to HTML through XSLT makes HTML inside CDATA encoded

转载 作者:行者123 更新时间:2023-11-28 00:30:40 25 4
gpt4 key购买 nike

我真的很需要这个问题的答案。我正在开发一个项目,该项目使用 XML 制作页面,然后使用 XSLT 将其生成到网页。这是一个代码示例:

 public function transform ($xml) {
$proc = new XSLTProcessor;
$proc->importStyleSheet ($this->xsl);
$output = $proc->transformToXML ($xml);
return $output;
}

$xml 包含 XML 格式的网页,例如:

<?xml version="1.0" encoding="utf-8"?>
<page>
<meta>
<language>en</language>
<title>Main page</title>

<content>
<![CDATA[
lot's of content here along with <p>html</p>.
]]>
</content>

</page>

因此,网页是 XML 格式并传递给转换函数,该函数加载 XSL 文件以将 XML 转换为 HTML 网页。然而,上述脚本将无法正确加载内容标签,因为 XSLT 出于某种原因不理解 CDATA,并将 HTML 编码为实体。

因此,问题是,如何使用 XSLT 将 HTML 输出为 HTML 而无需将其编码为实体?

最佳答案

我确定您的 XSLT 中没有这样的东西:

<xsl:template match="content">
<xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template>

XSLT 非常“理解”CDATA。更准确地说——它根本不关心 CDATA,这是底层 XML DOM 解析器的任务,它从中生成文本值。

从 XSLT 的角度来看,无法知道字符串是否存在

"<div>bla &amp; bla</div>"

来自

<xml>&lt;div&gt;bla &amp;amp; bla&lt;/div&gt;</div>

<xml><![CDATA[<div>bla &amp; bla</div>]]></div>

CDATA 只是一种序列化便利。生成的信息集/DOM 是相同的。并且除非您禁用输出转义,否则 XSLT 会正确地从上述字符串中生成以下值:

&lt;div&gt;bla &amp;amp; bla&lt;/div&gt;

这就是您在呈现的页面上看到 HTML 代码的原因。

关于PHP, XML to HTML through XSLT makes HTML inside CDATA encoded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1713822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com