使用xslt处理多个xml文件时的额外行

时间:2014-10-17 08:59:34

标签: xslt

我有以下xml文件:

File01:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FirstTag>
    <SecondTag>
        <Name>MyName</Name>
        <Age>Age</Age>
    </SecondTag>
</FirstTag>

File02:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Export>
    <Module>
        <Object>
            <CreatedBy>FullName</CreatedBy>
            <CreatedOn>2009-07-07</CreatedOn>
            <Description>SomeDescription</Description>
        </Object>
    </Module>
</Export>

主档案:

<?xml version="1.0" encoding="UTF-8"?>
<index>
    <entry>file01</entry>
    <entry>file02</entry>
</index>

我想使用以下xsl组合它们:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />

<xsl:template match="index">
    <NEW-XML>
        <xsl:apply-templates select="entry"/>
    </NEW-XML>
</xsl:template>

<xsl:template match="entry">
    <xsl:apply-templates select="document(concat(.,'.xml'))"/>
</xsl:template>

<xsl:template match="FirstTag/SecondTag">
    <FIRST-FILE>
        <xsl:value-of select="."/>
    </FIRST-FILE>
</xsl:template>

<xsl:template match="Export/Module/Object">
    <SECOND-FILE>
        <xsl:value-of select="."/>
    </SECOND-FILE>
</xsl:template>

</xsl:stylesheet>

在我进行转换后,我得到空行。有谁可以帮助我吗 ? 这是生成的文件:

<?xml version="1.0" encoding="utf-8"?>
<NEW-XML>
    <FIRST-FILE>
        MyName
        Age
    </FIRST-FILE>


        <SECOND-FILE>
            FullName
            2009-07-07
            SomeDescription
        </SECOND-FILE>

</NEW-XML>

1 个答案:

答案 0 :(得分:0)

可以通过包含

删除空行(可能*)
<xsl:strip-space elements="FirstTag Export Module"/>

位于样式表的顶层。

或者,添加以下模板:

 <xsl:template match="text()[not(normalize-space())]"/>

我同意Marcus Rickert对您的输出格式表达的担忧。

-
(*)取决于您的特定处理器