В качестве примера у меня есть следующий XML:
<Root>
<A>
<H>header1</H>
<B>
<C>2</C>
</B>
</A>
<A>
<H>header2</H>
<B>
<C>3</C>
</B>
</A>
<A>
<H>header3</H>
</A>
<A>
<H>header4</H>
</A>
</Root>
Я хочу преобразование, чтобы получить H элементов только из элементов A, которые имеют дочерний элемент B.Я написал следующий XSLT:
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0" xmlns:xsl ="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<Root>
<xsl:apply-templates/>
</Root>
</xsl:template>
<xsl:template match="A[B]">
<Row>
<Result>
<xsl:value-of select="H"/>
</Result>
</Row>
</xsl:template>
</xsl:stylesheet>
Вывод (с помощью плагина XML Tools для Notepad ++):
<?xml version="1.0"?>
<Root>
<Row><Result>header1</Result></Row>
<Row><Result>header2</Result></Row>
header3
header4
</Root>
Почему существуют только простые строки "header3" и "header4"?Я ожидал следующего:
<?xml version="1.0"?>
<Root>
<Row><Result>header1</Result></Row>
<Row><Result>header2</Result></Row>
</Root>