Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何将匹配的元素分组以同时处理这两个元素?_Html_Xml_Xslt - Fatal编程技术网

Html 如何将匹配的元素分组以同时处理这两个元素?

Html 如何将匹配的元素分组以同时处理这两个元素?,html,xml,xslt,Html,Xml,Xslt,我正在做一个学校项目,我们必须使用XML和XSLT来生成HTML。我的项目是家谱。我成功地选择了根用户,但现在我希望将已婚用户分组并同时处理它们,而不是每个人单独处理 此时,我选择每个根用户,然后搜索已婚用户并将其显示在一起。但由于每一个都是单独处理的,所以我得到了两次所有的结果 我的数据如下所示: <persons> <person id="1" marriedTo="2" father="0" mother="0"> <name>F

我正在做一个学校项目,我们必须使用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> 

如果您不介意先选择父亲还是母亲,请更改现有模板,使其仅匹配
人的
记录,其中
结婚人数大于他们的
id
。还有第二个模板,匹配相反的模板,然后忽略那个人

<xsl:template match="/persons/person[@father='0' and @mother='0'][@marriedTo &gt; @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 &lt; @id]" />


当然,如果夫妻中有一人有父亲或母亲,您可能需要额外的模板,但这应该能让您大致了解情况。

您使用哪种版本的XSLT?它可能有助于向我们展示一些示例输入和结果数据,这些数据包含重复项和您想要的结果。我可以自由使用每个版本。你建议哪一个?xml中没有dublicates,我的问题是每个没有父元素的元素都会被解析并创建一个div,其中包含他的名字和已婚人士的名字,所以我会对每对已婚人士进行两次解析。一次是“爸爸妈妈”,一次是“妈妈爸爸”。但我只需要“爸爸妈妈”谢谢,这就解决了。真的很容易,但是没有想到。