2015-09-25 85 views
0

我在XSLT全新的。所以我試圖做一個應該輸出元素值的例子。輸出格式是純文本格式。 這是XML文件名爲cdcatalog.xml:爲什麼這個代碼不輸出任何XSLT

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="catalog.xsl"?> 
<catalog> 
    <cd> 
     <title>Empire</title> 
     <artist>Bob Dylan</artist> 
     <country>USA</country> 
     <company>Columbia</company> 
     <price>10.90</price> 
     <year>1985</year> 
    </cd> 
    <cd> 
     <title>Hide your heart</title> 
     <artist>Bonnie Tyler</artist> 
     <country> 
      <europe_country>Bulgaria</europe_country> 
      <azia_coutry>China</azia_coutry> 
     </country> 
     <company>CBS Records</company> 
     <price>9.90</price> 
     <year>1988</year> 
    </cd> 
</catalog> 

這是cdcatalog.xsl稱爲XSL文件

<?xml version="1.0" encoding="UTF-8"?> 

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="text"/> 
    <xsl:template match="/"> 
     <xsl:for-each select="cd"> 
      <xsl:value-of select="title"/> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

我期望的輸出是這樣的

Empire 
Hide your heart 

但是輸出窗口中沒有任何內容。 我錯在哪裏? 預先感謝您。

回答

1

在編寫模板,嘗試目標(即比賽)直接與你所感興趣的內容(title元素,在這種情況下)。

XSLT樣式表

正如你所看到的,是匹配text()第二個模板。如果我們忽略它,從輸入文檔中的所有文本內容輸出,因爲那是XSLT處理器文本節點的默認行爲

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="text" encoding="UTF-8" /> 

    <xsl:template match="title"> 
     <xsl:value-of select="."/> 
     <xsl:text>&#10;</xsl:text> 
    </xsl:template> 

    <xsl:template match="text()"/> 

</xsl:transform> 

文本輸出

Empire 
Hide your heart 

嘗試這種解決方案的在線here


順便說一句,請確保您的元素一貫命名。稱爲azia_coutry一個元素是從asia_coutryasia_country完全不同。

相關問題