- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
.NET XSLT 引擎允许通过 AddExtensionObject 方法将对象传递给 XSLT 处理引擎。
有人可以评论使用它来检索要在 XSLT 中使用的本地化字符串的性能吗?
最佳答案
Extension objects如果 XSLT 转换的一部分被认为效率低下,则可以使用 来提高性能。
虽然使用扩展方法的方法不会降低性能(排除错误和低效代码),如果使用适当的 XSLT 技术访问本地化字符串,它们不会显着提高性能。
如果不是迫切需要扩展对象,创建纯 XSLT 解决方案总是好的。这提供了可移植到任何平台的额外好处,该平台提供了兼容的 XSLT 处理器。
可以将给定语言的所有本地化字符串放在单独的 XML 文件中。将使用 XSLT 访问此文件 document()
功能。每个字符串将由其 @msgId
索引使用 <xsl:key>
构建的索引的属性操作说明。在转换中,将使用 XSLT key()
获取单个消息功能。
下面是一个小代码示例,展示了如何通过 msgId 和 Languge-code 从 xml 文件中检索消息,其中存储了所有语言的消息。为方便起见,我们将消息放在 XSLT 样式表本身中。实际上,消息可以在单独的 XML 文件中:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:key name="kMsgByLangAndId" match="msg"
use="concat(../@name, @msgId)"/>
<xsl:param name="pLang" select="'De'"/>
<xsl:param name="pTime" select="19"/>
<xsl:variable name="vMsgEn">
<msg msgId="MornGreet">Good morning.</msg>
<msg msgId="AftnGreet">Good afternoon.</msg>
<msg msgId="EvnGreet">Good evening.</msg>
</xsl:variable>
<xsl:variable name="vMsgDe">
<msg msgId="MornGreet">Guten morgen.</msg>
<msg msgId="AftnGreet">Guten tag.</msg>
<msg msgId="EvnGreet">Guten abend.</msg>
</xsl:variable>
<xsl:template match="/">
<xsl:variable name="vLangVarName"
select="concat('vMsg', $pLang)"/>
<xsl:variable name="vMsgId">
<xsl:choose>
<xsl:when test="not($pTime >= 12)">MornGreet</xsl:when>
<xsl:when test="not($pTime >= 18)">AftnGreet</xsl:when>
<xsl:otherwise>EvnGreet</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="document('')">
<xsl:value-of select=
"key('kMsgByLangAndId',
concat($vLangVarName,$vMsgId)
)"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
当此转换应用于任何源 XML 文档(忽略)时,会产生所需的结果:
Guten abend.
关于.net - AddExtensionObject - 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/393661/
.NET XSLT 引擎允许通过 AddExtensionObject 方法将对象传递给 XSLT 处理引擎。 有人可以评论使用它来检索要在 XSLT 中使用的本地化字符串的性能吗? 最佳答案 Ext
我是一名优秀的程序员,十分优秀!