xsl:元素不想接受来自属性值的字符串

问题描述 投票:0回答:1

我正在尝试将元素属性值转换为标签(名称)。例如,从

<test name="testname"/>
<testname/>
。神秘的是,这根本不可能发生,我遇到的错误最多,其中包括

xsl:element: The value '$test' of the attribute 'name' is not a valid QName.

是最重要的。

最小示例,xsl:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" version="1.0" indent="yes" encoding="utf-8"/>
  <xsl:template match="/">
    <xsl:variable name="test">
      <xsl:value-of select="/test/@name"/>
    </xsl:variable>
    <xsl:element name="$test"/>
  </xsl:template>
</xsl:stylesheet>

我正在尝试在此测试 xml 上执行它:

<test name="testname"/>

为什么?如果

$test
是硬编码字符串,我可以毫无问题地执行相同操作。这个“qname”是什么以及如何从属性值生成它?

我正在使用 xslt-1.0 和 xsltproc 工具,我正在考虑升级(可能升级到 xalan 或更可能升级到 saxon he)。但我想在 xsltproc 中解决这个问题。

xml xslt xslt-1.0
1个回答
0
投票

使用属性值模板

<xsl:element name="{$varname}">
或更通用的
<xsl:element name="{xpath-expression}">

© www.soinside.com 2019 - 2024. All rights reserved.