gpt4 book ai didi

xslt - 在 XSLT 中检查更高优先级变量中变量的值

转载 作者:行者123 更新时间:2023-12-01 00:52:06 25 4
gpt4 key购买 nike

我需要能够检查变量的“当前”值在包含另一个的不同 xslt 中的同一变量的重新声明中。

主文件.xslt:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="other.xslt"/>
<xsl:variable name="email">
<xsl:if test="string-length($email) = 0">
bar@foo.com
</xsl:if>
</xsl:variable>
<xsl:template match="/">
<Email>
<xsl:value-of select="$email"/>
</Email>
</xsl:template>
</xsl:stylesheet>

其他.xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="email">foo@bar.com</xsl:variable>
</xsl:stylesheet>

我想要做的是能够检查较低优先级变量的值是什么,看看我是否需要在当前 xslt 的变量中覆盖它。 (免责声明 - 当前代码严重崩溃)

最佳答案

正如其他人所指出的,不能使用相同的变量名 为导入的样式表中定义的全局变量添加默认值。 .这是因为在当前 xslt 样式表中定义的具有该名称的变量的优先级高于导入样式表中的变量,并且只会使用前者(您无法访问较低优先级样式表中的同名变量)。

以下是如何添加默认值 :

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- -->
<xsl:import href="other.xsl"/>
<!-- -->
<xsl:variable name="vMyEmail" select=
"concat(substring('bar@foo.com', 1 div not($vEmail)), $vEmail)"
/>
<!-- -->
<xsl:template match="/">
<xsl:value-of select="$vMyEmail"/>
</xsl:template>
</xsl:stylesheet>

请注意 即全局变量 $vMyEmail 以这样一种方式定义,即它具有变量 的值$vEmail (在导入的样式表中定义)如果这是一个长度至少为 1 的字符串,或所需的默认值——否则。

使用这种技术,人们将使用如此定义的 $vMyEmail任何遵循其定义的地方。 $vEmail导入的样式表中的变量根本不会直接使用 .

关于xslt - 在 XSLT 中检查更高优先级变量中变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/400909/

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