Xml name()和local-name()之间有什么区别?
我不太理解XPath函数和XML函数之间的区别 你能举一个他们会有不同的情况的例子吗 编辑 举个例子:Xml name()和local-name()之间有什么区别?,xml,xpath,Xml,Xpath,我不太理解XPath函数和XML函数之间的区别 你能举一个他们会有不同的情况的例子吗 编辑 举个例子: <?xml version="1.0" ?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head></head> </html> 我在这两个查询中得到了相同的结果:/*[local-name()=“head”]和/*[name()
<?xml version="1.0" ?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head></head>
</html>
我在这两个查询中得到了相同的结果:/*[local-name()=“head”]
和/*[name()=“head”]
。为什么会这样?使用XML
<x:html xmlns:x="http://www.w3.org/1999/xhtml"/>
样式表
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="*">
<local-name><xsl:value-of select="local-name()"/></local-name>
<name><xsl:value-of select="name()"/></name>
</xsl:template>
</xsl:stylesheet>
输出
<local-name>html</local-name>
<name>x:html</name>
html
x:html
因此,local-name()
结果没有任何前缀,name()
结果可能包含前缀
在带有默认名称空间声明的示例中,不存在前缀,因此
name()
和local-name()
会给出相同的结果。如果样式表包含带有不同前缀的xhtml名称空间,name()会在输入XML中输出前缀。如果我希望前缀是样式表中定义的前缀,该怎么办?在名称空间轴上有名称空间节点,在XSLT/XPath 2.0中,有一些函数可以操作和解析名称空间,或者查找前缀,当然这些前缀也可以应用于样式表中的节点。您可以使用document(“”)
获得样式表的文档节点。如果你需要更多的解释,你可以自己问一个问题。嗨,我问了一个关于这个的问题: