我正在尝试对元素名称进行迭代。我以
的形式给出了输入<list>
<element1>ID 1</element1>
<element2>name 1</element2>
<element3>town 1</element3>
<element4>ID 2</element4>
<element5>name 2</element5>
<element6>town 2</element6>
<!-- list continues like that -->
</list>
现在我的目标方案应该是这样的:
<newlist>
<Person>
<ID>ID 1</ID>
<Name>name 1</Name>
<Town>town 1</Town>
</Person>
<Person>
<ID>ID 2</ID>
<Name>name 2</Name>
<Town>town 2</Town>
</Person>
<!-- more Persons here -->
</newlist>
第一个列表中的条目总是以相同的方式重复,所以我想到的是迭代它们并将模运算符应用于循环计数器,以便找出条目应该是正确的元素映射到。 但是我找不到像这样的转型。怎么去这里?
答案 0 :(得分:1)
以这种方式试试吗?
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/list">
<xsl:for-each select="*[position() mod 3 = 1]">
<Person>
<ID>
<xsl:value-of select="."/>
</ID>
<Name>
<xsl:value-of select="following-sibling::*[1]"/>
</Name>
<Town>
<xsl:value-of select="following-sibling::*[2]"/>
</Town>
</Person>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>