2017-04-10 193 views
2

我已經嘗試將以下XML轉換爲使用創建的XSLT樣式表的另一個XML文檔。輸出沒有給我我想要的,輸出不是正確的xml節點,也不是輸出標籤。定義XSLT以將XML轉換爲XML

請有人幫忙。

的XML文件被轉化看起來是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
     <Extract xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <Header> 
      <SubscriptionName>Auto_Clients</SubscriptionName> 
      <SubscriptionID>1731</SubscriptionID> 
      <ExecutionID>11987</ExecutionID> 
      <ODIFeed>Clients</ODIFeed> 
      <DataDateTime>2013-07-22T13:53:49</DataDateTime> 
      <FirmCodes> 
      <FirmCode>ZR</FirmCode> 
      </FirmCodes> 
      <Environment>INTEGRATION</Environment> 
      <NoOfRecords>1</NoOfRecords> 
      </Header> 
      <Clients> 
      <Client> 
      <FirmCode>ZR</FirmCode> 
      <ClientReference>ZR1071049</ClientReference> 
      <ClientType>02</ClientType> 
      <ShortName>ZRTEST</ShortName> 
      <FullName>CLTTEST</FullName> 
      </Client> 
      </Clients> 
     </Extract> 

我已經創建XSLT樣式表是這樣的

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 
    <xsl:output method="xml" indent="yes"/> 
     <xsl:template match="table"> 
     <Clients> 
      <xsl:for-each select="Client"> 
      <Client> 
      <FirmCode> 
       <xsl:value-of select="FirmCode" /> 
      </FirmCode> 
      <ClientReference> 
       <xsl:value-of select="ClientReference" /> 
      </ClientReference> 
      <ClientType> 
       <xsl:value-of select="ClientType" /> 
      </ClientType> 
      <ShortName> 
       <xsl:value-of select="ShortName" /> 
      </ShortName> 
      <FullName> 
       <xsl:value-of select="FullName" /> 
      </FullName> 
     </Client> 
     </xsl:for-each> 
     </Clients> 
    </xsl:template> 
    </xsl:stylesheet> 

我所需的輸出是一樣的東西:

<Clients> 
     <Client> 
     <FirmCode>ZR</FirmCode> 
     <ClientReference>ZR1071049</ClientReference> 
     <FullName>CLTTEST</FullName> 
     </Client> 
    </Clients> 

回答

3

您的輸入中沒有table元素,因此您的模板無法匹配d從不執行。你看到的純粹是應用built-in template rules的結果。

你需要改變:

<xsl:template match="table"> 

到:

<xsl:template match="Extract"> 

而且改變:

<xsl:for-each select="Client"> 

到:

<xsl:for-each select="Clients/Client"> 

,因爲Client不是Extract的孩子。

+0

這並沒有改變輸出,由於某種原因,我得到的輸出是文本,輸出的所有節點數據不僅僅是我感興趣的選擇節點,也沒有輸出標籤。 – DBoyDev

+0

@DBoyDev你可以看到它在這裏工作:http://xsltransform.net/naZXpWx –

+0

不,這個問題是別的 - 請參閱:http://stackoverflow.com/questions/34758492/xslt-transform-doesnt-work-直到-I-除去根節點/ 34762628#34762628 –