2014-09-19 45 views
0
<?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" encoding="utf-8" /> 

    <xsl:template match="linkGrp"> 
    <xsl:value-of select="normalize-space()"/> 
    <xsl:text>&#xa;</xsl:text> <!-- newline after sentences --> 
    </xsl:template> 

</xsl:stylesheet> 

當我嘗試以下cesAlign XML文檔運行上面的XSLT樣式表XSLT解析器/內容錯誤的XML文本文檔類型cesAlign

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE cesAlign PUBLIC "-//CES//DTD XML cesAlign//EN" ""> 
<cesAlign version="1.0"> 
<linkGrp targType="s" fromDoc="en/1976/7277/69682_1of1.xml.gz" toDoc="zh/1976/7277/4041906_1of1.xml.gz"> 
<link id="SL0" xtargets=";1" /> 
<link id="SL1" xtargets="1;2" /> 
<link id="SL2" xtargets="2;3" /> 
... 

我遇到這樣的錯誤:

parser error : Content error in the external subset 
<!DOCTYPE cesAlign PUBLIC "-//CES//DTD XML cesAlign//EN" ""> 

有一些地方我應該指定這個特定的輸入文檔類型(cesAlign)嗎?

回答

0

由於我不確定預期的輸出應該是什麼樣子 - <xsl:value-of select="normalize-space()"/>將不會產生任何結果,因爲它是一個函數,應該應用於字符串而不是節點 - 我只寫了一個小的XSLT獲取屬性值以及一些文本作爲標識符。指定是不需要輸入文檔類型:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:output method="text" encoding="utf-8" /> 

<xsl:template match="/*"> 
<xsl:apply-templates select="linkGrp "/> 
</xsl:template> 

<xsl:template match="linkGrp"> 
    <xsl:text>linkGrp&#xa;</xsl:text> 
    <xsl:text>targType: </xsl:text><xsl:value-of select="./@targType"/> 
    <xsl:text>, fromDoc: </xsl:text><xsl:value-of select="./@fromDoc"/> 
    <xsl:text>, toDoc: </xsl:text><xsl:value-of select="./@toDoc"/> 
    <xsl:apply-templates select="./link"/> 
</xsl:template> 

<xsl:template match="link"> 
    <xsl:text>&#xa;&#xa;link&#xa;id: </xsl:text> 
    <xsl:value-of select="./@id"/> 
    <xsl:text>, xtargets: </xsl:text> 
    <xsl:value-of select="./@xtargets"/> 
</xsl:template> 
</xsl:stylesheet> 

結果(toDoc只是手動移動以提高可讀性):

linkGrp 
targType: s, fromDoc: en/1976/7277/69682_1of1.xml.gz, 
      toDoc: zh/1976 /7277/4041906_1of1.xml.gz 

link 
id: SL0, xtargets: ;1 

link 
id: SL1, xtargets: 1;2 

link 
id: SL2, xtargets: 2;3 

如果所需的輸出應該完全不同的只是在你的問題更新此因爲不清楚您是否想要獲取鏈接組和鏈接的屬性值或整個節點副本的種類。

僅供參考:http://www.w3.org/TR/xpath-functions/#func-normalize-space