撒克逊cli与氧气差异

时间:2016-05-11 19:45:58

标签: xslt saxon

我正在尝试将xml转换为html。使用氧气的Xpath如下:

<a href="#cite{count(preceding::citation) + 1}">
    <xsl:value-of select="count(preceding::citation) + 1"/>
</a>

基本上,这样做的目的是根据前面的参考数量插入编号的参考链接。

这在氧气中转化时起作用。

从命令行运行时,1是所有链接的输出。

命令行命令我试过看起来像这样:

java  -jar /usr/share/java/saxon9he.jar -s:report1.xml -xsl:test.xsl -o:output4.html -t

我也试过saxon9ee:

java -cp /usr/share/java/saxon9ee.jar com.saxonica.Transform -s:report1.xml -xsl:test.xsl -o:output3.html -t

感谢任何帮助!

test.xsl可以在这里找到 http://pastebin.com/6qZeEgD8
report1.xml
http://pastebin.com/5SMY8c7W
contentconfig.xml
http://pastebin.com/A2etm4Cr

以下是-t输出:

 Saxon-HE 9.7.0.4J from Saxonica
 Java version 1.7.0_79
 Stylesheet compilation time:    1.59928s (1599.280903ms)
 Processing file:/root /CRIReportProject/cpreport.xml
 Using parser  com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
 Building tree for file:/root/CRIReportProject/cpreport.xml using   class net.sf.saxon.tree.tiny.TinyBuilder
 Tree built in 1.296529ms
 Tree size: 27 nodes, 54 characters, 5 attributes
 URIResolver.resolve href="contentconfig.xml" base="file:/root/CRIReportProject/cptest.xsl"
 Building tree for file:/root/CRIReportProject/contentconfig.xml using class net.sf.saxon.tree.tiny.TinyBuilder
 Tree built in 3.144498ms
 Tree size: 28 nodes, 161 characters, 6 attributes
 Execution time: 131.347609ms

使用的内存:8428592

1 个答案:

答案 0 :(得分:1)

您正在使用match =&#34;方法&#34;在模板规则中执行count(preceding::citation),并且评估的上下文项是文档<method>中的report1.xml元素。本文档不包含<citation>个元素,因此count(preceding::citation)返回零是完全合理的。您周围的<xsl:if>会查看其他文档contentconfig.xml,但它不会更改该文档的上下文。也许xsl:if应该更改为xsl:for-each,但之后您还需要进行其他更改,因为代码也在寻找sup/a/@id之类的元素,而不是count(preceding::citation)+1存在于任一源文档中。

我不知道为什么这个代码在oXygen中应该有不同的行为。

顺便说一句,如果您确实将xsl:if更改为xsl:for-each,那么您可以将position()更改为{{1}},这样效率会更高。