Php 在xml中传递参数
我正在尝试使用xml实现分页,并着手使其工作。虽然它工作得很好,但有一个小问题,当我单击NEXT按钮时,它会继续使用相同的初始记录重新加载页面。它不会将用户带到下一页 我发现海报上也有类似的问题,从答案来看,参数需要传递。然而,那个链接中的家伙使用的是MM_XSLTransform,而我没有。因此,当我尝试在index.php中实现此代码时:Php 在xml中传递参数,php,xml,paging,xslt,Php,Xml,Paging,Xslt,我正在尝试使用xml实现分页,并着手使其工作。虽然它工作得很好,但有一个小问题,当我单击NEXT按钮时,它会继续使用相同的初始记录重新加载页面。它不会将用户带到下一页 我发现海报上也有类似的问题,从答案来看,参数需要传递。然而,那个链接中的家伙使用的是MM_XSLTransform,而我没有。因此,当我尝试在index.php中实现此代码时: $xsl->addParameter("Page", $_GET["Page"]); $xsl->addParameter("PageSize
$xsl->addParameter("Page", $_GET["Page"]);
$xsl->addParameter("PageSize", $_GET["PageSize"]);
它抛出一个错误:
Fatal error: Call to undefined method XSLTProcessor::addParameter()
已更新
php代码:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
$xmldoc = new DOMDocument();
if(!file_exists('test.xml')){
echo "Sorry this file does not exists!";
exit();
} else {
$xmldoc->load('test.xml', LIBXML_NOBLANKS);
// Load up the XSL file
$xslDoc = new DomDocument;
$xslDoc->load("test.xsl");
$xsl = new XSLTProcessor;
$xsl->importStyleSheet($xslDoc);
$xsl->setParameter(null, 'Page', $_GET['Page']);
$xsl->setParameter(null, 'PageSize', $_GET['PageSize']);
// apply the transformation
echo $xsl->transformToXml($xmldoc);
}
?>
load('test.xml',LIBXML\u NOBLANKS);
//加载XSL文件
$xslDoc=新文档;
$xslDoc->load(“test.xsl”);
$xsl=新的XSLTProcessor;
$xsl->importStyleSheet($xslDoc);
$xsl->setParameter(null,'Page',$\u GET['Page']);
$xsl->setParameter(null,'PageSize',$\u GET['PageSize']);
//应用转换
echo$xsl->transformToXml($xmldoc);
}
?>
xsl:
共160人
看一看。您将找到一个setParameter方法
编辑:例如
<?php
$doc = new DOMDocument;
$doc->loadxml('<a />');
$proc = getProcessor();
$proc->setParameter(null, 'Page', '99');
$proc->setParameter(null, 'PageSize', '11');
echo $proc->transformToXML($doc);
function getProcessor() {
$doc = new DOMDocument;
$doc->loadxml('<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:param name="Page" select="0" />
<xsl:param name="PageSize" select="1" />
<xsl:template name="results" match="/">
Page: <xsl:value-of select="$Page" />
PageSize: <xsl:value-of select="$PageSize" />
</xsl:template>
</xsl:stylesheet>');
$xsl = new XSLTProcessor();
$xsl->importStyleSheet($doc);
return $xsl;
}
编辑2:试试看
<?php
$page = isset($_GET['Page']) ? intval($_GET['Page']) : 0;
$proc = getProcessor();
$proc->setParameter(null, 'Page', $page);
$proc->setParameter(null, 'PageSize', '11');
$doc = getDoc();
echo $proc->transformToXML($doc);
function getProcessor() {
$doc = new DOMDocument;
$doc->loadxml('<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:param name="Page" select="0" />
<xsl:param name="PageSize" select="1" />
<xsl:template name="results" match="/">
Page: <xsl:value-of select="$Page" />
PageSize: <xsl:value-of select="$PageSize" />
<hr />
<a><xsl:attribute name="href">?Page=<xsl:value-of select="($Page)-1" /></xsl:attribute>Prev</a>
|
<a><xsl:attribute name="href">?Page=<xsl:value-of select="($Page)+1" /></xsl:attribute>Next</a>
</xsl:template>
</xsl:stylesheet>');
$xsl = new XSLTProcessor();
$xsl->importStyleSheet($doc);
return $xsl;
}
function getDoc() {
$doc = new DOMDocument;
$doc->loadxml('<a></a>');
return $doc;
}
loadxml('
第页:
页面大小:
|
');
$xsl=新的XSLTProcessor();
$xsl->importStyleSheet($doc);
返回$xsl;
}
函数getDoc(){
$doc=新文档;
$doc->loadxml(“”);
返回$doc;
}
edit3:在你的代码中
index.php?page=<xsl:value-of select="number($Page)-1"/>
index.php?页面=
要么使用$\u GET['page']而不是$\u GET['page'],要么将模板更改为
index.php?page=您确实需要将语言添加到标记中,以及使用哪个xslt处理器。他们有分歧,知道哪个是哪个很重要。谢谢你的指点。我正在使用内置的php xslt处理器。我试过了。它抛出以下错误:未定义索引:Page
和XSLTProcessor::setParameter()的参数计数错误
您可能没有阅读文档,只是简单地将添加
替换为设置
。参见示例。而未定义索引:Page
注意很可能意味着没有GET参数Page
。我尝试了你的代码。虽然它没有显示任何错误,但即使我单击“上一页”,它仍然停留在“页面”上。它不断地重新加载页面。如何设置$\u GET参数以检索页码?我已经发布了代码,请检查。尝试了您的代码。单击“下一步”时,它似乎仍会以默认值重新加载页面。@沃尔克,谢谢您的帮助。代码和所有内容都是正确的,但我假设没有传递参数,因为我引用的页面是同一页面。因此,它无法将参数传递到自己的页面。我说得对吗?
<?php
$page = isset($_GET['Page']) ? intval($_GET['Page']) : 0;
$proc = getProcessor();
$proc->setParameter(null, 'Page', $page);
$proc->setParameter(null, 'PageSize', '11');
$doc = getDoc();
echo $proc->transformToXML($doc);
function getProcessor() {
$doc = new DOMDocument;
$doc->loadxml('<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:param name="Page" select="0" />
<xsl:param name="PageSize" select="1" />
<xsl:template name="results" match="/">
Page: <xsl:value-of select="$Page" />
PageSize: <xsl:value-of select="$PageSize" />
<hr />
<a><xsl:attribute name="href">?Page=<xsl:value-of select="($Page)-1" /></xsl:attribute>Prev</a>
|
<a><xsl:attribute name="href">?Page=<xsl:value-of select="($Page)+1" /></xsl:attribute>Next</a>
</xsl:template>
</xsl:stylesheet>');
$xsl = new XSLTProcessor();
$xsl->importStyleSheet($doc);
return $xsl;
}
function getDoc() {
$doc = new DOMDocument;
$doc->loadxml('<a></a>');
return $doc;
}
index.php?page=<xsl:value-of select="number($Page)-1"/>