添加XML页面

时间:2013-06-28 16:07:22

标签: php html xml

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

$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 suppost的所有内容都告诉你页面(1页10个文件)

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

2 个答案:

答案 0 :(得分:1)

将评论转换为答案。

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

PHP有quite usable implementation,您将获得外部化模板的优势 - 即不会混合使用PHP代码和HTML。

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

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

或者是这样。 $paths是从PHP传递的XSLT模板的参数。

答案 1 :(得分:1)

您可以在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>