xsl:result-文档和从单一来源创建多个文件的问题

Problems with xsl:result-document and the creation of multiple files from a single source

我在尝试使 XSLT 2 的 result-document 元素正常工作时遇到问题。在这种情况下,我拥有的是一个 xml 文件,其中包含订户数据和一个旨在将其转换为 CSV 的 xsl。

我在解决方案中需要能够指定多个产品代码,并让 xsl 将源文档转换为多个文件,每个文件对应我选择的每个代码。

使用 Saxon 转换工具执行以下操作后,如下所示:

C:\XSLTransformer\Transform.exe -xsl:"Example - Multifile Writer.xsl" -s:"Example.xml"

我得到正在创建的文件,名称为 Data Export Flatfile - P-PRPL.txt 和 Data Export Flatfile - P-YLW.txt。这两个文件都包含字段 headers,但两个文件都不包含任何实际数据。

因此,重申一下 XSLT 的 pdts: 和 csv: 部分被正确使用,因为我能够呈现文件,但似乎提供的文档被忽略,或者转换工具以某种方式处理它时遇到问题。

我知道文件中的 XSLT 有效,因为我有一个“手动”版本,它可以正常工作,但是我希望能够自动生成一些文件,但给它一个一堆要处理的代码不是。

我怀疑问题可能在于将 $code 变量转移到 RenderRows 模板中,但我似乎无法确定它到底是什么。

感谢所有帮助。

谢谢。

Example - Multifile Writer.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" exclude-result-prefixes="#all" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:csv="csv:csv" xmlns:pdts="pdts:pdts">

<xsl:strip-space elements="*"/>
<xsl:output name="text" method="text" indent="no" omit-xml-declaration="yes" encoding="UTF-8"/>

<xsl:variable name="columnDelimiter" as="xs:string" select="'&#x09;'"/>
<xsl:variable name="rowDelimiter" as="xs:string" select="'&#x0D;&#x0A;'"/>

<!-- Modify this list to generate output for whatever other product codes you’re interested in -->
<!-- The solution will generate a new file for each product code. -->
<pdts:products>
    <product Code="P-PURPLE" FileCode="P-PRPL"/>
    <product Code="P-YELLOW" FileCode="P-YLW"/>     
</pdts:products>

<!-- Output Columns -->
<csv:columns>
    <column>Unique Reference Number</column>
    <column>Contact (Donor)</column>
    <column>Firstname</column>
    <column>Surname</column>
    <column>Company Name</column>
    <column>Address 1</column>
    <column>Address 2</column>
    <column>City</column>
    <column>PostCode</column>
    <column>State</column>
    <column>Country</column>
    <column>Email</column>
    <column>Mob Number</column>
    <column>Tel Number</column>
    <column>Product Offer</column>
    <column>Start Date</column>
    <column>End Date</column>
</csv:columns>

<xsl:variable name="path" as="xs:string" select="'C:\Temp\'"/>

<xsl:template match="/"> <!-- Match the root -->
    <xsl:for-each select="document('')/*/pdts:products/*">
        <xsl:variable name="filename" select="concat('file:///',$path,'Data Export Flatfile - ',@FileCode,'.txt')"/>
        <xsl:variable name="code" select="@Code"/>
        <xsl:result-document href="{$filename}" format="text">
            <!-- Output the CSV headers -->
            <xsl:call-template name="RenderColumnHeadings"/>                
            <!-- Output the individual rows -->
            <xsl:call-template name="RenderRows">
                <xsl:with-param name="prmPackage" select="/Subscribers/Organisations//Subscription[@PackageCode = $code]"/>
            </xsl:call-template>
        </xsl:result-document>
    </xsl:for-each>
</xsl:template>

<xsl:template name="RenderColumnHeadings">
    <xsl:for-each select="document('')/*/csv:columns/*">
        <xsl:value-of select="."/>
        <xsl:if test="position() != last()">
            <xsl:value-of select="$columnDelimiter"/>
        </xsl:if>
    </xsl:for-each>
    <xsl:value-of select="$rowDelimiter"/>
</xsl:template>

<xsl:template name="RenderRows">
    <xsl:param name="prmPackage"/>
    <xsl:for-each select="$prmPackage">

        <!-- Variables: Life made simpler -->
        <xsl:variable name="subscription" as="element(Subscription)" select="."/>
        <xsl:variable name="subscriber" as="element(BusinessUnit)" select="$subscription/../../."/>
        <xsl:variable name="organisation" as="element(Organisation)" select="$subscriber/../../."/>
        <xsl:variable name="memberAddress" as="element(Address)" select="$subscriber//Address[@Type='Subscription']/."/>

        <xsl:for-each select="$subscription//Recipient"><!-- Recipients -->
            <xsl:variable name="publication" as="element(Publication)" select="./../../."/>

            <xsl:value-of select="$subscription/@Id"/><!-- URN -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="concat($subscriber/Contact/@Forename,' ',$subscriber/Contact/@Surname)"/><!-- Contact (Donor) -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="substring-before(@ContactDisplayName,' ')"/><!-- Firstname -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="substring-after(@ContactDisplayName,' ')"/><!-- Surname -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="$organisation/@Name"/><!-- Company Name -->

            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="Address/Line1"/><!-- Address 1 -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="Address/Line2"/><!-- Address 2 -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="Address/City"/><!-- City -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="Address/PostCode"/><!-- PostCode -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="Address/State"/><!-- State -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="Address/Country"/><!-- Country -->

            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="@EmailAddress"/><!-- Email -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="@Cellular"/><!-- Mob Number -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="@Phone"/><!-- Tel Number -->

            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="$subscription/@Name"/><!-- Product Offer -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="$subscription/@WhenStarts"/><!-- Start Date -->
            <xsl:value-of select="$columnDelimiter"/>
            <xsl:value-of select="$subscription/@WhenExpires"/><!-- End Date -->

            <xsl:value-of select="$rowDelimiter"/>
        </xsl:for-each>
    </xsl:for-each>
</xsl:template>

Example Source Document
<Subscribers>
<Individuals>
    <Individual Id="16493" Name="Alpha Zulu">
        <Contact Id="16493" Forename="Alpha" Surname="Zulu" EmailAddress="alpha.zulu@alphabet.tld.dm" />
        <Subscriptions>
            <Subscription Id="181570" PackageCode="P-PURPLE" Name="Mike + Digital Edition" WhenCreated="2014-05-04T04:03:17.237" WhenStarts="2014-06-01T00:00:00" WhenExpires="2015-05-31T23:59:59.997" SubscriptionStatus="Current">
                <GenericProducts />
                <SecuredAccessProducts />
                <Publications>
                    <Publication Id="148042" PublicationID="46" ProductCode="M-PURPLE" VersionNumber="1" Name="Mike Paid 1 Year" IssueCount="0" Quantity="1" ProductClassId="4">
                        <Recipients>
                            <Recipient Id="153364" ContactId="16493" ContactTypeId="1" ContactDisplayName="Alpha Zulu" Copies="1" WhenCreated="2014-05-04T04:03:17.247" EmailAddress="gZulu@alphabet.tld.dm" >
                                <Address>
                                    <Line1>123 AAA ST</Line1>
                                    <Line2></Line2>
                                    <City>CCC</City>
                                    <State>SSS</State>
                                    <PostCode>9999</PostCode>
                                    <Country>Australia</Country>
                                </Address>
                            </Recipient>
                        </Recipients>
                    </Publication>
                    <Publication Id="148043" PublicationID="114" ProductCode="M-RED" VersionNumber="1" Name="Delta Complimentary" IssueCount="0" Quantity="1" ProductClassId="34">
                        <Recipients>
                            <Recipient Id="153365" ContactId="16493" ContactTypeId="1" ContactDisplayName="Alpha Zulu" Copies="1" WhenCreated="2014-05-04T04:03:17.267" EmailAddress="gZulu@alphabet.tld.dm" >
                                <Address>
                                    <Line1>123 AAA ST</Line1>
                                    <Line2></Line2>
                                    <City>CCC</City>
                                    <State>SSS</State>
                                    <PostCode>9999</PostCode>
                                    <Country>Australia</Country>
                                </Address>
                            </Recipient>
                        </Recipients>
                    </Publication>
                </Publications>
            </Subscription>
        </Subscriptions>
        <Addresses>
            <Address Type="Subscription">
                <Line1>123 AAA ST</Line1>
                <Line2></Line2>
                <City>CCC</City>
                <State>SSS</State>
                <PostCode>9999</PostCode>
                <Country>Australia</Country>
            </Address>
        </Addresses>
    </Individual>
    <Individual Id="23477" Name="Bravo Yankee">
        <Contact Id="23477" Forename="Bravo" Surname="Yankee" EmailAddress="bravo.yankee@alphabet.tld.dm" />
        <Subscriptions>
            <Subscription Id="186018" PackageCode="P-YELLOW" Name="Mike Essential Package 10" WhenCreated="2014-07-04T08:50:04.767" WhenStarts="2014-07-04T00:00:00" WhenExpires="2015-07-03T23:59:59.997" SubscriptionStatus="Current">
            <GenericProducts />
            <SecuredAccessProducts>
            <SecuredProduct Id="64886" SCAProductId="1" ProductCode="S-YELLOW" VersionNumber="1" MembershipTypeId="2" Name="Mike News.NET Standard 10" MaxMembers="10" LockedMemberCount="1" Quantity="1" ExternalName="Mike Standard 10" ProductClassId="1">
            <Members>
            <Member Id="16106772" Forename="Bravo" Surname="Yankee" EmailAddress="bravo.yankee@alphabet.tld.dm" />
            </Members>
            </SecuredProduct>
            </SecuredAccessProducts>
                <Publications>
                    <Publication Id="151954" PublicationID="46" ProductCode="M-PURPLE" VersionNumber="1" Name="Mike Paid 1 Year" IssueCount="12" Quantity="3" ExternalName="Monthly" ProductClassId="4">
                        <Recipients>
                            <Recipient Id="157514" ContactId="23477" ContactTypeId="1" ContactDisplayName="Bravo Yankee" Copies="1" WhenCreated="2014-07-04T08:50:05.493" EmailAddress="gYankee@alphabet.tld.dm" >
                                <Address>
                                    <Line1>123 AAA ST</Line1>
                                    <Line2></Line2>
                                    <City>CCC</City>
                                    <State>SSS</State>
                                    <PostCode>9999</PostCode>
                                    <Country>Australia</Country>
                                </Address>
                            </Recipient>
                            <Recipient Id="157515" ContactId="10226666" ContactTypeId="1" ContactDisplayName="Whiskey Zulu" Copies="2" WhenCreated="2014-07-04T08:50:05.787" EmailAddress="" >
                                <Address />
                            </Recipient>
                        </Recipients>
                    </Publication>
                </Publications>
            </Subscription>
        </Subscriptions>
        <Addresses>
            <Address Type="Subscription">
                <Line1>123 AAA ST</Line1>
                <Line2></Line2>
                <City>CCC</City>
                <State>SSS</State>
                <PostCode>9999</PostCode>
                <Country>Australia</Country>
            </Address>
        </Addresses>
    </Individual>
    <Individual Id="73120" Name="Alpha Hotel">
        <Contact Id="73120" Forename="Alpha" Surname="Hotel" EmailAddress="alpha.hotel@alphabet.tld.dm" />
        <Subscriptions>
            <Subscription Id="183293" PackageCode="P-PURPLE" Name="Mike + Digital Edition" WhenCreated="2014-06-03T04:03:40.483" WhenStarts="2014-07-01T00:00:00" WhenExpires="2015-06-30T23:59:59.997" SubscriptionStatus="Current">
                <GenericProducts />
                <SecuredAccessProducts />
                <Publications>
                    <Publication Id="149560" PublicationID="46" ProductCode="M-PURPLE" VersionNumber="1" Name="Mike Paid 1 Year" IssueCount="0" Quantity="1" ProductClassId="4">
                        <Recipients>
                            <Recipient Id="155023" ContactId="73120" ContactTypeId="1" ContactDisplayName="Alpha Hotel" Copies="1" WhenCreated="2014-06-03T04:03:40.503" EmailAddress="Alpha.harvey@alphabet.tld.dm" >
                                <Address>
                                <Line1>123 AAA ST</Line1>
                                <Line2></Line2>
                                <City>CCC</City>
                                <State>SSS</State>
                                <PostCode>9999</PostCode>
                                <Country>Australia</Country>
                                </Address>
                            </Recipient>
                        </Recipients>
                    </Publication>
                    <Publication Id="149561" PublicationID="114" ProductCode="M-RED" VersionNumber="1" Name="Delta Complimentary" IssueCount="0" Quantity="1" ProductClassId="34">
                        <Recipients>
                            <Recipient Id="155024" ContactId="73120" ContactTypeId="1" ContactDisplayName="Alpha Hotel" Copies="1" WhenCreated="2014-06-03T04:03:40.543" EmailAddress="Alpha.harvey@alphabet.tld.dm" >
                                <Address>
                                    <Line1>123 AAA ST</Line1>
                                    <Line2></Line2>
                                    <City>CCC</City>
                                    <State>SSS</State>
                                    <PostCode>9999</PostCode>
                                    <Country>Australia</Country>
                                </Address>
                            </Recipient>
                        </Recipients>
                    </Publication>
                </Publications>
            </Subscription>
        </Subscriptions>
        <Addresses>
            <Address Type="Subscription">
                <Line1>123 AAA ST</Line1>
                <Line2></Line2>
                <City>CCC</City>
                <State>SSS</State>
                <PostCode>9999</PostCode>
                <Country>Australia</Country>
            </Address>
        </Addresses>
    </Individual> 
</Individuals>
<Organisations>
    <Organisation Id="13" Name="Alpha Limited">
        <BusinessUnits>
            <BusinessUnit Id="560" Name="Bravo WA, Australia" Facsimile="">
                <Contact Id="1062276946" Forename="Kilo" Surname="Bravo" EmailAddress="kilo.bravo@alphabet.tld.dm" />
                <Agency />
                <Subscriptions>
                    <Subscription Id="168271" PackageCode="P-YELLOW" Name="Mike Essential Plus Package 25" WhenCreated="2014-01-24T04:03:02.103" WhenStarts="2014-02-21T00:00:00" WhenExpires="2015-02-20T23:59:59.997" SubscriptionStatus="Renewed">
                        <GenericProducts />
                    <SecuredAccessProducts>
                        <SecuredProduct Id="60181" SCAProductId="3" ProductCode="S-MNP1Y" VersionNumber="1" MembershipTypeId="3" Name="Mike News.NET Premium 25" MaxMembers="25" LockedMemberCount="1" Quantity="1" ExternalName="Mike Premium 25" ProductClassId="2">
                            <Members />
                        </SecuredProduct>
                    </SecuredAccessProducts>
                    <Publications>
                        <Publication Id="133606" PublicationID="46" ProductCode="M-PURPLE" VersionNumber="1" Name="Mike Paid 1 Year" IssueCount="0" Quantity="5" ProductClassId="4">
                            <Recipients>
                                <Recipient Id="138626" BusinessUnitId="560" ContactId="8342" ContactTypeId="2" ContactDisplayName="Indigo Charlie" Copies="1" WhenCreated="2014-01-24T04:03:02.410" EmailAddress="indigo.charlie@alphabet.tld.dm" >
                                    <Address>
                                        <Line1>123 AAA ST</Line1>
                                        <Line2></Line2>
                                        <City>CCC</City>
                                        <State>SSS</State>
                                        <PostCode>9999</PostCode>
                                        <Country>Australia</Country>
                                    </Address>
                                </Recipient>
                                <Recipient Id="138627" BusinessUnitId="4807005" ContactId="121315" ContactTypeId="2" ContactDisplayName="Mike Sierra" Copies="1" WhenCreated="2014-01-24T04:03:02.423" EmailAddress="mike.sierra@alphabet.tld.dm" >
                                    <Address>
                                        <Line1>123 AAA ST</Line1>
                                        <Line2></Line2>
                                        <City>CCC</City>
                                        <State>SSS</State>
                                        <PostCode>9999</PostCode>
                                        <Country>Australia</Country>
                                    </Address>
                                </Recipient>
                                <Recipient Id="138628" BusinessUnitId="3844766" ContactId="149273" ContactTypeId="2" ContactDisplayName="Papa Delta" Copies="1" WhenCreated="2014-01-24T04:03:02.437" EmailAddress="papa.delta@alphabet.tld.dm" >
                                    <Address>
                                        <Line1>123 AAA ST</Line1>
                                        <Line2></Line2>
                                        <City>CCC</City>
                                        <State>SSS</State>
                                        <PostCode>9999</PostCode>
                                        <Country>Australia</Country>
                                    </Address>
                                </Recipient>
                                <Recipient Id="138658" BusinessUnitId="4807007" ContactId="18761725" ContactTypeId="2" ContactDisplayName="Sierra Bravo" Copies="2" WhenCreated="2014-01-24T13:58:06.787" EmailAddress="sierra.bravo@alphabet.tld.dm" >
                                    <Address>
                                        <Line1>123 AAA ST</Line1>
                                        <Line2></Line2>
                                        <City>CCC</City>
                                        <State>SSS</State>
                                        <PostCode>9999</PostCode>
                                        <Country>Australia</Country>
                                    </Address>
                                </Recipient>
                            </Recipients>
                        </Publication>
                    </Publications>
                    </Subscription>
                    <Subscription Id="202338" PackageCode="P-YELLOW" Name="Mike Essential Plus Package 25" WhenCreated="2015-01-24T04:03:04.277" WhenStarts="2015-02-21T00:00:00" WhenExpires="2016-02-20T23:59:59.997" SubscriptionStatus="Current">
                    <GenericProducts />
                        <SecuredAccessProducts>
                            <SecuredProduct Id="71637" SCAProductId="3" ProductCode="S-MNP1Y" VersionNumber="1" MembershipTypeId="3" Name="Mike News.NET Premium 25" MaxMembers="25" LockedMemberCount="1" Quantity="1" ExternalName="Mike Premium 25" ProductClassId="2">
                                <Members>
                                    <Member Id="5351" Forename="Indigo" Surname="Charlie" EmailAddress="indigo.charlie@alphabet.tld.dm" />
                                    <Member Id="7755" Forename="Kilo" Surname="Bravo" EmailAddress="kilo.bravo@alphabet.tld.dm" />
                                    <Member Id="7756" Forename="Lima" Surname="Charlie" EmailAddress="lima.charlie@alphabet.tld.dm" />
                                    <Member Id="7758" Forename="Tango" Surname="Romeo" EmailAddress="tango.romeo@alphabet.tld.dm" />
                                    <Member Id="104333" Forename="Mike" Surname="Sierra" EmailAddress="mike.sierra@alphabet.tld.dm" />
                                    <Member Id="109664" Forename="Delta" Surname="Mike" EmailAddress="delta.mike@alphabet.tld.dm" />
                                    <Member Id="128216" Forename="Papa" Surname="Delta" EmailAddress="papa.delta@alphabet.tld.dm" />
                                    <Member Id="9599153" Forename="Sierra" Surname="Bravo" EmailAddress="sierra.bravo@alphabet.tld.dm" />
                                    <Member Id="9644184" Forename="Mike" Surname="Bravo" EmailAddress="mike.bravo@alphabet.tld.dm" />
                                    <Member Id="12953504" Forename="Sierra" Surname="Papa" EmailAddress="sierra.papa@alphabet.tld.dm" />
                                    <Member Id="12953505" Forename="Kilo" Surname="Mike" EmailAddress="kilo.mike@alphabet.tld.dm" />
                                    <Member Id="12953927" Forename="Alpha" Surname="Juliet" EmailAddress="alpha.juliet@alphabet.tld.dm" />
                                    <Member Id="16059657" Forename="Kilo" Surname="Delta" EmailAddress="kilo.delta@alphabet.tld.dm" />
                                    <Member Id="16061101" Forename="Bravo" Surname="Whiskey" EmailAddress="bravo.whiskey@alphabet.tld.dm" />
                                    <Member Id="16061102" Forename="November" Surname="Echo" EmailAddress="november.echo@alphabet.tld.dm" />
                                    <Member Id="16350124" Forename="Kilo" Surname="Papa" EmailAddress="kilo.papa@alphabet.tld.dm" />
                                    <Member Id="16350125" Forename="November" Surname="Charlie" EmailAddress="november.charlie@alphabet.tld.dm" />
                                    <Member Id="16372932" Forename="Hotel" Surname="Hotel" EmailAddress="hotel.hotel@alphabet.tld.dm" />
                                    <Member Id="16372933" Forename="Sierra" Surname="Juliet" EmailAddress="sierra.juliet@alphabet.tld.dm" />
                                    <Member Id="38777399" Forename="Sierra" Surname="Romeo" EmailAddress="sierra.romeo@alphabet.tld.dm" />
                                </Members>
                            </SecuredProduct>
                        </SecuredAccessProducts>
                        <Publications>
                            <Publication Id="166113" PublicationID="46" ProductCode="M-GREEN" VersionNumber="1" Name="Mike Paid 1 Year" IssueCount="0" Quantity="5" ProductClassId="4">
                                <Recipients>
                                    <Recipient Id="172383" BusinessUnitId="560" ContactId="8342" ContactTypeId="2" ContactDisplayName="Indigo Charlie" Copies="1" WhenCreated="2015-01-24T04:03:04.287" EmailAddress="ichalmers@alphabet.tld.dm" >
                                        <Address>
                                            <Line1>123 AAA ST</Line1>
                                            <Line2></Line2>
                                            <City>CCC</City>
                                            <State>SSS</State>
                                            <PostCode>9999</PostCode>
                                            <Country>Australia</Country>
                                        </Address>
                                    </Recipient>
                                    <Recipient Id="172384" BusinessUnitId="4807005" ContactId="121315" ContactTypeId="2" ContactDisplayName="Mike Sierra" Copies="1" WhenCreated="2015-01-24T04:03:04.290" EmailAddress="mike.sierra@alphabet.tld.dm" >
                                        <Address>
                                            <Line1>123 AAA ST</Line1>
                                            <Line2></Line2>
                                            <City>CCC</City>
                                            <State>SSS</State>
                                            <PostCode>9999</PostCode>
                                            <Country>Australia</Country>
                                        </Address>
                                    </Recipient>
                                    <Recipient Id="172385" BusinessUnitId="3844766" ContactId="149273" ContactTypeId="2" ContactDisplayName="Papa Delta" Copies="1" WhenCreated="2015-01-24T04:03:04.297" EmailAddress="papa.delta@alphabet.tld.dm" >
                                        <Address>
                                            <Line1>123 AAA ST</Line1>
                                            <Line2></Line2>
                                            <City>CCC</City>
                                            <State>SSS</State>
                                            <PostCode>9999</PostCode>
                                            <Country>Australia</Country>
                                        </Address>
                                    </Recipient>
                                    <Recipient Id="172386" BusinessUnitId="4807007" ContactId="18761725" ContactTypeId="2" ContactDisplayName="Sierra Bravo" Copies="2" WhenCreated="2015-01-24T04:03:04.303" EmailAddress="sierra.bravo@alphabet.tld.dm" >
                                        <Address>
                                            <Line1>123 AAA ST</Line1>
                                            <Line2></Line2>
                                            <City>CCC</City>
                                            <State>SSS</State>
                                            <PostCode>9999</PostCode>
                                            <Country>Australia</Country>
                                        </Address>
                                    </Recipient>
                                </Recipients>
                            </Publication>
                        </Publications>
                    </Subscription>
                </Subscriptions>
                <Addresses>
                    <Address Type="Subscription">
                        <Line1>123 AAA ST</Line1>
                        <Line2 />
                        <City>CCC</City>
                        <State>SSS</State>
                        <PostCode>9999</PostCode>
                        <Country>Australia</Country>
                    </Address>
                    <Address Type="Standard">
                        <Line1>123 AAA ST</Line1>
                        <Line2 />
                        <City>CCC</City>
                        <State>SSS</State>
                        <PostCode>9999</PostCode>
                        <Country>Australia</Country>
                    </Address>
                    <Address Type="Charlie Register">
                        <Line1>123 AAA ST</Line1>
                        <Line2 />
                        <City>CCC</City>
                        <State>SSS</State>
                        <PostCode>9999</PostCode>
                        <Country>Australia</Country>
                    </Address>
                </Addresses>
            </BusinessUnit>
        </BusinessUnits>
    </Organisation>
    <Organisation Id="17" Name="Bravo Limited">
        <BusinessUnits>
            <BusinessUnit Id="546" Name="Echo PERTH, WA, Australia" MSDynamicsId="35352" Facsimile="61 8 6218 8880">
                <Contact Id="1084704665" Forename="Hotel" Surname="Whiskey" EmailAddress="hotel.whiskey@alphabet.tld.dm" />
                <Agency />
                <Subscriptions>
                    <Subscription Id="176647" Name="Mike Paid 1 Year" WhenCreated="2014-04-14T10:14:43.287" WhenStarts="2014-06-21T00:00:00" WhenExpires="2015-06-20T23:59:59.997" SubscriptionStatus="Current">
                        <GenericProducts />
                        <SecuredAccessProducts />
                        <Publications>
                            <Publication Id="142935" PublicationID="46" ProductCode="M-GREEN" VersionNumber="1" Name="Mike Paid 1 Year" IssueCount="12" Quantity="10" ProductClassId="4">
                                <Recipients>
                                    <Recipient Id="148228" BusinessUnitId="546" ContactId="1062276276" ContactTypeId="2" ContactDisplayName="Romeo Charlie" Copies="6" WhenCreated="2014-04-14T11:51:17.710" EmailAddress="romeo.charlie@alphabet.tld.dm" >
                                        <Address>
                                            <Line1>123 AAA ST</Line1>
                                            <Line2></Line2>
                                            <City>CCC</City>
                                            <State>SSS</State>
                                            <PostCode>9999</PostCode>
                                            <Country>Australia</Country>
                                        </Address>
                                    </Recipient>
                                    <Recipient Id="175024" BusinessUnitId="4807112" ContactId="10226666" ContactTypeId="2" ContactDisplayName="Whiskey Zulu" Copies="4" WhenCreated="2015-02-19T14:22:01.540" EmailAddress="" >
                                        <Address />
                                    </Recipient>
                                </Recipients>
                            </Publication>
                        </Publications>
                    </Subscription>
                </Subscriptions>
                <Addresses>
                    <Address Type="Subscription">
                        <Line1>123 AAA ST</Line1>
                        <Line2 />
                        <City>CCC</City>
                        <State>SSS</State>
                        <PostCode>9999</PostCode>
                        <Country>Australia</Country>
                    </Address>
                    <Address Type="Standard">
                        <Line1>123 AAA ST</Line1>
                        <Line2 />
                        <City>CCC</City>
                        <State>SSS</State>
                        <PostCode>9999</PostCode>
                        <Country>Australia</Country>
                    </Address>
                    <Address Type="Charlie Register">
                        <Line1>123 AAA ST</Line1>
                        <Line2 />
                        <City>CCC</City>
                        <State>SSS</State>
                        <PostCode>9999</PostCode>
                        <Country>Australia</Country>
                    </Address>
                </Addresses>
            </BusinessUnit>
        </BusinessUnits>
    </Organisation>
    <Organisation Id="32" Name="Delta Limited">
        <BusinessUnits>
            <BusinessUnit Id="70579" Name="Mike VIC, Australia" Facsimile="">
                <Contact Id="17874450" Forename="Kilo" Surname="Foxtrot" EmailAddress="kilo.foxtrot@alphabet.tld.dm" />
                <Agency />
                <Subscriptions>
                    <Subscription Id="173024" PackageCode="P-YELLOW" Name="Mike Essential Plus Package 25" WhenCreated="2014-03-19T04:04:28.137" WhenStarts="2014-04-16T00:00:00" WhenExpires="2015-04-15T23:59:59.997" SubscriptionStatus="Current">
                        <GenericProducts />
                        <SecuredAccessProducts>
                            <SecuredProduct Id="61926" SCAProductId="3" ProductCode="S-MNP1Y" VersionNumber="1" MembershipTypeId="3" Name="Mike News.NET Premium 25" MaxMembers="25" LockedMemberCount="1" Quantity="1" ExternalName="Mike Premium 25" ProductClassId="2">
                                <Members>
                                    <Member Id="514" Forename="Romeo" Surname="Lima" EmailAddress="romeo.lima@alphabet.tld.dm" />
                                    <Member Id="104734" Forename="Romeo" Surname="Mike" EmailAddress="romeo.mike@alphabet.tld.dm" />
                                    <Member Id="1007933" Forename="Romeo" Surname="Bravo" EmailAddress="romeo.bravo@alphabet.tld.dm" />
                                    <Member Id="1087600" Forename="Delta" Surname="Foxtrot" EmailAddress="delta.foxtrot@alphabet.tld.dm" />
                                    <Member Id="2408219" Forename="Alpha" Surname="Lima" EmailAddress="alpha.lima@alphabet.tld.dm" />
                                    <Member Id="9597365" Forename="Kilo" Surname="Foxtrot" EmailAddress="kilo.foxtrot@alphabet.tld.dm" />
                                    <Member Id="9983336" Forename="Juliet" Surname="Delta" EmailAddress="juliet.delta@alphabet.tld.dm" />
                                    <Member Id="9983338" Forename="Alpha" Surname="Charlie" EmailAddress="alpha.charlie@alphabet.tld.dm" />
                                    <Member Id="12975663" Forename="Sierra" Surname="Juliet" EmailAddress="sierra.juliet@alphabet.tld.dm" />
                                    <Member Id="16349491" Forename="Alpha" Surname="Mike" EmailAddress="alpha.mike@alphabet.tld.dm" />
                                </Members>
                            </SecuredProduct>
                        </SecuredAccessProducts>
                        <Publications>
                            <Publication Id="137472" PublicationID="46" ProductCode="M-GREEN" VersionNumber="1" Name="Mike Paid 1 Year" IssueCount="0" Quantity="5" ProductClassId="4">
                            <Recipients>
                                <Recipient Id="142694" BusinessUnitId="70579" ContactId="23270" ContactTypeId="2" ContactDisplayName="Bravo Hotel" Copies="5" WhenCreated="2014-03-19T04:04:28.240" EmailAddress="" >
                                    <Address>
                                        <Line1>123 AAA ST</Line1>
                                        <Line2></Line2>
                                        <City>CCC</City>
                                        <State>SSS</State>
                                        <PostCode>9999</PostCode>
                                        <Country>Australia</Country>
                                    </Address>
                                </Recipient>
                            </Recipients>
                            </Publication>
                        </Publications>
                    </Subscription>
                </Subscriptions>
                <Addresses>
                    <Address Type="Subscription">
                        <Line1>123 AAA ST</Line1>
                        <Line2 />
                        <City>CCC</City>
                        <State>SSS</State>
                        <PostCode>9999</PostCode>
                        <Country>Australia</Country>
                    </Address>
                    <Address Type="Standard">
                        <Line1>123 AAA ST</Line1>
                        <Line2 />
                        <City>CCC</City>
                        <State>SSS</State>
                        <PostCode>9999</PostCode>
                        <Country>Australia</Country>
                    </Address>
                    <Address Type="Charlie Register">
                        <Line1>123 AAA ST</Line1>
                        <Line2 />
                        <City>CCC</City>
                        <State>SSS</State>
                        <PostCode>9999</PostCode>
                        <Country>Australia</Country>
                    </Address>
                </Addresses>
            </BusinessUnit>
        </BusinessUnits>
    </Organisation>     
</Organisations>

改变

<xsl:template match="/"> <!-- Match the root -->
    <xsl:for-each select="document('')/*/pdts:products/*">
        <xsl:variable name="filename" select="concat('file:///',$path,'Data Export Flatfile - ',@FileCode,'.txt')"/>
        <xsl:variable name="code" select="@Code"/>
        <xsl:result-document href="{$filename}" format="text">
            <!-- Output the CSV headers -->
            <xsl:call-template name="RenderColumnHeadings"/>                
            <!-- Output the individual rows -->
            <xsl:call-template name="RenderRows">
                <xsl:with-param name="prmPackage" select="/Subscribers/Organisations//Subscription[@PackageCode = $code]"/>
            </xsl:call-template>
        </xsl:result-document>
    </xsl:for-each>
</xsl:template>

<xsl:template match="/"> <!-- Match the root -->
    <xsl:variable name="root" select="."/>
    <xsl:for-each select="document('')/*/pdts:products/*">
        <xsl:variable name="filename" select="concat('file:///',$path,'Data Export Flatfile - ',@FileCode,'.txt')"/>
        <xsl:variable name="code" select="@Code"/>
        <xsl:result-document href="{$filename}" format="text">
            <!-- Output the CSV headers -->
            <xsl:call-template name="RenderColumnHeadings"/>                
            <!-- Output the individual rows -->
            <xsl:call-template name="RenderRows">
                <xsl:with-param name="prmPackage" select="$root/Subscribers/Organisations//Subscription[@PackageCode = $code]"/>
            </xsl:call-template>
        </xsl:result-document>
    </xsl:for-each>
</xsl:template>