Чтобы дать вам представление о том, как это можно сделать, вот решение complete , которое извлекает весь или только требуемый элемент CV
(форматирование HTML не выполняется, поскольку это не относится к вопрос):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pName" select="'XYZ'"/>
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="CV">
<xsl:if test="$pName = Name or $pName='*'">
<xsl:call-template name="identity"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Когда это преобразование применяется к предоставленному XML-документу (исправлено на правильно сформированный):
<CVs>
<CV>
<Name>ABC</Name>
<Address></Address>
<Introduction></Introduction>
<CompSkills>Java, XSLT, XPATH, XML, Oracle, VB.NET</CompSkills>
<Experience>
<Profile></Profile>
<Duration></Duration>
<Info></Info>
</Experience>
<Experience>
<Profile></Profile>
<Duration></Duration>
<Info></Info>
</Experience>
<Experience>
<Profile></Profile>
<Duration></Duration>
<Info></Info>
</Experience>
</CV>
<CV>
<Name>XYZ</Name>
<Address></Address>
<Introduction></Introduction>
<CompSkills>Java, XSLT, XPATH, XML, JSP, HTML</CompSkills>
<Experience>
<Profile></Profile>
<Duration></Duration>
<Info></Info>
</Experience>
<Experience>
<Profile></Profile>
<Duration></Duration>
<Info></Info>
</Experience>
<Experience>
<Profile></Profile>
<Duration></Duration>
<Info></Info>
</Experience>
</CV>
</CVs>
искомый, правильный (только CV
с Name
XYZ извлечен) получается :
<CVs>
<CV>
<Name>XYZ</Name>
<Address/>
<Introduction/>
<CompSkills>Java, XSLT, XPATH, XML, JSP, HTML</CompSkills>
<Experience>
<Profile/>
<Duration/>
<Info/>
</Experience>
<Experience>
<Profile/>
<Duration/>
<Info/>
</Experience>
<Experience>
<Profile/>
<Duration/>
<Info/>
</Experience>
</CV>
</CVs>
Объяснение
Требуемое имя или "*" должны быть переданы извне как глобальный параметр (в данном случае с именем pName
) для преобразования. Прочтите документацию по процессору XSLT, как это нужно сделать, так как это зависит от реализации.