gpt4 book ai didi

xml - 声明一个 xsl 变量并为其赋值

转载 作者:数据小太阳 更新时间:2023-10-29 01:39:54 26 4
gpt4 key购买 nike

我正在开发一个使用 apache cocoon 将 XML 转换为 PDF 的应用程序,并且我正在重新设计处理输入 XML 的 XSL。

目前在XSL中,我们有这样的代码

<xsl:variable name="variable1">
<xsl:choose>
<xsl:when test="$testVariable ='1'">
<xsl:value-of select="'A'"/>
</xsl:when>
<xsl:when test="$testVariable ='1'">
<xsl:value-of select="'B'"/>
</xsl:when>
</xsl:choose>
</xsl:variable>

<xsl:variable name="variable2">
<xsl:choose>
<xsl:when test="$testVariable ='1'">
<xsl:value-of select="'X'"/>
</xsl:when>
<xsl:when test="$testVariable ='1'">
<xsl:value-of select="'Y'"/>
</xsl:when>
</xsl:choose>
</xsl:variable>

改成这样行不行?

<xsl:variable name="variable1"/>
<xsl:variable name="variable2"/>
<xsl:choose>
<xsl:when test="$testVariable ='1'">
<xsl:variable name="variable1" select="'A'">
<xsl:variable name="variable2" select="'X'">
</xsl:when>
<xsl:when test="$testVariable ='2'">
<xsl:variable name="variable1" select="'B'">
<xsl:variable name="variable2" select="'Y'">
</xsl:when>
</xsl:choose>

最佳答案

不,与许多其他语言不同,XSLT 变量在创建后不能更改其值。但是,您可以使用如下技术避免无关代码:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

<xsl:variable name="mapping">
<item key="1" v1="A" v2="B" />
<item key="2" v1="X" v2="Y" />
</xsl:variable>
<xsl:variable name="mappingNode"
select="document('')//xsl:variable[@name = 'mapping']" />

<xsl:template match="....">
<xsl:variable name="testVariable" select="'1'" />

<xsl:variable name="values" select="$mappingNode/item[@key = $testVariable]" />

<xsl:variable name="variable1" select="$values/@v1" />
<xsl:variable name="variable2" select="$values/@v2" />
</xsl:template>
</xsl:stylesheet>

事实上,一旦您获得了values 变量,您甚至可能不需要单独的variable1variable2 变量。您可以只使用 $values/@v1$values/@v2

关于xml - 声明一个 xsl 变量并为其赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14602884/

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