2011-05-03 96 views
3

我正在学习如何在XSLT中执行自定义函数。我发现的每个例子似乎都声明了一个自定义命名空间,例如XSLT中的命名空间

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:mynamespace="http://whatever"> 

我不明白什么是应该去的地方我目前拥有的“http://什么”,而这是什么呢?我不能使用默认的xsl命名空间来创建函数吗?

预先感谢任何帮助

回答

2

http://www.w3.org/TR/xslt20/#stylesheet-functions

注:

前缀必须不是指 reserved namespace:[see ERR XTSE0080]

http://www.w3.org/TR/xslt20/#dt-reserved-namespace

定义:XSLT名称空间, 连同由XSLT处理器识别某些其他命名空间 ,是 归类为保留的命名空间和 必须使用只有如本 及相关规范指定。

http://www.w3.org/TR/xslt20/#err-XTSE0080

它是一个静态的错误 在名称中使用保留的命名空间的命名模板,一个模式,一个 属性设置,一键, 十进制格式的 ,变量或 参数,样式表函数, 命名输出定义或 字符映射。

+0

谢谢 - 我会对此进行阅读。 – Mitya 2011-05-03 19:24:34

+0

@Mitya:不客气。 – 2011-05-03 19:53:02

1

如果您的样式表是一次性代码,请使用任何您喜欢的名称空间作为本地函数。我有时使用“http:// localhost /”,但我也知道使用“我的:函数”。如果样式表将被其他人看到或使用,并且功能需要可重用和记录,那么仔细考虑选择一个全球唯一的名称空间,并反映功能规范的设计权限;大多数人选择http://your.domain.name/ns/purpose之类的东西,你也可以考虑在网络上的那个位置放置一个功能说明。另一个约定是,如果你的函数库与一个特定的XML词汇表密切相关,并且具有与该词汇表相同的设计权限,则将这些函数放置在与该词汇表中的元素相同的命名空间中。