首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >xmlns的问题

xmlns的问题
EN

Stack Overflow用户
提问于 2010-05-19 18:53:36
回答 2查看 380关注 0票数 2

我有一个xml文件和一个xslt文件。

xml文件有一个xmlns="exa:com.test“属性。

如果在xml中删除这个属性,xslt中的xpath语句就可以工作。但是如果我离开它,就不能工作了。

我正在使用以下代码混合xml和xslt:

代码语言:javascript
运行
复制
XslCompiledTransform transformer = new XslCompiledTransform();

transformer.Load(HttpContext.Current.Server.MapPath("xslt\\searchresults.xslt"));  

transformer.Transform(xmlreader, null, utf8stringwriter);

我做错了什么?如果xml的顶部有xmlns属性,我如何混合xml和xslt呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-19 18:57:47

不带前缀名称的xmlns属性将替换默认名称空间,以便您的查询匹配具有不同(空)名称空间的节点。您需要在XSLT XPath查询中使用带前缀的名称空间(或者对于孤立的XPath查询使用XmlNamespaceManager ),您的查询将按预期再次工作。

在XSLT中:

代码语言:javascript
运行
复制
<xsl:stylesheet ... xmlns:exa="exa:com.test">

然后,假设您曾经匹配实例xyz,现在您可以像这样更改查询:

代码语言:javascript
运行
复制
<xsl:template match="exa:xyz"> ...

通常,您可能希望阅读一些关于XML名称空间的文档。

票数 3
EN

Stack Overflow用户

发布于 2010-05-19 21:32:26

但是需要注意的是,尽管名称空间字符串只是被视为一个确切的文字字符串,它被用作没有其他含义的标识符。该字符串必须符合IANA uri,这是为了保证命名空间的唯一性。一些解析器拒绝解析不符合的命名空间。

还要注意,因为它们是字符串,所以http://www.w3.org/1999/xhtml和例如http://w3.org/1999/xhtml/用于名称空间的目的是完全不同的名称空间。

您可能希望阅读XML中的名称空间是如何工作的。据我所知,exa:com.test不是有效的名称空间字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2864819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档