我在这里遇到了相当大的挑战...
是否有可能有一个适用于任何 XML 层次结构的 XSL 代码,将其转换为嵌套的 HTML 列表?
示例 XML:
<Base>
<Parent>
<Child />
<Child>
<ChildOne />
<ChildOne>
<ChildTwo />
<ChildTwo />
</ChildOne>
</Child>
</Parent>
<Parent>
<Child>
<ChildOne>
<ChildTwo>
<ChildThree>
<ChildFour />
</ChildThree>
<ChildThree/>
</ChildTwo>
</ChildOne>
<ChildOne/>
<ChildOne/>
</Child>
<Child/>
</Parent>
</Base>
期望的结果:
<ul>
<li>Parent1
<ul>
<li>Child</li>
<li>Child
<ul>
<li>ChildOne</li>
<li>ChildOne>
<ul>
<li>ChildTwo</li>
<li>ChildTwo</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Parent2
<ul>
<li>Child
<ul>
<li>ChildOne
<ul>
<li>ChildTwo
<ul>
<li>ChildThree
<ul>
<li>ChildFour</li>
</ul>
</li>
<li>ChildThree</li>
</ul>
</li>
</ul>
</li>
<li>ChildOne</li>
<li>ChildOne</li>
</ul>
</li>
<li>Child</li>
</ul>
</li>
</ul>
所以逻辑是,如果在元素(上 el.)下还有其他元素(被抑制的 el。) - 被抑制的 el。被包围<li>name of upper el.<ul>all suppressed el.</ul></li>
等等。
我的观点是,这个 XSL 代码不是通过元素或属性的值或名称工作,而是通过条件检查,如果有其他元素属于特定元素。
Fe,如果ChildThree
没有ChildFour
在其下,它只是<li>ChildThree>
代替
<li>ChildThree
<ul>
<li>ChildFour</li>
</ul>
</li>
希望我解释清楚。:)
PS这或多或少是它在浏览器中的外观(只是为了提供视觉表示,因为我们人类喜欢看到这些东西。:P)