【发布时间】:2011-08-08 11:15:15
【问题描述】:
我在 PHP 中有一个从给定路径检索所有目录和文件的函数。这会返回一个数组,例如:
array(
"dirname1" => array(
"dirname2" => array(
"dirname3" => array(
"0" => "file1",
"1" => "file2",
"2" => "file3"
),
"0" => "file4",
"1" => "file5",
"2" => "file6",
"dirname4" => array(
"0" => "file7",
"1" => "file8"
)
),
"0" => "file9",
"1" => "file10"
),
"0" => "file11",
"1" => "file12",
"2" => "file13"
);
我最终需要的是一个多维(不知道是否是确切的词)列表,其中包含使用 XSLT 1.0 从 XML 文件生成的 <ul /> 和 <li />,例如:
<ul>
<li class="dirname">
dirname1
<ul>
<li class="dirname">
Dirname2
<ul>
<li class="dirname">
Dirname3
<ul>
<li>file1</li>
<li>file2</li>
<li>file3</li>
</ul>
</li>
<li>file4</li>
<li>file5</li>
<li>file6</li>
<li class="dirname">
dirname4
<ul>
<li>file7</li>
<li>file8</li>
</ul>
</li>
</ul>
</li>
<li>file9</li>
<li>file10</li>
</ul>
</li>
<li>file11</li>
<li>file12</li>
<li>file13</li>
</ul>
最后,在每个<li /> 中,我需要<a /> 中的路径,例如:
<li class="dirname"><a href="/dirname1">dirname1</a></li>
<li><a href="/dirname1/dirname2/dirname3/file1">file1</a></li>
<li><a href="/dirname1/file9">file9</a></li>
实际上,我没有需要转换的 XML,因为我不知道什么是好的结构,然后将其转换为 XSLT 1.0。我在<a /> 中有路径。如有必要,我可以使用 PHP 执行此操作,我可以在 PHP 中检测它是目录还是非目录,我们还可以在 XML 上添加一些内容来检测 class="dirname"。
我希望我已经提供了足够的信息来理解我。
提前谢谢你!
【问题讨论】:
-
@Gordon:我还需要 XSLT 中的递归函数,这不是他们在您的链接上要求的。不管怎样,谢谢你。 :)
-
@Gordon:抱歉,英语不是我的主要语言。 ul/li 输出列表需要从 XML 文件生成。我添加了这个:我最终需要的是一个多维(不知道是否是确切的单词)列表,其中包含
- 使用 XSLT 1.0 从 XML 文件生成
-
@udexter 为什么必须使用 XSLT?为什么不能只从多维 php 数组创建 html 输出?
-
@udexter:为什么不在你的标题中用递归交换多维?可能更好理解?这只是一个想法?