XPATH表达式和Saxon集合()函数

时间:2016-11-10 19:39:06

标签: xslt xpath saxon

我在Saxon中使用collection()函数时遇到了困难。我想基于目录中的所有XML文件生成文本报告。我已经创建了一个命名模板,我从命令行传递给样式表。我能够输出带有标题的文本文件,但似乎XPATH表达式没有拾取单个元素。

这是XML:

<?xml version='1.0'?>
<document form='Submission'>
    <item name='FiscalYear'><text>2012</text></item>
    <item name='RequestType'><text>General</text></item>
    <item name='LeadMinistry'><text>Ministry of Truth</text></item>
    <item name='MinRef'><text>67890</text></item>
    <item name='LogNo'><text>12345</text></item>
    <item name='Division'><text>IFSB</text></item>
    <item name='Branch'><text>MEI</text></item>
</document>

这是XSLT:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
    <xsl:variable name="newline">
        <xsl:text>
</xsl:text>
    </xsl:variable>
    <xsl:param name="input-dir" select="'file:///C:\path\to\XML\input\files\'"/>
    <xsl:template name="main">
        <xsl:variable name="input-docs" select="collection(iri-to-uri(concat($input-dir, '?select=*.xml')))"/>
        <xsl:value-of select="'LogNo|MinRef|FiscalYear|RequestType|Division|Branch|LeadMinistry'"/>
        <xsl:value-of select="$newline"/>
        <xsl:for-each select="$input-docs/document[@form = 'Submission']">
            <xsl:value-of select="concat(item[@name = 'LogNo']/text, '| ')"/>
            <xsl:value-of select="concat(item[@name = 'MinRef']/text, '| ')"/>
            <xsl:value-of select="concat(item[@name = 'FiscalYear']/text, '| ')"/>
            <xsl:value-of select="concat(item[@name = 'RequestType']/text, '| ')"/>
            <xsl:value-of select="concat(item[@name = 'Division']/text, '| ')"/>
            <xsl:value-of select="concat(item[@name = 'Branch']/text, '| ')"/>
            <xsl:value-of select="concat(item[@name = 'LeadMinistry']/text, '| ')"/>
            <xsl:value-of select="$newline"/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

1 个答案:

答案 0 :(得分:0)

URI使用所有正斜杠,因此将UITextField更改为UITextField