0

我有一个 XSL,它匹配输入 XML 中的所有属性,并将它们原样复制到输出 XML 中。我使用该name()函数来获取匹配属性的名称。当 XSL 遇到其名称空间未在 XSL 本身中定义的属性时,我会收到“未知模式前缀”错误。但是当我在 XSL 中定义这些命名空间时,它工作得很好。

为什么这个命名空间的定义是必要的?

4

1 回答 1

1

如果您希望我们告诉您您的代码有什么问题,它有助于显示您的代码。否则我们只需要猜测。我的猜测是你正在做类似的事情:

<xsl:attribute name="{name()}"/>

name()如果返回类似“ xyz :banana ”的东西,其中xyz不是样式表中声明的前缀,这将失败。更好的方法是:

<xsl:attribute name="{local-name()}" namespace="{namespace-uri()}"/>

但是,如果我完全猜错了问题,那么 - 责备自己。

于 2013-06-17T20:57:29.023 回答