1

I am trying to find the first match in a for each loop to certain conditions. In the XML data, there may be more than one match, and I only need one. I am aware you can put conditions on the for each loop, but I am finding it quite difficult with the syntax this XML is in.

XML:

<ns0:qualification_list>
  <ns0:qualification>
    <ns0:qualification_name>Master of Health Information Management</ns0:qualification_name>
    <ns0:qualification_sequence>0001</ns0:qualification_sequence>
    <ns0:is_english>N</ns0:is_english>
    <ns0:qualification_country>Australia</ns0:qualification_country>
    <ns0:where_obtained>University of Sydney</ns0:where_obtained>
    <ns0:mark/>
  </ns0:qualification>
  <ns0:qualification>
    <ns0:qualification_name>Bachelor of Health Science (Nursing)</ns0:qualification_name>
    <ns0:qualification_sequence>0002</ns0:qualification_sequence>
    <ns0:is_english>N</ns0:is_english>
    <ns0:qualification_country>Austria</ns0:qualification_country>
    <ns0:where_obtained>University of New South Wales</ns0:where_obtained>
    <ns0:mark/>
  </ns0:qualification>
</ns0:qualification_list>

XSL:

<xsl:for-each select="somedo:qualification_list">
        <xsl:for-each select="somedo:qualification">
            <xsl:if test="somedo:is_english = 'N'">
                <xsl:value-of select="somedo:where_obtained" />
            </xsl:if>
        </xsl:for-each> 
</xsl:for-each>
  • possible duplicate of [How-to break a for-each loop in XSLT?](http://stackoverflow.com/questions/470045/how-to-break-a-for-each-loop-in-xslt) –  Sep 17 '15 at 04:48

1 Answers1

2

No need for-each.

<xsl:value-of select="somedo:qualification_list/somedo:qualification[somedo:is_english = 'N']/somedo:where_obtained"/>
Alexander Petrov
  • 13,457
  • 2
  • 20
  • 49