2012-12-05 24 views
0

我想通過XSL將一些HTML文件轉換爲我自己的XML格式。MSXSL錯誤,幾乎沒有任何輸出

爲此我使用HTML整潔清理輸入文件,然後變換他們html2xhtml爲XHTML,然後使用XSL腳本msxsl的XHTML文件轉換爲自己的格式。

但是,最後一步失敗,根本沒有錯誤信息(這是一個語義失敗;不是技術;-)):我的輸出文件只包含空標籤

我有一個這樣的問題,並從html標記中刪除了xmlns屬性,導致幾乎所有的在線轉換器正確處理我的文件。 MSXSL現在寫入以下錯誤消息:「DTD中不支持使用默認命名空間聲明屬性」。

找到我在這裏使用的文件:http://pastie.org/5483087

預先感謝您!

回答

1

那麼這是XSLT和XPath 1.0的常見問題解答,輸入XHTML文檔中的元素位於命名空間中,而您的XSLT沒有考慮到這一點。您需要將其更改爲例如

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xhtml="http://www.w3.org/1999/xhtml" 
exclude-result-prefixes="xhtml"> 
<xsl:template match="/"> 

    <stellenausschreibung> 
    <hochschule><xsl:value-of select="//xhtml:div[@id='contentText']/xhtml:img/@alt" /></hochschule> 
    <anbieter><xsl:value-of select="//xhtml:p[@id='ad_employer']" /></anbieter> 
    <typ><xsl:value-of select="//xhtml:h1" /></typ> 
    <bewerbungsschluss><xsl:value-of select="//xhtml:span[@id='ad_bewerbungsschluss']" /></bewerbungsschluss> 
    <erscheinungsdatum><xsl:value-of select="//xhtml:span[@class='job_published_at']" /></erscheinungsdatum> 

    <inhalt><xsl:value-of select="//xhtml:p[@id='ad_job']" /></inhalt> 
    </stellenausschreibung> 

</xsl:template> 
</xsl:stylesheet> 

的前綴(在我的例子xhtml),用於在樣式表中使用XHTML命名空間當然可以自由地選擇,但它必須使用一個與XSLT/XPath 1.0中的例如路徑//p總是在沒有命名空間中選擇p元素。

+0

這樣做的伎倆,謝謝! – phikes

相關問題