Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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
Java 动态继承命名空间的XSL元素_Java_Xslt_Xpath_Namespaces_Xslt 1.0 - Fatal编程技术网

Java 动态继承命名空间的XSL元素

Java 动态继承命名空间的XSL元素,java,xslt,xpath,namespaces,xslt-1.0,Java,Xslt,Xpath,Namespaces,Xslt 1.0,我正在编写一个样式表,在转换XML之前,它最终(通过代码)与我控制范围之外的各种其他样式表相结合 我在模板中编写“xsl:element”,但是我不知道我不控制的其他模板是否已经定义了附加到祖先元素的名称空间(即xmlns=“blah”) 在这种情况下,如果我没有在xsl:element上指定名称空间,我将收到一个xmlns=“”,将该元素放回无名称空间中。但是,我不希望出现这种情况,但是我不能专门将名称空间设置为文字值,也不能设置样式表默认名称空间 我看到很多帖子试图删除xmlns=“”,但我

我正在编写一个样式表,在转换XML之前,它最终(通过代码)与我控制范围之外的各种其他样式表相结合

我在模板中编写“xsl:element”,但是我不知道我不控制的其他模板是否已经定义了附加到祖先元素的名称空间(即xmlns=“blah”)

在这种情况下,如果我没有在xsl:element上指定名称空间,我将收到一个xmlns=“”,将该元素放回无名称空间中。但是,我不希望出现这种情况,但是我不能专门将名称空间设置为文字值,也不能设置样式表默认名称空间

我看到很多帖子试图删除xmlns=“”,但我觉得没有任何解决方案适合这种情况。大多数与在所有节点上设置名称空间、设置默认值或排除#default的结果前缀有关


我使用的是XSLT1.0,我很乐意搜索最近的元素,该元素具有定义的名称空间,而不是没有名称空间,并将其用作元素名称空间。不幸的是,我没有做到这一点,因此,任何帮助都是感激的。谢谢,如果我错过了现有的解决方案,请道歉。

有趣的问题。您的需求是创建一个元素,该元素的命名空间与结果树中的父元素的命名空间相同,您静态地不知道该元素的命名空间。解决方案与创建一个本地名称与其结果树中父元素的本地名称相同的元素完全相同:正如您所料,元素名称的URI和本地部分在XSLT中的权重相等。(这种语言对那些只想把名称空间当作装饰的人没有什么同情心。)在这两种情况下,解决方案都是将未知信息作为参数传递给创建元素的模板。

我尝试过使用XPath,比如:'名称空间uri(祖先:*[namespace-uri()!=''][1]),但是他们似乎没有得到值,即使得到了,我也无法在我的元素上设置它。感谢这个解释,它非常有用。我理解我在这种情况下的局限性,参数方法将是唯一可行的方法。