使用<xsl:variable =“”>来提高可读性</xsl>

时间:2014-01-31 05:11:19

标签: html xml xslt

我有一个代码

<xsl:template match = "WorkCompPolicyQuoteInqRq|CommlUmbrellaPolicyQuoteInqRq|CommlAutoPolicyQuoteInqRq|CommlPropertyPolicyQuoteInqRq|GeneralLiabilityPolicyQuoteInqRq|CrimePolicyQuoteInqRq" mode="generalOverview">

我希望提高可读性,以便将所有值以OR(|)分隔在一个新行上,我试过这个

<xsl:variable name = "WorkComp" select = "WorkCompPolicyQuoteInqRq" />
    <xsl:variable name = "Umb" select = "CommlUmbrellaPolicyQuoteInqRq" />
    <xsl:variable name = "ComAuto" select = "CommlAutoPolicyQuoteInqRq" />
    <xsl:variable name = "ComPol" select = "CommlPropertyPolicyQuoteInqRq" />
    <xsl:variable name = "GenLia" select = "GeneralLiabilityPolicyQuoteInqRq" />
    <xsl:variable name = "Crime" select = "CrimePolicyQuoteInqRq" />
    <xsl:template match = "$WorkComp"|"$Umb"|"$ComAuto"|"$ComPol"|"$GenLia"|"$Crime" mode="generalOverview">

但它仍然不起作用,任何人都可以建议我一些更好的方法。

2 个答案:

答案 0 :(得分:1)

您无法在match的{​​{1}}属性中使用变量。但是,您仍然可以通过以下方式实现“提高可读性以便将所有值由OR(|)分隔”的目标:

xsl:template

-
附:为了进一步提高可读性,请考虑对代码进行评论。

答案 1 :(得分:0)

您有许多元素似乎是不同类型的“PolicyQuoteInqRq”,并且您正在对每个元素应用类似的处理。您可能希望考虑使用XSLT 2.0进行模式感知转换。这将允许您将所有这些不同类型的“PolicyQuoteInqRq”定义为替换组的成员,可能由名为“PolicyQuoteInqRq”的抽象元素引导,然后您就可以用

替换匹配模式
match="schema-element(PolicyQuoteInqRq)"

如果这样可以在整个样式表中节省大量的重复,那么它很有可能是值得的,并且当引入新的策略时,它将使代码更容易修改(甚至更好,不需要修改!)。 p>