【发布时间】:2010-10-04 11:30:47
【问题描述】:
使用 XSLT,我如何包装具有相同属性值的兄弟姐妹。
假设我需要将一个或多个 <amendment/> 与它们所属的 <chapter/> 包装起来。
从此:
<section>
<heading>some heading text</heading>
<amendment num='1' chapter='1'>
<foo/>
</amendment>
<amendment num='2' chapter='1'>
<bar/>
</amendment>
<amendment num='3' chapter='2'>
<baz/>
</amendment>
<heading>some heading text</heading>
<amendment num='4' chapter='3'>
<baz/>
</amendment>
</section>
进入这个:
<section>
<heading>some heading text</heading>
<chapter num="1">
<amendment num='1'>
<foo/>
</amendment>
<amendment num='2'>
<bar/>
</amendment>
</chapter>
<chapter num="2">
<amendment num='3'>
<baz/>
</amendment>
</chapter>
<heading>some heading text</heading>
<chapter num="3">
<amendment num='4'>
<baz/>
</amendment>
</chapter>
</section>
注意 1:修改总是按源 XML 中的章节排序。
注意 2:我使用 PHP5 和 XSLT 1.0
【问题讨论】:
-
您的输入 XML 是否在最后一个
amendment标记上缺少 `chapter num="3"`? -
您打算使用 XSLT 1 还是 2?使用 2 更容易
-
我已更新问题以回答这些问题。
-
好问题 (+1)。请参阅我对纯推送式 XSLT 1.0 解决方案的回答。 :)