正在添加XML页面


Adding XML Pages

我得到了下面的代码来分割页面:

$files = glob('docs/*.xml');
$files = array_slice($files, ($page-1)*10, 10);
foreach ($files as $file){
$xml = new SimpleXMLElement($file, 0, true);
echo'
    <tr>
    <td>' . $xml->doctype . '</td>
    <td><a href="viewdoc.php?docname=' . basename($file, '.xml') . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename($file, '.xml') . '</a></td>
    <td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td>
    <td>'. $xml->date .'</td>
    <td>* * * * *</td>
    <td></td>
    </tr>
    ';
}

但现在我不确定如何向该代码添加页面链接(如1 2 3 4 Next)我曾想过在变量中添加++,但这对我来说并不奏效。

我的问题是如何以循环方式添加页面链接?

提前谢谢。

编辑:我忘了告诉你echo中所有的东西都假设是页面(1页中有10个文件)

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>Next</li>
</ul>

您可以在XSLT中做到这一点,但当您的输出中只需要一个简单的寻呼机时,没有理由引入另一种语言。我暂时假设$page变量在代码的其他地方得到了正确的定义。

$perpage = 10; // Avoid magic numbers
$files = glob('docs/*.xml');
$file_count = count($files);
$pages = $file_count/$perpage;
$files = array_slice($files, ($page-1)*$perpage, $perpage);
foreach ($files as $file){
$xml = new SimpleXMLElement($file, 0, true);
echo'
    <tr>
    <td>' . $xml->doctype . '</td>
    <td><a href="viewdoc.php?docname=' . basename($file, '.xml') . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename($file, '.xml') . '</a></td>
    <td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td>
    <td>'. $xml->date .'</td>
    <td>* * * * *</td>
    <td></td>
    </tr>
    ';
}
?>
<ul>
<?php
for($i=1; $i<=$pages; $i++) {?>
    <li><a href="link_to_page.php?page=<?php echo $i?>"><?php echo $i?></a></li>
<?php } ?>
</ul>

将注释转换为答案

我建议使用XSLT。毕竟,它的开发目的正是将XML转换为其他XML,或者通常转换为文本。

PHP有非常有用的实现,您将获得外部化模板的优势,即不混合PHP代码和HTML。

你正在解决分页问题。这可以使用document(...)函数来实现,它为您提供了一个XML文档节点列表,您可以使用它,例如:

<ul>
<xsl:foreach select="$paths">
   <li><xsl:value-of select="position()"/></li>
<ul>

$paths是XSLT模板的一个参数,从PHP传递过来。