Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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
强制xslt生成;xml";域名_Xml_Xslt_Attributes_Xml Namespaces - Fatal编程技术网

强制xslt生成;xml";域名

强制xslt生成;xml";域名,xml,xslt,attributes,xml-namespaces,Xml,Xslt,Attributes,Xml Namespaces,我需要xslt版本2在记录或元素级别为“xml”属性前缀(xml:lang=“en-us”)生成域名: xmlns:xml="http://www.w3.org/XML/1998/namespace" 我尝试同时使用xsl:namespace和xsl:attribute。。。名称空间= 这两种方法对我都不管用——任何建议都会很棒 根据“前缀xml根据定义绑定到名称空间名称http://www.w3.org/XML/1998/namespace。它可以声明,但无需声明,并且不得绑定到任何其他命名

我需要xslt版本2在记录或元素级别为“xml”属性前缀(xml:lang=“en-us”)生成域名:

xmlns:xml="http://www.w3.org/XML/1998/namespace"
我尝试同时使用xsl:namespace和xsl:attribute。。。名称空间=

这两种方法对我都不管用——任何建议都会很棒
根据“前缀
xml
根据定义绑定到名称空间名称
http://www.w3.org/XML/1998/namespace
。它可以声明,但无需声明,并且不得绑定到任何其他命名空间名称。”因此,虽然您当然可以在文本结果元素上使用该名称空间,或者使用
xsl:namespace
输出该名称空间,但我认为不能保证序列化程序将其输出为省略,不会改变XML的语义。

正如Martin已经解释的那样,前缀
xml:
已与命名空间URI
http://www.w3.org/XML/1998/namespace
。你可以把它想象成

xmlns:xml="http://www.w3.org/XML/1998/namespace"
但是作为一种隐式声明,它在所有XML文档中都可用,并且被所有符合XML的应用程序识别

因此,您的问题的答案是:您根本不需要声明前缀
xml:
,它在默认情况下是可用的。您可以使用(
xml:lang
xml:space
xml:base
xml:id
)而不声明其前缀

顺便说一下,你可以自己试试。只需创建一个没有任何名称空间声明的XML文档,并在其中使用
XML:lang
作为属性:

<?xml version="1.0" encoding="UTF-8"?>
<root xml:lang="en"/>


没有XML处理者会抱怨它,甚至您的XSLT引擎也不会抱怨。

它被称为XML名称空间,而不是域名