2011-01-05 72 views
2

我已經構建了一個XSL文件,該文件解析XML格式的日誌並生成一個包含日誌信息的HTML頁面。在這個相同的XSL文件中,我試圖使用XSL來拉入一個包含我想要顯示的表格的外部HTML文件。就目前而言,我可以顯示包含表格的整個頁面,但無法隔離表格。如何才能做到這一點?目前,我可以使用下面的代碼在整個頁面拉:使用XSL導入HTML表格

<xsl:copy-of select="document($tablePageUrl)" /> 

不過,我不知道如何遍歷HTML身體並拉出表的副本。的HTML文檔的格式的例子(該文件是正確的XML,但不正確的HTML):

<html> 
<head> 
</head> 
<body> 
<table> 
    Table Contents 
</table> 
</body> 
</html> 

回答

2

聽起來像是你要使用XPath選擇文檔中的特定元素。

試着這麼做:

<xsl:copy-of select="document($tablePageUrl)/html/body/table" /> 
+0

我曾嘗試使用XPath,但使用的語法不正確。謝謝你的澄清。 – XBigTK13X 2011-01-05 18:35:34

+5

沒問題。瞭解XPath對於使用XSLT至關重要。 – 2011-01-05 18:36:08

-1
<xsl:variable name="source-html" select="document('url')" /> 

<xsl:value-of select="$source-html//table" /> 
+0

我仍然無法使用此方法拉入表格。但是,當我使用: 正確導入整個HTML文檔。我找不到一種方法來引用除整個文檔之外的任何內容。 – XBigTK13X 2011-01-05 18:11:49

+0

1)你的html格式良好的xml? 2)當你使用時,你會得到什麼? – 2011-01-05 18:39:09

+0

我不認爲你可以使用//從根節點,它不需要在一個級別? – 2011-01-05 21:06:01

0

從評論:

使用XPath我曾試過,但使用 語法不正確

http://www.w3.org/TR/xpath/#node-sets

///運營商組成 表達式和相對位置 路徑。如果表達式 不計算爲節點集,則是錯誤的。所述 /操作者確實組合物在 相同的方式,當/以 位置路徑中使用

特別地,此語法爲:

document($tablePageUrl)/html/body/table 

繼製作:

PathExpr ::= FilterExpr '/' RelativeLocationPath 

FilterExpr ::= PrimaryExpr 

PrimaryExpr ::= FunctionCall 
0

檢查HTML是否在命名空間中。 (查找告訴xmlns =「....」)。您的示例不在命名空間中,而是來自體驗,如果人們沒有意識到名稱空間很重要,他們通常會在發佈示例時刪除名稱空間聲明。如果元素位於命名空間中,那麼XPath表達式需要使用前綴名稱來選擇它們。