0
我试图在XSLT 1.0中实现此条件并且以下是条件 在任何时间点,ADT的出现次数多于INF One ADT应该只出现的次数INF标签的一个姓氏,名字和出生日期详细信息 如果ADT标签多于INF标签,则应将第一个ADT标签标记为INF,并且如果ADT标签不应附带任何INF标签,则应予以休息。不需要更改子标签,但它应该出现在输出中。当使用XSLT循环中的条件匹配时向元素添加元素
我试图使用XSLT实现下面的输出,但不能完全解决它,任何帮助,将不胜感激。
需要帮助下面XSLT转化
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<travelerGroup>
<xsl:for-each select="/travelerGroup/traveler">
<xsl:if test="travelerInfo/travelerTypeCode != 'INF' ">
<traveler>
<travelerInfo>
<elementNumber>
<xsl:value-of select="travelerInfo/elementNumber" />
</elementNumber>
<travelerTypeCode>
<xsl:value-of select="travelerInfo/travelerTypeCode" />
</travelerTypeCode>
<travelerDetails>
<firstName>
<xsl:value-of select="concat(travelerInfo/travelerDetails/firstName" />
</firstName>
<surname>
<xsl:value-of select="travelerInfo/travelerDetails/surname" />
</surname>
<xsl:if test="travelerInfo/travelerTypeCode = 'CHD' ">
<dateOfBirth>
<xsl:value-of select="travelerInfo/travelerDetails/dateOfBirth" />
</dateOfBirth>
</xsl:if>
</travelerDetails>
<xsl:if test="travelerInfo/travelerTypeCode != 'CHD' ">
<xsl:variable name="i" select="position()" />
<xsl:for-each select="/traveler[travelerInfo/travelerTypeCode = 'INF'][$i]">
<xsl:if test="travelerInfo/travelerTypeCode = 'INF' ">
<infant>
<surname>
<xsl:value-of select="travelerInfo/travelerDetails/surname" />
</surname>
<firstName>
<xsl:value-of select="travelerInfo/travelerDetails/firstName" />
</firstName>
<dateOfBirth>
<xsl:value-of select="travelerInfo/travelerDetails/dateOfBirth" />
</dateOfBirth>
</infant>
</xsl:if>
</xsl:for-each>
</xsl:if>
</travelerInfo>
</traveler>
</xsl:if>
</xsl:for-each>
</travelerGroup>
</xsl:template>
</xsl:stylesheet>
输入XML:
<travelerGroup>
<traveler>
<travelerInfo>
<elementNumber>1</elementNumber>
<travelerTypeCode>ADT</travelerTypeCode>
<travelerDetails>
<firstName>Adult One</firstName>
<surname>Surname</surname>
</travelerDetails>
</travelerInfo>
</traveler>
<traveler>
<travelerInfo>
<elementNumber>2</elementNumber>
<travelerTypeCode>ADT</travelerTypeCode>
<travelerDetails>
<firstName>Adult Two</firstName>
<surname>Surname</surname>
</travelerDetails>
</travelerInfo>
</traveler>
<traveler>
<travelerInfo>
<travelerTypeCode>INF</travelerTypeCode>
<elementNumber>3</elementNumber>
<travelerDetails>
<firstName>Infant One</firstName>
<surname>Surname</surname>
<dateOfBirth>2016-01-06</dateOfBirth>
</travelerDetails>
</travelerInfo>
</traveler>
<traveler>
<travelerInfo>
<travelerTypeCode>INF</travelerTypeCode>
<elementNumber>4</elementNumber>
<travelerDetails>
<firstName>Infant Two</firstName>
<surname>Surname</surname>
<dateOfBirth>2017-01-06</dateOfBirth>
</travelerDetails>
</travelerInfo>
</traveler>
<traveler>
<travelerInfo>
<elementNumber>5</elementNumber>
<travelerTypeCode>ADT</travelerTypeCode>
<travelerDetails>
<firstName>Adult Three</firstName>
<surname>Surname</surname>
</travelerDetails>
</travelerInfo>
</traveler>
<traveler>
<travelerInfo>
<elementNumber>6</elementNumber>
<travelerTypeCode>CHD</travelerTypeCode>
<travelerDetails>
<firstName>Child One</firstName>
<surname>Surname</surname>
<dateOfBirth>2013-01-06</dateOfBirth>
</travelerDetails>
</travelerInfo>
</traveler>
</travelerGroup>
预期输出:
<travelerGroup>
<traveler>
<elementNumber>1</elementNumber>
<travelerTypeCode>ADT</travelerTypeCode>
<travelerDetails>
<firstName>Adult One</firstName>
<surname>Surname</surname>
<middleName />
</travelerDetails>
<infant>
<surname>Infant One</surname>
<firstName>Surname</firstName>
<dateOfBirth>2016-01-06</dateOfBirth>
</infant>
</traveler>
<traveler>
<elementNumber>2</elementNumber>
<travelerTypeCode>ADT</travelerTypeCode>
<travelerDetails>
<firstName>Adult Two</firstName>
<surname>Surname</surname>
<middleName />
</travelerDetails>
<infant>
<surname>Infant Two</surname>
<firstName>Surname</firstName>
<dateOfBirth>2017-01-06</dateOfBirth>
</infant>
</traveler>
<traveler>
<elementNumber>5</elementNumber>
<travelerTypeCode>ADT</travelerTypeCode>
<travelerDetails>
<firstName>Adult Three</firstName>
<surname>Surname</surname>
<middleName />
</travelerDetails>
</traveler>
<traveler>
<elementNumber>6</elementNumber>
<travelerTypeCode>CHD</travelerTypeCode>
<travelerDetails>
<firstName>Child One</firstName>
<surname>Surname</surname>
<dateOfBirth>2013-01-06</dateOfBirth>
</travelerDetails>
</traveler>
</travelerGroup>