Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML中定义的名称空间是否也应该在XSLT中声明以使转换成功?_Xml_Xslt - Fatal编程技术网

XML中定义的名称空间是否也应该在XSLT中声明以使转换成功?

XML中定义的名称空间是否也应该在XSLT中声明以使转换成功?,xml,xslt,Xml,Xslt,我有一个XSL,它匹配输入XML中的所有属性,并将它们原样复制到输出XML中。我使用name()函数获取匹配属性的名称。 当XSL遇到一个名称空间未在XSL本身中定义的属性时,我会得到一个“未知模式前缀”错误。但是,当我在XSL中定义这些名称空间时,它工作得很好 为什么有必要定义名称空间?如果您想让我们告诉您的代码有什么问题,那么显示您的代码会很有帮助。否则我们只能猜测了。我猜你正在做的事情是: <xsl:attribute name="{name()}"/> 但是,如果我完全猜错

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


为什么有必要定义名称空间?

如果您想让我们告诉您的代码有什么问题,那么显示您的代码会很有帮助。否则我们只能猜测了。我猜你正在做的事情是:

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

但是,如果我完全猜错了问题所在,那就责怪你自己。

如果你只是复制属性而不做任何更改,为什么要使用
name()
?你想去掉前缀吗?如果是这样,请尝试
local-name()
。我不会去掉前缀。我只是复制名称的原样,然后对属性的值进行一些有条件的复制。如果我使用local-name(),那么我将在输出XML中丢失我不想要的名称空间。
<xsl:attribute name="{local-name()}" namespace="{namespace-uri()}"/>