首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有XProc参数绑定的所需类型的XSLT

具有XProc参数绑定的所需类型的XSLT
EN

Stack Overflow用户
提问于 2013-07-25 15:00:04
回答 2查看 842关注 0票数 2

我正在尝试将调用Saxon (版本8.9)的批处理文件转换为一个XProc管道(Calabash)。这是我的批次呼叫:

代码语言:javascript
运行
复制
java -jar saxon8.jar -o out.xml in.xml style.xsl +config=config-file.cfg

参数配置以这种方式在样式表中定义:

代码语言:javascript
运行
复制
<xsl:param name="config" as="document-node()"/>

XProc部分如下所示:

代码语言:javascript
运行
复制
<p:load name="configLoad">
    <p:with-option name="href" select="'config-file.cfg'"/>
</p:load>
<p:xslt name="config">
    <p:input port="source">
        <p:document href="in.xml"/>
    </p:input>
    <p:input port="parameters">
        <p:inline>
            <c:param name="config">
                <p:pipe port="result" step="configLoad"/>
            </c:param>
        </p:inline>
    </p:input>
    <p:input port="stylesheet">
        <p:document href="style.xsl"/>
    </p:input>
</p:xslt>

错误消息如下:

变量$config值的必需项类型是document-node();所提供的值具有项目类型xs:string

我知道<p:exec>步骤,但我不想使用它,因为配置文件将在稍后由其他XSLT转换生成。它还将被其他XProc步骤重用。

是否有可能用正确的参数类型调用XSLT样式表?谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-25 19:16:23

看来您对当前的XProc标准不太满意。它声明参数是名称/值对,其中值的数据类型必须是untypedAtomic的字符串。别问我为什么。

http://www.w3.org/TR/xproc/#parameters

如果您不是动态地组合配置的内容,而只是传递固定文件的内容,您可以只通过一个路径到适当的配置文件,并使用fn:doc()从XSLT文件中读取它。

我建议不要立即编写配置文件。XProc内部的执行顺序可能不像您预期的那样按顺序排列。

另一种方法是将每个配置设置作为单独的参数传递,但是每个设置仍然必须符合平面参数值类型。

哈哈!

票数 2
EN

Stack Overflow用户

发布于 2020-06-06 16:50:51

如果您的config-file.cfg文件是格式良好的XML,并且可以使用XSLT 2,

您可以按照grtjn的建议使用fn:doc(),或者

  1. 以这样的方式重写您的XProc管道: >
  2. 以这种方式重写样式表的相关部分:

这允许您从xslt默认集合访问辅助输入文档。

请注意,不需要中间的<p:store>步骤。

此外,如果您不打算在其他步骤中重用已加载的config-file.cfg文档,您甚至不需要在管道中使用<p:load>:您只需在源输入端口中使用<p:document>,如下所示:

代码语言:javascript
运行
复制
<p:input port="source">
    <p:document href="in.xml"/>
    <p:document href="config-file.cfg"/>
</p:input>

我已经在氧气XML中测试过这个,它可以工作。

BTW,这个答案的所有功劳都归于 Martin Honnen,参见: https://stackoverflow.com/a/60436209

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17861633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档