Html 如何将匹配的元素分组以同时处理这两个元素?
我正在做一个学校项目,我们必须使用XML和XSLT来生成HTML。我的项目是家谱。我成功地选择了根用户,但现在我希望将已婚用户分组并同时处理它们,而不是每个人单独处理 此时,我选择每个根用户,然后搜索已婚用户并将其显示在一起。但由于每一个都是单独处理的,所以我得到了两次所有的结果 我的数据如下所示:Html 如何将匹配的元素分组以同时处理这两个元素?,html,xml,xslt,Html,Xml,Xslt,我正在做一个学校项目,我们必须使用XML和XSLT来生成HTML。我的项目是家谱。我成功地选择了根用户,但现在我希望将已婚用户分组并同时处理它们,而不是每个人单独处理 此时,我选择每个根用户,然后搜索已婚用户并将其显示在一起。但由于每一个都是单独处理的,所以我得到了两次所有的结果 我的数据如下所示: <persons> <person id="1" marriedTo="2" father="0" mother="0"> <name>F
<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>
如果您不介意先选择父亲还是母亲,请更改现有模板,使其仅匹配
人的记录,其中结婚人数大于他们的id
。还有第二个模板,匹配相反的模板,然后忽略那个人
<xsl:template match="/persons/person[@father='0' and @mother='0'][@marriedTo > @id]">
<div class="person">
<xsl:value-of select="name"/>
</div>
<div class="person">
<xsl:value-of select="key('couple',@marriedTo)/name"/>
</div>
</xsl:template>
<xsl:template match="/persons/person[@father='0' and @mother='0'][@marriedTo < @id]" />
当然,如果夫妻中有一人有父亲或母亲,您可能需要额外的模板,但这应该能让您大致了解情况。您使用哪种版本的XSLT?它可能有助于向我们展示一些示例输入和结果数据,这些数据包含重复项和您想要的结果。我可以自由使用每个版本。你建议哪一个?xml中没有dublicates,我的问题是每个没有父元素的元素都会被解析并创建一个div,其中包含他的名字和已婚人士的名字,所以我会对每对已婚人士进行两次解析。一次是“爸爸妈妈”,一次是“妈妈爸爸”。但我只需要“爸爸妈妈”谢谢,这就解决了。真的很容易,但是没有想到。