我是以下示例XML。
XML1
<root num="1">
<abc></abc>
<cde></cde>
<def></def>
</root>
XML2
<root num="2">
<xyz></xyz>
<cft></cft>
<vft></vft>
</root>
XML3
<root num="3">
<dfg></dfg>
<mnb></mnb>
<gft></gft>
<root>
我有3个不同的XSLT,每个都对应XML。
我想实现以下目标。 制作单个XSLT并根据根号调用模板。类似下面的东西。
<xsl:if test="root[@num="1"]>
<!--Call the template matching root 1-->
</xsl:if>
<xsl:if test="root[@num="2"]>
<!--Call the template matching root 2-->
</xsl:if>
<xsl:if test="root[@num="3"]>
<!--Call the template matching root 3-->
</xsl:if>
我只想将所有XSLT放在一个XSLT中,请让我知道我该怎么做。
由于
答案 0 :(得分:1)
您可以使用元素。
该元素包含匹配指定节点时要应用的规则。
match属性用于将模板与XML元素相关联。 match属性还可用于为XML文档的整个分支定义模板(即match =“/”定义整个文档)。
注意:是顶级元素。
示例:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="cd">
<p>
<xsl:apply-templates select="title"/>
<xsl:apply-templates select="artist"/>
</p>
</xsl:template>
<xsl:template match="title">
Title: <span style="color:#ff0000">
<xsl:value-of select="."/></span>
<br />
</xsl:template>
<xsl:template match="artist">
Artist: <span style="color:#00ff00">
<xsl:value-of select="."/></span>
<br />
</xsl:template>
</xsl:stylesheet>