XSLT 命名空间声明中的排除结果前缀和扩展元素前缀有什么区别?

发布于 2024-11-19 20:03:48 字数 977 浏览 4 评论 0原文

exclude-result-prefixesextension-element-prefix 之间有什么区别?两者都用在 XSLT 的标头中。我在使用 EXSLT 和 EXSLT 网站时发现了 extension-element-prefix Howtoextension-element-prefix 用于“防止扩展名称空间在结果树中输出”。

但是这不是真的(使用 libxslt)。只有 exclude-result-prefixes 会删除扩展命名空间。那么为什么我需要extension-element-prefix???

示例:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:exsl="http://exslt.org/common" version="1.0"
  extension-element-prefix="exsl">

<xsl:template match="/">
  <blabla/>
</xsl:template>

</xsl:stylesheet>

我使用 libxslt (xsltproc) 的输出:

<?xml version="1.0"?>
<blabla xmlns:exsl="http://exslt.org/common"/>

What's the difference between exclude-result-prefixes and extension-element-prefix? Both are used in the header of XSLTs. I've found extension-element-prefix while using EXSLT and the EXSLT website Howto says that extension-element-prefix is used for "prevent the extension namespaces from being output in the result tree".

But this is not true (using libxslt). Only exclude-result-prefixes removes the extension namespace. So why do I need extension-element-prefix ???

Sample:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:exsl="http://exslt.org/common" version="1.0"
  extension-element-prefix="exsl">

<xsl:template match="/">
  <blabla/>
</xsl:template>

</xsl:stylesheet>

My output with libxslt (xsltproc):

<?xml version="1.0"?>
<blabla xmlns:exsl="http://exslt.org/common"/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

快乐很简单 2024-11-26 20:03:48

要使用类似于命名空间 http://exslt.org/common 中的 EXSLT 函数,您不需要 extension-element-prefix 属性。仅当您想在命名空间 http://exslt.org/functions 中使用诸如 func:function 之类的扩展元素时才需要这样做。 extension-element-prefix 属性只是表示带有该前缀的任何元素都不是文字结果元素,而是除 XSLT 语言定义的指令之外的扩展指令。

至于 exclude-result-prefixes,您已经理解了,它有助于避免在结果元素上声明任何名称空间,因为在样式表中声明和使用的名称空间仅用于选择路径表达式中的节点或匹配模式或用于插入扩展元素。

To use EXSLT functions like the one in the namespace http://exslt.org/common you don't need the extension-element-prefix attribute. That is only need if you want to use extension elements like func:function in the namespace http://exslt.org/functions. The extension-element-prefix attribute simply signals that any elements with that prefix are not literals result elements but rather extension instructions in addition to those instructions defined by the XSLT language.

As for exclude-result-prefixes, you have understood that right, it helps avoiding any namespace declarations on your result elements for namespaces declared and used in the stylesheet solely to select nodes in path expressions or match patterns or used to insert extension elements.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文