2015-08-13 107 views
1

預期輸出:XSLT編碼問題

<?xml version="1.0" encoding="utf-8"?> 
<Tablix1> 
    <SIDCode_Collection> 
     <SIDCode SIDCode="854-2013-17011949"> 
      <PName_Collection> 
       <PName PName="Test1" /> 
       <PName PName="Test2" /> 
      </PName_Collection> 
     </SIDCode> 
     <SIDCode SIDCode="854-2013-17011950"> 
      <PName_Collection> 
       <PName PName="Test3" /> 
       <PName PName="Test4" /> 
      </PName_Collection> 
     </SIDCode> 
    </SIDCode_Collection> 
</Tablix1> 

我寫的XSLT代碼爲以上輸出提到的SSR報告輸出轉換。 但我無法按預期得到輸出。有人可以幫我找到問題嗎?

目前這隻給出SIDCode。但它沒有在XML輸出中給出各自的Pname結果。

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

<xsl:template match="/"> 
    <xsl:for-each select="a:Report/a:Tablix1/a:SIDCode_Collection/a:SIDCode"> 
     <xsl:element name="{name(.)}"> 

      <xsl:for-each select="@SIDCode"> 
       <xsl:element name="{name(.)}"> 
        <xsl:value-of select="."/> 

        <xsl:for-each select="a:PName_Collection/a:PName"> 
          <xsl:element name="{name(.)}"> 
           <xsl:for-each select="@PName"> 
            <xsl:element name="{name(.)}"> 
             <xsl:value-of select="@PName"/> 
           </xsl:element> 
          </xsl:for-each> 
          </xsl:element> 
        </xsl:for-each> 
       </xsl:element> 
        </xsl:for-each> 
       </xsl:element> 
      </xsl:for-each> 
</xsl:template> 

+0

請張貼輸入,以便我們可以重現問題。 –

+0

以下是示例輸入:我想獲取SIDCode PNAME結果,PNAME結果<?xml version =「1.0」encoding =「utf-8」?> \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t Sri

+1

請不要張貼代碼我ñ評論 - 編輯您的問題,而不是。 –

回答

0

沒有源XML這是很難猜測,但我認爲至少有一個問題是這樣的:

隨着線<xsl:for-each select="@SIDCode">您設置屬性「SIDCode」爲背景節點。然後,在foreach循環中嘗試訪問節點a:PName_Collection/a:PName。這是行不通的,因爲a:PName_Collection/a:PName顯然沒有屬性節點@SIDCode的子節點。我建議刪除@<xsl:for-each select="@SIDCode">並訪問<xsl:element name="{name(.)}"><xsl:value-of select="."/>中的XPath表達式中的屬性節點。

+0

下面是示例:在提到的XSLT中有兩個集合。如此最適合的集合SID,我將從 之後,一個sid可以有多個Pnames,所以我試圖在第一個SID打印後循環所有的Pname。以上是相同的輸入,也是預期的輸出。因爲我正在嘗試將SSRS報告輸出轉換爲XML。 – Sri