The
select
query passed to
apply-templates
and
for-each
is relative to the current node.
You are already in
HOST_LIST_VM_DETECTION_OUTPUT/RESPONSE/HOST_LIST/HOST
, so your
apply-templates
query is looking for:
HOST_LIST_VM_DETECTION_OUTPUT/RESPONSE/HOST_LIST/HOST/HOST_LIST_VM_DETECTION_OUTPUT/RESPONSE/HOST_LIST/HOST/DETECTION_LIST/DETECTION
and your
for-each
template is looking for:
HOST_LIST_VM_DETECTION_OUTPUT/RESPONSE/HOST_LIST/HOST/HOST_LIST_VM_DETECTION_OUTPUT/RESPONSE/HOST_LIST/HOST/DETECTION_LIST/DETECTION/HOST_LIST_VM_DETECTION_OUTPUT/RESPONSE/HOST_LIST/HOST/DETECTION_LIST/DETECTION
You also need to include the elements that you want in your output.
Change your template to:
= "1.0"= "UTF-8"
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<Records>
<xsl:apply-templates select="HOST_LIST_VM_DETECTION_OUTPUT/RESPONSE/HOST_LIST/HOST"/>
</Records>
</xsl:template>
<xsl:template match="HOST">
<xsl:variable name="IP" select="IP" />
<xsl:for-each select="DETECTION_LIST/DETECTION">
<record>
<qid><xsl:value-of select="QID"/></qid>
<ip><xsl:value-of select="$IP"/></ip>
</record>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>