gpt4 book ai didi

xslt - 我们可以在 xslt 的 select 语句中使用动态变量名吗?

转载 作者:行者123 更新时间:2023-12-04 03:40:55 24 4
gpt4 key购买 nike

我想在 xslt 的 select 语句中使用动态变量名。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="input" select="input/message" />
<xsl:variable name="Name" select="'MyName'" />
<xsl:variable name="Address" select="MyAddress" />
<xsl:variable name="output" select="concat('$','$input')" /> <!-- This is not working -->
<output>
<xsl:value-of select="$output" />
</output>
</xsl:template>

变量“输入”的可能值是“名称”或“地址”。
输出变量的 select 语句应该有一个基于输入变量值的动态变量名。我不想使用 xsl:choose。我想动态选择值。
请给我一个解决方案。

谢谢,
迪努

最佳答案

XSLT 1.0 和 XSLT 2.0 没有动态评估。

解决您的问题 :

本次改造 :

 <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my:my">
<xsl:output method="text"/>

<my:values>
<name>MyName</name>
<address>MyAdress</address>
</my:values>

<xsl:template match="/">
<xsl:variable name="vSelector"
select="input/message"/>
<xsl:value-of select=
"document('')/*/my:values/*[name()=$vSelector]"/>
</xsl:template>
</xsl:stylesheet>

应用于以下 XML 文档时 :
<input>
<message>address</message>
</input>

产生想要的正确结果 :
MyAdress

当对这个 XML 文档应用相同的转换时 :
<input>
<message>name</message>
</input>

再次产生想要的正确结果 :
MyName

最后 : 如果您不想使用 document()函数,但会使用 xxx:node-set()扩展函数,那么这个解决方案(看起来非常相似)就是您想要的,您可以在其中查阅您的 XSLTprocessor 文档以获取扩展的确切 namespace :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common" >
<xsl:output method="text"/>

<xsl:variable name="vValues">
<name>MyName</name>
<address>MyAdress</address>
</xsl:variable>

<xsl:template match="/">
<xsl:variable name="vSelector"
select="input/message"/>
<xsl:value-of select=
"ext:node-set($vValues)/*[name()=$vSelector]"/>
</xsl:template>
</xsl:stylesheet>

关于xslt - 我们可以在 xslt 的 select 语句中使用动态变量名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4420382/

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