我正在做一个学校项目,我们必须使用XML和XSLT来生成HTML。我的项目是一棵家谱。我选择了根人,但现在我希望组婚并立即处理他们,而不是每个人单独处理。
此刻,我选择每个根人,然后搜索已婚者并将其一起显示。但是,由于每一个都是独立处理的,所以我会两次获得所有结果。
我的数据如下:
<persons>
<person id="1" marriedTo="2" father="0" mother="0">
<name>Father</name>
</person>
<person id="2" marriedTo="1" father="0" mother="0">
<name>Mother</name>
</person>
....
</persons>
我的xslt代码:
<xsl:template match="/persons/person[@father='0' and @mother='0']">
<div class="person">
<xsl:value-of select="name"/>
</div>
<div class="person">
<xsl:value-of select="key('couple',@marriedTo)/name"/>
</div>
</xsl:template>
有没有办法获取两个元素并将它们一起处理?也许像
<div>
<xsl:value-of select="person[0]/name"/>
</div>
<div>
<xsl:value-of select="person[1]/name"/>
</div>
答案 0 :(得分:1)
如果您不介意先选择父亲还是母亲,请更改现有模板以仅匹配person
大于marriedTo
的{{1}}记录。并拥有另一个与相反的模板匹配的模板,然后忽略该人。
id
当然,如果一对夫妇中的一个人确实有父亲或母亲,则可能需要额外的模板,但这应该可以为您提供一般的想法。