这是我的XML代码:
<NTC_LIGHTLISTPRODUCT>
<LIGHT_DESCRIPTION_LIST>
<LIGHT_DESCRIPTION>
<LIGHT_COLOUR>R</LIGHT_COLOUR> <-- Colour 1
</LIGHT_DESCRIPTION>
<LIGHT_DESCRIPTION>
<LIGHT_COLOUR>G</LIGHT_COLOUR> <-- Colour 2
</LIGHT_DESCRIPTION>
</LIGHT_DESCRIPTION_LIST>
<LIGHT_INFORMATION>
<SIGNAL_SEQUENCE>01.0+(01.0)</SIGNAL_SEQUENCE>
<SECTOR_LIST>
<LIGHT_SECTOR>
<SECTOR1_2>UNKNOWN</SECTOR1_2> <-- Characteristic 1
<SECTOR2_2>UNKNOWN</SECTOR2_2>
</LIGHT_SECTOR>
<LIGHT_SECTOR>
<SECTOR1_2>62</SECTOR1_2> <-- Characteristic 2
<SECTOR2_2>83</SECTOR2_2>
</LIGHT_SECTOR>
</SECTOR_LIST>
</LIGHT_INFORMATION>
</NTC_LIGHTLISTPRODUCT>
我的xslt代码:
<xsl:for-each select="LIGHT_SECTOR">
<xsl:variable name="Sectors" select="."/>
<xsl:text>VIS </xsl:text>
<xsl:text> </xsl:text>
<xsl:value-of select="SECTOR1_2"/>
<xsl:text>-</xsl:text>
<xsl:value-of select="SECTOR2_2"/><br/>
</xsl:for-each>
这是输出:
VIS UNKNOWN-UNKNOWN
VIS 62-83
我会:
VIS R UNKNOWN-UNKNOWN&lt; - “Vis”+颜色1 +特征1的结束 VIS G 62-83&lt; - Vis“的连续性+颜色2 +特征2
答案 0 :(得分:1)
我不认为这是一个分组问题,而不是 LIGHT_DESCRIPTION 和 LIGHT_SECTOR
之间存在1-1相关性无论如何,您可以通过密钥查找相关的 LIGHT_DESCRIPTION 。在这种情况下,您希望按照他们的顺序查找它们:
<xsl:key name="light" match="LIGHT_DESCRIPTION" use="count(preceding-sibling::LIGHT_DESCRIPTION)" />
然后,要在迭代 LIGHT_SECTOR 时获取相关的光值,只需使用该键根据位置查找它们
<xsl:value-of select="key('light', position() - 1)/LIGHT_COLOUR" />
试试这个XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:key name="light" match="LIGHT_DESCRIPTION" use="count(preceding-sibling::LIGHT_DESCRIPTION)" />
<xsl:template match="/">
<xsl:apply-templates select="//SECTOR_LIST" />
</xsl:template>
<xsl:template match="SECTOR_LIST">
<xsl:for-each select="LIGHT_SECTOR">
<xsl:variable name="Sectors" select="."/>
<xsl:text>VIS </xsl:text>
<xsl:value-of select="key('light', position() - 1)/LIGHT_COLOUR" />
<xsl:text> </xsl:text>
<xsl:value-of select="SECTOR1_2"/>
<xsl:text>-</xsl:text>
<xsl:value-of select="SECTOR2_2"/><br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>