Hãy nói rằng tôi có một tài liệu xml như thế này:Sử dụng XSLT apply-templates có điều kiện chọn nút
<director>
<play>
<t>Nutcracker</t>
<a>Tom Cruise</a>
</play>
<play>
<t>Nutcracker</t>
<a>Robin Williams</a>
</play>
<play>
<t>Grinch Stole Christmas</t>
<a>Will Smith</a>
</play>
<play>
<t>Grinch Stole Christmas</t>
<a>Mel Gibson</a>
</play>
</director>
Bây giờ tôi muốn để có thể chọn tất cả các vở kịch với Will Smith là một diễn viên và định dạng lại nó vào một cái gì đó như thế này:
<Plays>
<Play title="Grinch Stole Christmas">
<star>Will Smith</star>
<star>Mel Gibson</star>
</Play>
</Plays>
tôi chỉ muốn sử dụng apply-templates .. Không xsl: if hoặc cho mỗi vòng (tôi đã contrived ví dụ này là một phiên bản đơn giản của những gì tôi đang làm như vậy bạn có thể giúp tôi hiểu cách sử dụng xpath trong câu lệnh đối sánh)
Dưới đây là những gì tôi có cho đến nay:
<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/director">
<Plays>
<xsl:apply-templates select="play"/>
</Plays>
</xsl:template>
<xsl:template match="play[a='Will Smith']">
<play title="{data(t)[1]}">
<xsl:apply-templates select="a"/>
</play>
</xsl:template>
<xsl:template match="a">
<star>
<xsl:value-of select="."/>
</star>
</xsl:template>
</xsl:stylesheet>
Về cơ bản tôi chỉ không chắc chắn làm thế nào để lọc ra các nút sử dụng XPath trong thuộc tính phù hợp của mẫu. Bất kỳ sự trợ giúp nào đều sẽ là tuyệt vời!
Bạn đã làm gì cho đến nay? –
Giải pháp dưới đây đã giải quyết được ... Cảm ơn bạn đã bình luận ít nhất :) – Msencenb
Câu hỏi hay, +1. Xem câu trả lời của tôi cho hai giải pháp hiệu quả :) –