我正在创建一个模板,该模板基于单个字符串生成输出,通过参数传递,并且不使用输入XML文档. xsltproc似乎很高兴使用指定样式表的单个参数运行,但我没有看到在没有输入文件的情况下触发模板的方法(例如,没有参数xsltproc来运行命名模板).
我希望能够运行:
xsltproc --stringparam bar baz foo.xsl
Run Code Online (Sandbox Code Playgroud)
但我现在必须运行,"主"模板匹配"/":
echo '<xml/>' | xsltproc --stringparam bar baz foo.xsl -
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它发挥作用?我确定我在过去看过其他模板,这些模板本来是在没有输入文档的情况下运行的,但我不记得它们是如何工作的或者在哪里再次找到它们.:-)
实际上,这已经经常发生了.
在XSLT 2.0中,它在Spec中定义.提供初始上下文节点是可选的.如果没有提供初始上下文节点(没有源XML文档),则提供要作为转换入口点执行的命名模板的名称非常重要.
在XSLT 1.0中,可以为转换提供其自己的主样式表模块(文件)作为源XML文档,当然,转换可以完全忽略此源XML文档.这种技术很久以前就已被Jeni Tennison证明和使用.
例如:
<?xml-stylesheet type="text/xsl" href="example.xml"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<p>Hello, world!</p>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
当上述代码保存在名为"example.xml"的文件中,然后使用Windows资源管理器显示文件夹内容时,双击文件"example.xml"将打开IE并生成:
你好,世界!
| 归档时间: |
|
| 查看次数: |
3213 次 |
| 最近记录: |