首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >exclude-result-prefixes="xmlns“

exclude-result-prefixes="xmlns“
EN

Stack Overflow用户
提问于 2011-07-29 16:08:59
回答 3查看 5.2K关注 0票数 0

在.net中,下面的xslt是正确的。

代码语言:javascript
复制
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
exclude-result-prefixes="table xmlns">

但在java中,如果我使用saxon,

代码语言:javascript
复制
exclude-result-prefixes="xmlns"

将生成以下错误:

在worksheets.xsl: XTSE0165:命名空间前缀xmlns的第52行的xsl:stylesheet处出错

EN

回答 3

Stack Overflow用户

发布于 2011-07-29 19:49:28

首先,关于哪种产品是正确的这个相当枯燥的问题。XSLT 1.0规范在谈到exclude-result-prefixes时说,“如果没有名称空间绑定到带有exclude-result-prefixes或xsl:exclude-result-prefixes属性的元素上的前缀,那就是错误的。”为元素“绑定”(在作用域中)的名称空间前缀是在XPath数据模型http://www.w3.org/TR/xpath/#namespace-nodes中定义的,如果您仔细阅读它,它会告诉您前缀"xmlns“没有作用域内绑定。XML2.0更清楚地说明了这一点:“命名空间节点不能有名称http://www.w3.org/2000/xmlns/,也不能有字符串值xmlns。”,但这是为了澄清,而不是为了进行实质性的更改。

现在,更有趣的问题是如何实现你想要实现的目标。我认为你实际上并没有告诉我们你想要实现的目标。一些回复推测exclude-result-prefixes="#default“会解决你的问题,但在建议之前,我很想知道你的问题是什么。

票数 3
EN

Stack Overflow用户

发布于 2011-07-29 17:12:50

根据XSLT规范,使用#default,例如:exclude-result-prefixes="#default"

参考:http://www.w3.org/TR/xslt#literal-result-element

票数 2
EN

Stack Overflow用户

发布于 2011-07-29 16:43:35

在排除结果前缀中包含xmlns是错误的,Xml规范禁止显式声明xmlns名称空间前缀:

前缀xmlns仅用于声明名称空间绑定,并且根据定义绑定到名称空间名称http://www.w3.org/2000/xmlns/。它不能被声明。不能将其他前缀绑定到此命名空间名称,也不能将其声明为默认命名空间。元素名称不能以xmlns为前缀。

因此,在exclude-result-prefixes中包含xmlns是没有意义的,因为它不是一个有效的前缀。有关更多信息,请参阅http://www.w3.org/TR/xml-names/#ns-decl

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

https://stackoverflow.com/questions/6870307

复制
相关文章

相似问题

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