Php 在xml中传递参数

Php 在xml中传递参数,php,xml,paging,xslt,Php,Xml,Paging,Xslt,我正在尝试使用xml实现分页,并着手使其工作。虽然它工作得很好,但有一个小问题,当我单击NEXT按钮时,它会继续使用相同的初始记录重新加载页面。它不会将用户带到下一页 我发现海报上也有类似的问题,从答案来看,参数需要传递。然而,那个链接中的家伙使用的是MM_XSLTransform,而我没有。因此,当我尝试在index.php中实现此代码时: $xsl->addParameter("Page", $_GET["Page"]); $xsl->addParameter("PageSize

我正在尝试使用xml实现分页,并着手使其工作。虽然它工作得很好,但有一个小问题,当我单击NEXT按钮时,它会继续使用相同的初始记录重新加载页面。它不会将用户带到下一页

我发现海报上也有类似的问题,从答案来看,参数需要传递。然而,那个链接中的家伙使用的是MM_XSLTransform,而我没有。因此,当我尝试在index.php中实现此代码时:

$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"/>