2012-05-18 39 views
0

我有一個簡單的XML文件相關聯的所有樣式信息:XML樣式表:此XML文件沒有出現有它

<?xml version="1.0" encoding="UTF-8"?> 
<Document> 
    <Page x1="71" y1="120" x2="527" y2="765" type="page" chunkCount="1" pageNumber="1" wordCount="1">...</Page> 
     <Chunk x1="206" y1="120" x2="388" y2="144" type="unclassified"> 
      <Word x1="206" y1="120" x2="214" y2="144" font="Times-Roman" style="font-size:22pt">WORD</Word> 
     </Chunk>  
</Document> 

當試圖查看它,我的瀏覽器告訴的我,我缺少一個樣式表。由於我以前沒有使用過XML,所以我的問題是:如何簡單的XSLT(據我所知?)看起來像這樣,這將使我能夠在文件中的座標給出的位置查看XML文件的每個元素。幫助大大appriciated。

+0

這看起來很有可能,但起點是要決定你想要的對應於這個XML的HTML是什麼樣的。 (我認爲你有HTML的經驗,因爲沒有這些,或XML和XSLT,我擔心這個任務超出了你的範圍。) – Borodin

+0

@Borodin我的XML包含從PDF中獲取的元素,如果能夠顯示所有元素,我會很高興使用XML中的座標定位矩形的形式。我對HTML不是特別有經驗,但我可以想象編寫一個將XML元素轉換爲html的Python腳本。但是這可能會是一個單調乏味的任務:( – root

+0

什麼工具被用來進行提取?(好奇) –

回答

2

你的XML以上有錯誤,您關閉兩次,組塊被不正確地在XML文件中指定爲可選

有XSLT(樣式表)關閉,瀏覽器剛剛開始爲什麼他顯示原始xml,多數民衆贊成。 您可以在服務器端應用xsl樣式,並決定要應用的工作表,無需將其引用到xml文件中。 也可以在客戶端進行xslt翻譯,這將會更棘手,因爲瀏覽器不同的實現來實現這一點。

但是如果指定了樣式表的所有主流瀏覽器將轉換在客戶端(瀏覽器老不行),但即使IE6不

對XML文件中指定樣式表的鏈接看起來像:

<?xml-stylesheet type="text/xsl" href="so.xslt"?> 

樣式表可以關注一下:

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 

<xsl:output omit-xml-declaration="yes" method="html"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="Document"> 
    <html> 
    <head><title>Test</title></head> 
     <xsl:apply-templates/> 
    </html> 
</xsl:template> 

<xsl:template match="Page"> 
    <body> 
     <xsl:apply-templates/><hr/> 
     Page:<xsl:value-of select="@pageNumber"/> 
    </body> 
</xsl:template> 

<xsl:template match="Chunk"> 
    <xsl:value-of select="."/><br/> 
</xsl:template> 

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

</xsl:stylesheet> 

,但你可以看到你可以建立幾乎任何事情。

+0

xslt as xml不會承認那種錯誤,因爲在你的問題中,他們有非常嚴格的規則,如果如果你想討論的細節,你需要問一些更具體的問題,並顯示更多的代碼 –

-1

只需在您的html標記中添加xmlns =「http://www.w3.org/1999/xhtml」xml:lang =「en」lang =「en」。這對我有效。

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

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title></title> 
</head> 
<body> 

</body> 
</html> 
+2

我不認爲這回答了這個問題 - 我認爲他正在尋找通過使用樣式錶轉換(XSLT)生成一個HTML文檔,注意他/她的代碼片段是一個XML文檔,而不是HTML文檔,正如你的答案一樣。 XSLT轉換[文件]看起來像「。我不相信將xmlns屬性添加到原始XML文檔中的任何內容都會刪除該消息(儘管使用HTML文檔會),而且它不會完成XSL轉換。 – Kasapo

+1

不用擔心。歡迎來到SO:D我以前肯定做過同樣的事情。 只是另一個評論 - 如果有人贊成,你通常會失去聲譽......如果你同意它不是主題或改善答案,你可以通過刪除答案來避免這種情況。尼斯downvoters像我一樣會留下一個downvote評論,並會刪除downvotes如果答案得到改善。這有助於保持答案的相關性並減少數量並改善SO體驗。 – Kasapo