xslt - 如何将xslt版本2.0转换为版本1.0

标签 xslt xpath xslt-1.0 xslt-2.0

我正在使用使用xpath版本2函数的xslt文档。我只有具有xslt 1.0处理器的xalan 2.6 jar,它的约束我无法更改。.如果有任何工具可以将xpath 2.0函数转换为1.0

<xsl:variable name="var1_ClinicalDocument" as="node()?" select="ns0:ClinicalDocument"/>
        <DSMessage>
            <DSPatient>
                <xsl:for-each 

    select="$var1_ClinicalDocument[fn:exists(ns0:id/@root)]">
                        <Source>
                            <xsl:sequence select="fn:string(ns0:id/@root)"/>
                        </Source>
                    </xsl:for-each>
                    <Demographics>
                        <xsl:for-each select="($var1_ClinicalDocument/ns0:recordTarget/ns0:patientRole/ns0:id)[fn:exists(@extension)]">
                            <externalID>
                                <xsl:sequence select="fn:string(@extension)"/>
                            </externalID>
                        </xsl:for-each>
                        <xsl:for-each select="($var1_ClinicalDocument/ns0:recordTarget/ns0:patientRole/ns0:patient/ns0:name/ns0:given/node())[fn:boolean(self::text())]">
                            <firstName>
                                <xsl:sequence select="fn:string(.)"/>
                            </firstName>

最佳答案

这是有问题的XPath 2.0函数的映射:

XPath 2.0 XPath 1.0 Xalan-Java XSLT-C
fn:exists()字符串长度(concat(。,))XPath 1.0 XPath 1.0
fn:string()string()XPath 1.0 XPath 1.0
fn:boolean()boolean()XPath 1.0 XPath 1.0


EXSLT,XSLTSL,FXSL和XPath算法可以填充大多数剩余功能。

XPath 2.0 FXSL XSLTSL EXSLT XPath 1.0
fn:max最大数学:max
fn:max dyn:max
fn:min最小数学:min
fn:min dyn:min
fn:总和数学:总和
fn:sum dyn:sum
fn:avg总和div计数
fn:地板
fn:天花板上限
fn:圆
fn:abs数学:abs
fn:收藏夹
op:concatenate append
fn:doc文件
fn:计数
fn:不是
fn:true是
fn:false否
fn:布尔布尔
fn:upper-case str:to-upper
fn:小写字母str:到小字母
fn:substring子字符串
fn:字符串长度字符串长度
fn:规格化空间规格化空间
fn:translate翻译
fn:concat str:concat concat
fn:子串之前子串之前
fn:子串之后子串之后
fn:reverse str:backward
fn:insert-be之前str:insert-at
fn:matches str:string-match
fn:tokenize str:tokenize
fn:resolve-uri uri:resolve-uri
fn:distinct-values设置:distinct
op:union |
op:相交set:相交
op:cmp:diff除外set:difference
op:是相同节点的cmp:cmp
fn:position节点:xpath位置
fn:倒数第二个
fn:数据节点:类型
fn:lang lang
fn:current-dateTime日期:date-time
fn:dateTime dt:format-date-time date:format-date
fn:从年开始的日期dt:从xsd开始的日期时间年日期:年中的日
fn:从日期开始的时间dt:获取xsd日期时间的月份:日期名称
fn:day-from-dateTime dt:get-xsd-datetime-day date:day-name
fn:小时从日期时间dt:获取xsd日期时间小时日期:小时
fn:分钟从日期时间dt:获取xsd日期时间-分钟日期:分钟
fn:从日期开始的秒数dt:从xsd日期开始的第二时间:分钟
fn:timezone-from-dateTime dt:get-xsd-datetime-timezone
如果(...)然后(...)else(...)$ dynamic [$ var] | $ default [not($ var)]


参考资料


Xalan-Java Extensions Library
XSLTC Extensions Library
FXSL
XSieve
XSLTSL
Common XSLT Utilities
Web XSLT: XSLT and JavaScript code intended mostly for manipulating MathML and OpenMath.
XSLT Stylesheets for MathML
XPath Wikibook
XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition)
XQuery 1.0 and XPath 2.0 Formal Semantics (Second Edition)
XQuery 1.0 and XPath 2.0 Data Model (XDM) (Second Edition)

关于xslt - 如何将xslt版本2.0转换为版本1.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16674494/

相关文章:

xpath - 如何编写查询xquery?

使用命名空间的 Python ElementTree find()

xml - XSLT 嵌套排序/for-each

xslt 1 : check if node contains any value from list

java - XPATH表达式输出父节点和匹配的子节点,排除不匹配的子节点

c# - 合并 xml 命名空间

javascript - 即时重新填充 HTML 表格

perl - 如何可视化/美化打印 HTML DOM 树?

xml - RSS 提要无效。未定义的项目元素 : content

xslt - 我们可以使用 Netbeans 7 执行 XSLT 2.0 吗?