2014-09-18 42 views
0

我正在使用一个xsl文件处理多个xml文件,即使它们具有相同的结构,也需要对一些文件进行不同的处理。由于文件数量很大,需要处理不同的部分只是几个节点,其余部分是相同的,所以我想保留一个xsl样式表。我设置了一个外部参数,它告诉正在处理什么类型的文件;有了这些信息,我如何在不同的文件上对同一个节点做不同的<template match.../>取决于变量值的XSLT模板匹配

编辑:我想到这样的事情,我知道这是不可能有内部模板匹配如果

<xsl:param name="type" /> <!-- this is set externally --> 
    <xsl:if test="$type = 'XYZ'"> 
     <xsl:template match="a/b"> 
     .... 
    </xsl:if> 

    <xsl:if test="$type = 'MNO'"> 
     <xsl:template match="a/b"> 
     .... 
    </xsl:if> 
+1

@JohnLBevan我” m使用撒克逊分析器,我可以设置外部参数值 – Rnet 2014-09-18 18:01:10

+1

@JohnLBevan这只是错误的。您可以随时提供外部参数并打开其他XML文档。 – 2014-09-18 18:12:48

回答

2

你当然可以写

<xsl:param name="type" /> 

<xsl:template match="a/b[$type = 'XYZ']">...</xsl:template> 

<xsl:template match="a/b[$type = 'MNO']">...</xsl:template> 
+0

精美的作品!认为只有当我有一个属性值测试,我才能'与';谢谢! – Rnet 2014-09-18 18:11:27