2015-01-13 63 views
0

我試圖使用XSLT將XML文件轉換爲另一個XML,但我得到的只是一個空白頁面,我認爲我會在發佈此原因時做錯誤的事情「看起來您的文章主要是代碼「不會消失,我沒有任何關於我的問題的更多細節。使用XSLT將XML轉換爲另一個XML

我試圖改變這個XML

<?xml version="1.0" encoding="utf-8"?> 
 
<?xml-stylesheet type="text/xsl" href="xslt.xslt"?> 
 
<ForskoleAnsokan> 
 
    
 
    <Vardnadshavare> 
 
    <Vardtagare> 
 
     <Fornamn>Arne</Fornamn> 
 
     <Efternamn>Jonsson</Efternamn> 
 
     <Personnummer>8802202220</Personnummer> 
 
     <Adress>Galavägen 13</Adress> 
 
     <Postnummer>46444</Postnummer> 
 
     <Postort>Trandhatan</Postort> 
 
     <Kontakt>072283832</Kontakt> 
 
    </Vardtagare> 
 
    <Vardtagare> 
 
     <Fornamn>Gunilla</Fornamn> 
 
     <Efternamn>Jonsson</Efternamn> 
 
     <Personnummer>8702102110</Personnummer> 
 
     <Adress>Galavägen 13</Adress> 
 
     <Postnummer>46444</Postnummer> 
 
     <Postort>Trandhatan</Postort> 
 
     <Kontakt>073262613</Kontakt> 
 
    </Vardtagare> 
 
    </Vardnadshavare> 
 

 
</ForskoleAnsokan>

使用這種XSLT

<?xml version="1.0" encoding="utf-8"?> 
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
 
> 
 
    <xsl:output method="xml" indent="yes"/> 
 

 
    <xsl:template match="/"> 
 
     <begaranominkomstuppgift> 
 
     <xsl:for-each select="ForskoleAnsokan/Vardnadshavare/Vardtagare"> 
 
      <person> 
 
      <xsl:attribute name="Personnummer"> 
 
       <xsl:value-of select="@Personnummer"/> 
 
      </xsl:attribute> 
 
      <Fornamn> 
 
       <xsl:value-of select="@Fornamn"/> 
 
      </Fornamn> 
 
      <Efternamn> 
 
      <xsl:value-of select="@Efternamn"/> 
 
      </Efternamn> 
 
      </person> 
 
     </xsl:for-each> 
 
     </begaranominkomstuppgift> 
 
    </xsl:template> 
 
</xsl:stylesheet>

到這個XML

<begaranominkomstuppgift> 
 
        <person personnummer="8802202220"> 
 
          <fornamn>Arne</fornamn> 
 
          <efternamn>Jonsson</efternamn> 
 
         
 
    </person> 
 
        <person personnummer="8702102110"> 
 
          <fornamn>Gunilla</fornamn> 
 
          <efternamn>Jonsson</efternamn> 
 
         
 
    </person> 
 
</begaranominkomstuppgift>

但我得到的是一個空白頁

+0

爲什麼您的輸出中沒有數據? – usr2564301

+0

虐待在一秒鐘內添加它 – user3621898

+0

您的問題標題是一個非常無益的。 「使用XSLT將XML轉換爲另一種XML」適合於關於Stackoverflow的所有XSLT問題。也許你可以編輯它並嘗試找到更具體的東西? –

回答

1

如果要顯示文本,則需要將輸出更改爲html。您xslt.xsl文件改成這樣:

<xsl:template match="/"> 
    <begaranominkomstuppgift> 
    <xsl:for-each select="ForskoleAnsokan/Vardnadshavare/Vardtagare"> 
     <person> 
     <xsl:attribute name="Personnummer"> 
      <xsl:value-of select="Personnummer"/> 
     </xsl:attribute> 
     <Fornamn> 
      <xsl:value-of select="Fornamn"/> 
     </Fornamn> 
     <Efternamn> 
     <xsl:value-of select="Efternamn"/> 
     </Efternamn> 
     </person> 
    </xsl:for-each> 
    </begaranominkomstuppgift> 
</xsl:template> 

注意,我刪除了@,因爲它們被用來訪問屬性不是簡單的元素。

另外請注意,你的xml實際上已經在轉換,但正如你所說它顯示爲空白頁面,我假設你正在嘗試在瀏覽器中查看,然後需要將輸出更改爲html。例如,如果你檢查頁面,你會看到xml是輸出的。

另請注意,將輸出更改爲html將不會顯示實際的XML,但會將其解釋爲html,然後輸出一些內容。 要查看您的確切xml,只需右鍵單擊該頁面並單擊檢查。

另請注意,這不適用於Chrome。

+0

真棒,是鉻是問題,我其實在IE瀏覽器看到的結果。 – user3621898

+0

此處的更多信息:出於某種安全原因,Chrome塊阻止從同一文件夾訪問本地文件。您可以嘗試使用標記--allow-file-access-from-files打開chrome並查看它是否修復了問題。我沒有將它添加到答案中,因爲我不確定它是否會起作用並且無法測試atm。 –

1

更改您的XSL到這一點:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="/"> 
     <begaranominkomstuppgift> 
     <xsl:for-each select="ForskoleAnsokan/Vardnadshavare/Vardtagare"> 
      <person> 
      <xsl:attribute name="Personnummer"> 
       <xsl:value-of select="Personnummer"/> 
      </xsl:attribute> 
      <Fornamn> 
       <xsl:value-of select="Fornamn"/> 
      </Fornamn> 
      <Efternamn> 
      <xsl:value-of select="Efternamn"/> 
      </Efternamn> 
      </person> 
     </xsl:for-each> 
     </begaranominkomstuppgift> 
    </xsl:template> 
</xsl:stylesheet> 

你用在你的價值屬性訪問器(@) -of調用,但這些數據項只是元素,而不是屬性。

+0

另外,好奇什麼語言是? – OldProgrammer

+0

試過了,沒有什麼變化。 swedish – user3621898

+1

請參閱http://xsltransform.net/bdxtq2,這一改變應該有所幫助。但是,如果您在瀏覽器中運行XSLT,就像使用'<?xml-stylesheet?>'建議的那樣,那麼除非目標格式是瀏覽器知道的XHTML或SVG,否則不要指望XML到XML轉換的任何有用輸出渲染。 –