gpt4 book ai didi

xslt - XSLT 中的设计和编码模式

转载 作者:行者123 更新时间:2023-12-04 02:18:17 27 4
gpt4 key购买 nike

我是 XSLT 的新手,有一个一般性问题。为了区分具有不同属性的两个元素,最好(也是为了性能)使用 <xsl:template match="foo[@aOne]"><xsl:template match="foo[@aTwo]">而不是 <xsl:if test="@aOne">在一个模板中。据我所知,这就是 XSLT 中应该“思考”的方式。但在我看来,这有一个缺点,即它会导致代码的冗余部分。

例如:一个元素有两个属性的匹配

<foo aOne="asdf">
...
</foo>

<foo aTwo="asdf">
...
</foo>

模板看起来像这样:

<xsl:template match="foo[@aOne]">
<div>
<p>
<xsl:value-of select="@aOne"/>
</p>
</div>
</xsl:template>


<xsl:template match="foo[@aTwo]">
<div>
<p>
<xsl:value-of select="@aTwo"/>
</p>
</div>
</xsl:template>

因此必须多次编写所有框架(如示例中的<div> 等)。

是否有某种类似 Java 的模板设计模式

或者这是一种完全错误的 XSLT 编程方法/观点?

希望我的想法得到明确,提前感谢您的任何意见。

最佳答案

这两个属性是否相互排斥?如果是这样,我会写

<xsl:template match="foo[@aOne|@aTwo]">
<div>
<p>
<xsl:value-of select="@aOne|@aTwo"/>
</p>
</div>
</xsl:template>

如果它们不是相互排斥的,那么您使用两个模板规则的方法似乎是不够的:对于 @aOne 不存在或存在以及 @aTwo 不存在或存在的四种可能组合,将有四个规则。

关于xslt - XSLT 中的设计和编码模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32732736/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com