我有一個下面的XML,我必須循環通過Test_resuts和組件。當一個組件的TYPE與特定名稱匹配時,我必須將不同的模板應用到該組件。我已經爲每個組件類型創建了一個XSL以及不同的模板,例如:NORMALTEXTBOX。但模板沒有得到應用組件塊 ......任何人都可以幫我在這裏?XSLT根據屬性在另一個模板中應用模板
XML
<Report>
<Test_Results>
<Test_Result TestID="1" TestName="sampleTest" >
<Component Type="NORMALTEXTBOX">
<ComponentName>Component1</ComponentName>
<ComponentId></ComponentId>
<Method></Method>
<Results></Results>
</Component>
<Component Type="NUMERICTEXTBOX">
<ComponentName>Component2</ComponentName>
<ComponentId></ComponentId>
<Method></Method>
<Results></Results>
</Component>
</Test_Result>
<Test_Result TestID="1" TestName="">
<Component Type="NORMALTEXTBOX">
<ComponentName></ComponentName>
<ComponentId></ComponentId>
<Method></Method>
<Results></Results>
</Component>
</Test_Result>
</Test_Results>
</Report>
XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="Report/Test_Results"/>
</body>
</html>
</xsl:template>
<xsl:template match="Test_Results">
<xsl:for-each select="Test_Result">
<xsl:for-each select="Component">
<xsl:choose>
<xsl:when test="@Type = 'NORMALTEXTBOX'">
<xsl:apply-templates select="Component" mode="normaltext"/>
</xsl:when>
<xsl:when test="@Type = 'NUMERICTEXTBOX'">
<xsl:apply-templates select="Component" mode="numerictext"/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template match="Component" mode="normaltext">
<h1> different styles to be applied, only some values of component will be taken</h1>
</xsl:template>
<xsl:template match="Component" mode="numerictext">
<h1>different styles to be applied, only some values of component will be taken</h1>
</xsl:template>
</xsl:stylesheet>
感謝您的幫助。當我嘗試使用時,它開始工作。我會嘗試使用您提供的解決方案。謝謝 :) –
Thavudu