xml 库中的哪些更改导致我的代码崩溃?
What has been changed in xml libraries for my code to crash?
我开始更新一个旧项目。
使用 centos7 PHP 7 可以,但 centos8 就没那么幸运了。库中可能有一些变化吗?
尽管如此,我还是需要在 centos8 上得到它 运行。
我也不熟悉 xsl。
代码中可能有什么问题?
两个带 ** 的 Atm 都抛出警告并且程序失败。
警告:XSLTProcessor::transformToXml():xsl:choose:xsl:when 预计首先出现在
**<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 的类似问题(使用 libxml 20907、libxslt 10132)。似乎如果在标记 之间的 XSL(.xsl 文件)中有任何空格,则会抛出错误。
因此请从您的 xsl:choose 元素中删除所有空格(包括 \n)并重试。
我开始更新一个旧项目。
使用 centos7 PHP 7 可以,但 centos8 就没那么幸运了。库中可能有一些变化吗?
尽管如此,我还是需要在 centos8 上得到它 运行。
我也不熟悉 xsl。
代码中可能有什么问题?
两个带 ** 的 Atm 都抛出警告并且程序失败。
警告:XSLTProcessor::transformToXml():xsl:choose:xsl:when 预计首先出现在
**<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 的类似问题(使用 libxml 20907、libxslt 10132)。似乎如果在标记
因此请从您的 xsl:choose 元素中删除所有空格(包括 \n)并重试。