2017-07-12 3 views
0

XSLTを使用してXMLファイルからデータを動的に出力する必要があります。私たちはいくつかの異なる構造のデータを持っており、各セクションを明示的にループする必要はなく、コードの1つのブロックでそれを行う方法があるかどうかは疑問でした。これは私が受け取るXMLの例です。XSLTを使用したXML構造の出力

 <IntermediaryInfo> 
      <PersonalInformation> 
       <Title>str1234</Title> 
       <FirstName>str1234</FirstName> 
       <Surname>str1234</Surname> 
       <DateofBirth>2012-12-13</DateofBirth> 
       <WorkTelephoneNumber>str1234</WorkTelephoneNumber> 
      </PersonalInformation> 
      <CompanyInformation> 
       <CompanyName>str1234</CompanyName> 
       <CompanyFCANumber>str1234</CompanyFCANumber> 
      </CompanyInformation> 
      <CompanyAddress> 
       <PostCode>str1234</PostCode> 
       <HouseNumber>str1234</HouseNumber> 
       <HouseName>str1234</HouseName> 
       <AddressLine1>str1234</AddressLine1> 
       <AddressLine2>str1234</AddressLine2> 
      </CompanyAddress> 
      <CompanyPermissionLevels> 
       <AdvisingonConsumer>str1234</AdvisingonConsumer> 
       <ArrangingConsumerBuytoLetmortgageContracts>str1234</ArrangingConsumerBuytoLetmortgageContracts> 
      </CompanyPermissionLevels> 
      <PrincipleFirm> 
       <FirmName>str1234</FirmName> 
       <FirmFCANumber>123</FirmFCANumber> 
      </PrincipleFirm> 
      <LendingPartner>str1234</LendingPartner> 
     </IntermediaryInfo> 

は、XSLTを使用して、各ノードと出力をループする方法ノード名と値はありますか?したがって、次のようになります。

PersonalInformation 
    ------------------- 
    Title: str1234 
    FirstName: str1234 
    Surname: str1234 
    DateofBirth: 2012-12-13 
    WorkTelephoneNumber: str1234 

    CompanyInformation 
    ------------------ 
    CompanyName: str1234 
    CompanyFCANumber: str1234 

ご協力いただけると助かります。ありがとう。ここで

+0

あなたがする必要がありますそのような変換のための特定の規則を提供する。例えば、出力に 'LendingPartner'をどのように提示すべきですか?ここに示す階層より深い階層を持つ他のセクションがある場合はどうなりますか? –

+1

XSL-FOを使用して書式設定されたPDFを作成しているのか、単にテキストを作成していますか?テキストのみの場合は、 'xsl-fo'タグを適用する必要はありません。 –

+0

より深い階層はなく、LendingPartnerはLendingPartner:str1234のように残りの部分と同じように出力されます。それは単なるテキストです、ごめんなさい、私はxsl-foタグを削除します。 –

答えて

0

はあなたの出発点として使用することができますものです:

XSLTご入力の例に適用1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text" encoding="UTF-8" /> 
<xsl:strip-space elements="*"/> 

<xsl:template match="*"> 
    <xsl:param name="indent"/> 
    <xsl:value-of select="$indent" /> 
    <xsl:value-of select="name()" /> 
    <xsl:text>&#10;</xsl:text> 
    <xsl:apply-templates> 
     <xsl:with-param name="indent" select="concat($indent, '&#9;')"/> 
    </xsl:apply-templates> 
</xsl:template> 

<xsl:template match="*[text()]"> 
    <xsl:param name="indent"/> 
    <xsl:value-of select="$indent" /> 
    <xsl:value-of select="name()" /> 
    <xsl:text>: </xsl:text> 
    <xsl:value-of select="." /> 
    <xsl:text>&#10;</xsl:text> 
</xsl:template> 

</xsl:stylesheet> 

、結果は以下のようになります。

IntermediaryInfo 
    PersonalInformation 
     Title: str1234 
     FirstName: str1234 
     Surname: str1234 
     DateofBirth: 2012-12-13 
     WorkTelephoneNumber: str1234 
    CompanyInformation 
     CompanyName: str1234 
     CompanyFCANumber: str1234 
    CompanyAddress 
     PostCode: str1234 
     HouseNumber: str1234 
     HouseName: str1234 
     AddressLine1: str1234 
     AddressLine2: str1234 
    CompanyPermissionLevels 
     AdvisingonConsumer: str1234 
     ArrangingConsumerBuytoLetmortgageContracts: str1234 
    PrincipleFirm 
     FirmName: str1234 
     FirmFCANumber: 123 
    LendingPartner: str1234 
関連する問題