使用 xml 作为 xsl 变量
我必须使用不同语言的两个文本块创建稍微动态的 pdf(两个变量)。
两个块中的大部分文本都是静态的,
我在想是否可以创建一个模板来为布局创建 xsl-fo。然后创建两个包含自定义 xml 的变量。就像:
<xsl:variable name="TEXT_CONTENT_ENG" >
<STATIC_TEXT>
<LABEL>Hello</LABEL>
<REQUEST>Please pay your bill before </REQUEST>
</STATIC_TEXT>
</xsl:variable>
最后我可以使用这些变量应用创建的模板两次。
xsl 似乎使用给定变量进行验证,但我无法将模板应用于该 xml。尝试过,文档($TEXT_CONTENT_ENG)也不起作用。
这是否可能以及如何做到?
I have to create slightly dynamic pdf (two variables) with two text blocks in different languages.
Most of the text in both blocks is static
I was thinking if I could create one template that would create xsl-fo for the layout. Then create two variables containing custom xml. Something like:
<xsl:variable name="TEXT_CONTENT_ENG" >
<STATIC_TEXT>
<LABEL>Hello</LABEL>
<REQUEST>Please pay your bill before </REQUEST>
</STATIC_TEXT>
</xsl:variable>
Finally I could apply created template twice using these variables.
xsl appears to validate with given variable but I couldn't apply template to that xml. Tried and also document($TEXT_CONTENT_ENG) neither worked.
Is this even possible and how to do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果这是真的,那么正确的 XSLT 方式是内联数据。来自 http://www.w3.org/TR/xslt#stylesheet-element
输出:
注意:在 XML 1.0 中,您只能重置默认命名空间。
If this is true, then the proper XSLT way is inline data. From http://www.w3.org/TR/xslt#stylesheet-element
Output:
Note: In XML 1.0 you can reset only default namespace.
Alejandro 的答案总体上是正确的,但是命名空间的非常规使用有点令人困惑,而且他将数据包装在不必要的
xsl:variable
元素中,这也有点令人困惑。只要将元素放入其自己的命名空间中,就可以使其成为
xsl:stylesheet
元素的子元素。然后,您可以使用document('')
访问它,它返回当前的 XSLT 文档:Alejandro's answer is in general correct, but the unconventional use of namespaces is a little confusing, and he's wrapped the data in an unnecessary
xsl:variable
element, which is also a little confusing.As long as you put your element in its own namespace, you can make it a child of the
xsl:stylesheet
element. You can then access it by usingdocument('')
, which returns the current XSLT document:使用 xalan 我可以这样做:
类似的功能也可用于 exslt
Using xalan I was able to do it like this:
Similar function is also available for exslt