我有一个下面的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