gpt4 book ai didi

XSLT:测试参数以了解是否已设置

转载 作者:行者123 更新时间:2023-12-04 11:17:48 25 4
gpt4 key购买 nike

我遇到了无法设置参数的情况,但是我 try catch 和处理该位置的尝试无效。

我正在使用以下内容:

<xsl:template match="xs:complexType">
<xsl:param name="prefix" />

<xsl:variable name="prefix-no-core">
<xsl:choose>
<!-- if no value, default to 'AcRec' -->
<xsl:when test="not($prefix)">
<xsl:value-of select="'AcRec'" />
</xsl:when>
<!-- if 'core', leave as empty string -->
<xsl:when test="$prefix = 'core'">
</xsl:when>
<!-- if 'AcRec', set the value -->
<xsl:when test="$prefix = 'AcRec'">
<xsl:value-of select="$prefix" />
</xsl:when>
</xsl:choose>
</xsl:variable>

<xs:complexType name="{concat($prefix-no-core, @name)}">
...
</xsl:template>

我也在第一次测试中尝试过 $prefix='' - 都不起作用。但如果我使用:
<xsl:value-of select="not($prefix)" />

... 该值打印为 true。但是在我的 xsl:choose 中使用它不会产生任何输出。

最佳答案

你可以为参数指定一个默认值,这样当它没有被传递时,你可以检查它。

尽管在您的示例中,看起来只有一个默认值会大大简化事情。

<xsl:template match="xs:complexType">
<xsl:param name="prefix" select="'default-value'" /> <!-- SET default -->

<xsl:variable name="prefix-no-core">
<xsl:choose>
<!-- if no value, default to 'AcRec' -->
<xsl:when test="$prefix = 'default-value'">
<xsl:value-of select="'AcRec'" />
</xsl:when>
<!-- if 'core', leave as empty string -->
<xsl:when test="$prefix = 'core'">
</xsl:when>
<!-- if 'AcRec', set the value -->
<xsl:when test="$prefix = 'AcRec'">
<xsl:value-of select="$prefix" />
</xsl:when>
</xsl:choose>
</xsl:variable>

<xs:complexType name="{concat($prefix-no-core, @name)}">
...
</xsl:template>

像这样调用,值将是 'default-value':
<xsl:apply-templates select="//xs:complexType[@name='AddressType']" />

像这样调用,值将是“passed-value”:
<xsl:apply-templates select="//xs:complexType[@name='AddressType']">
<xsl:with-param name="prefix" value="'passed-value'"/>
</xsl:apply-templates>

编辑:为了完整起见,原始示例的简化形式是:
<xsl:template match="xs:complexType">
<xsl:param name="prefix" select="'AcRec'"/>

<xsl:variable name="prefix-no-core">
<xsl:choose>
<!-- if 'core', leave as empty string -->
<xsl:when test="$prefix = 'core'">
</xsl:when>
<!-- defaults to 'AcRec' -->
<xsl:otherwise>
<xsl:value-of select="$prefix" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>

<xs:complexType name="{concat($prefix-no-core, @name)}">
...
</xsl:template>

关于XSLT:测试参数以了解是否已设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1120681/

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