将元素(xsl:function)从样式表复制到“结果” XML
首先,我应该说我是 XSLT 方面的初学者。
尽管确切的上下文可能不太相关(并且可能太令人困惑),但我将在下面提供它。 我有一个链式转换,如下所示:
Input.xml
是此转换的输入文件,使用transform.xsl
执行。此转换的结果是output.xml
。transform.xml
包含经典的自定义xsl:function
:xsl:函数名称=“my:f” xsl:sequence select=".. xpath .." xsl:函数
对于步骤 2,步骤 1 (
output.xml
) 的结果是,一个新的转换器 (transform2.xsl
),它将使用其他一些 XML 输入(例如input2.xml
)。
我想要做的是将 xsl:function
node 完全复制(存在于步骤 1 中的 transform.xsl
中)到 < code>output.xml,以便可以在步骤 2 中使用。 在这种情况下,复制 xsl:function
时不需要更新/更改(只是简单的节点副本)。 请注意,我不想仅在给定输入元素(来自 input.xml
)存在时才复制 xsl:function
。相反,我想始终复制它,无论 input.xml
是什么。
现在我知道可以通过创建一个包含我的 xsl:function
的单独文件,然后使用 xsl:import
来包含来自两个转换的该文件 (transform.xml
和 transform2.xml
)。
但我想知道是否还有其他方法可以实现此目的(..没有声明/定义函数的单独文件)?
预先感谢,
M.
First, I should say that I am a beginner in terms of XSLT.
Although the exact context may not be so relevant (and might be too confusing), I will provide it below.
I have a chained transformation, which looks like this:
Input.xml
is the input file for this transformation, which is performed usingtransform.xsl
. The result of this transformation isoutput.xml
.transform.xml
contains a classic customxsl:function
:xsl:function name="my:f" xsl:sequence select=".. xpath .." xsl:function
The result from step 1 (
output.xml
) is, for step 2, a new transformer (transform2.xsl
), which will be using some other XML input (let's sayinput2.xml
).
What I would like to do is to copy the xsl:function
node entirely (present in the transform.xsl
in step 1) to the output.xml
, so that it can be used in step 2.
No updates / changes are needed in this case for the xsl:function
while copying it (just a simple node copy).
Note that I do not want to copy the xsl:function
only when a given input element (from input.xml
) is present. But rather, I want to copy it always, no matter what the input.xml
is.
Now I know this can be made by having a separate file which contains my xsl:function
, and then using xsl:import
to include this file from both transformations (transform.xml
and transform2.xml
).
But I would like to know if there are other ways of accomplishing this (..without having a separate file where the function is declared / defined)?
Thanks in advance,
M.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
document('')
访问样式表文档,因此,例如应该将样式表中的任何
xsl:function
元素复制到结果树中。[编辑]
编辑后,您似乎想要复制某个名称的函数:如果您想复制某个名称的函数,那么您可以这样做,例如
其中
f
是函数的本地名称,http://example.com/ns
是定义函数的命名空间。You can access the stylesheet document using
document('')
so doing e.g.should copy any
xsl:function
elements in the stylesheet to the result tree.[edit]
After the edit it seems you want to copy a function of a certain name: if you want to copy the function of certain name then you could do e.g.
where
f
is the local name of the function andhttp://example.com/ns
is the namespace the function is defined in.您可以使用
document()
内置函数,它将返回空 URI 的样式表文档。然后您只需将元素复制到输出即可。You can use the
document()
built-in function which wil return the stylesheet document for an emtpy URI. Then you can just copy the element to the output.