【发布时间】:2020-12-15 09:26:22
【问题描述】:
我开始更新一个旧项目。
用 centos7 PHP 7 就可以了,centos8 就没那么幸运了。库中可能有一些变化吗?
不过,我需要让它在 centos8 上运行。
我也不熟悉xsl。
代码中可能有什么问题?
Atm 两个地方都有 ** 抛出一个警告并且程序失败。
警告:XSLTProcessor::transformToXml():xsl:choose:xsl:当预期首先出现时
**<xsl:template name="D_title"><xsl:choose>**
<!--<xsl:when test="ver!=''">-->
<xsl:when test="o='1'"><xsl:value-of select="concat('sometext: ',code)"/></xsl:when>
<xsl:otherwise><xsl:value-of select="concat('sometext (edid: ',edid,')')"/></xsl:otherwise>
</xsl:choose></xsl:template>
<xsl:template name="login">
<xsl:choose>
<xsl:when test="name">
**<form name="logout" method="post">**
<span><xsl:value-of select="name"/> <input type="submit" class="textBox" name="logout" value="Log out" /></span>
</form>
</xsl:when>
<xsl:otherwise>
<form name="login" method="post">
<xsl:if test="error"><span class="error_msg">error!</span></xsl:if>
USER: <input type="text" name="username" value="" size="14" maxlength="14" class="textBox" />
PW: <input type="password" name="password" size="14" maxlength="14" class="textBox" />
<input type="submit" class="textBox" name="login" value="Log in" />
</form>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
渲染代码:
$dom_el = dom_import_simplexml($this->sxe);
$doc = new DOMDocument('1.0');
$dom_node = $doc->importNode($dom_el, true);
$dom_node = $doc->appendChild($dom_node);
$xslt = new xsltProcessor;
$xslt->importStyleSheet(DomDocument::load('xsl/template.xsl'));
return $xslt->transformToXML($doc);
【问题讨论】:
-
抱歉,您的代码看不到任何明显错误。尝试调查正在调用哪个版本的 libxslt 来执行 XSLT 转换。
-
它有 libxslt 1.1.32-4.el8,还有 libxml2 2.9.7-7.el8。 Centos7 有 libxslt 1.1.28。我之前研究过,但无法做出任何假设。 centos8 也不提供我以前的版本。有趣的是,linksais libxslt 1.1.32 需要 libxml2-2.9.8。