【发布时间】:2010-05-25 18:19:44
【问题描述】:
假设我有一系列这种格式的 xml 文件:
A.xml:
<page>
<header>Page A</header>
<content>blAh blAh blAh</content>
</page>
B.xml:
<page also-include="A.xml">
<header>Page B</header>
<content>Blah Blah Blah</content>
</page>
使用这个 XSLT:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/page">
<h1>
<xsl:value-of select="header" />
</h1>
<p>
<xsl:value-of select="content" />
</p>
</xsl:template>
</xsl:stylesheet>
我可以把A.xml变成这个:
<h1>
Page A
</h1>
<p>
blAh blAh blAh
</p>
但是我怎样才能让它也把B.xml变成这个呢?
<h1>
Page B
</h1>
<p>
Blah Blah Blah
</p>
<p>
blAh blAh blAh
</p>
我知道我需要在某个地方使用document(concat(@also-include,'.xml')),但我不确定在哪里。
哦,问题是,如果 B 包含在第三个文件 C.xml 中,我需要它仍然可以工作。
你知道怎么做吗?
【问题讨论】:
-
我怀疑你不能完全在 XSL 中做到这一点,但我已经收藏了这个问题,看看我是否错了。
-
我觉得用递归模板应该是可以的。
标签: xml xslt recursion file-inclusion