Это мой вход:XSLT выбрать только элементы с заданным значением
<div class="z">zzz
<div class="a">a1</div>
<div class="b">b1
<div class="c">b1c1
<div class="d">b1c1d1</div>
<div class="e">b1c1e1</div>
<div class="f">b1c1f1</div>
</div>
<div class="c">b1c2
<div class="d">b1c2d1</div>
<div class="e">b1c2e1</div>
<div class="f">b1c2f1</div>
<div class="f">b1c2f2</div>
</div>
</div>
<div class="b">b2
<div class="c">b2c1
<div class="d">b2c1d1</div>
<div class="e">b2c1e1</div>
<div class="e">b2c1e2</div>
<div class="f">b2c1f1</div>
</div>
</div>
</div>
и это выход, я хотел бы получить:
<div class="z">zzz
<div class="a">a1</div>
<div class="b">b1
<div class="c">b1c1
<div class="d">b1c1d1</div>
<div class="e">b1c1e1</div>
<div class="f">b1c1f1</div>
</div>
<div class="c">b1c2
<div class="d">b1c2d1</div>
<div class="e">b1c2e1</div>
<div class="f">b1c2f1</div>
<div class="f">b1c2f2</div>
</div>
</div>
</div>
, который я хотел бы получить:
- любой текст для сНу класса = "г", т.е. "ZZZ"
- любой ребенок, который имеет класс! = "Ъ"
- любой ребенок, который имеет класс = "Ъ" и значение = "b1"
Я использую следующий XSLT:
<?xml version="1.0"?>
<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="*"/>
<!-- Identity template, copies everything as is -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="div[@class='z']">
<xsl:apply-templates select="div[@class='b' and text()='b1']" />
</xsl:template>
</xsl:stylesheet>
, но, к сожалению, мой выход пуст :(
Что я сделал не так?
Благодарим за помощь.
О, что делает его проще. Спасибо Тиму. – Yalmar