2011-01-05 7 views
2

XML形式のログを解析し、ログからの情報を含むHTMLページを生成するXSLファイルを作成しました。この同じXSLファイルで、XSLを使用して、表示したい表を含む外部HTMLファイルを取得しようとしています。その表を含むページ全体を表示することはできますが、表を分離することはできません。これはどうすればできますか?現在、私は次のコードを使用してページ全体に引くことができます。XSLを使用してHTMLテーブルをインポート

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

はしかし、私は、HTML本体を横断し、テーブルのコピーを引き出す方法を理解していません。 HTMLドキュメントのフォーマット方法の一例(文書が適切なXMLですが、適切ではないHTML):あなたは、文書内の特定の要素を選択するXPathを使用するように

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

答えて

2

が鳴ります。コメントから

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

XPathを使用しようとしましたが、誤った構文を使用していました。説明をありがとうございます。 – XBigTK13X

+5

問題ありません。XSLTを使用するには、XPathを理解することが不可欠です。 –

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

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

この方法ではまだテーブルを取得できません。しかし、私が使用する場合: HTML文書全体が正しくインポートされます。私は文書全体のほかに何かを参照する方法を見つけることができません。 – XBigTK13X

+0

1)あなたのhtml整形式のXMLですか? 2)を使用するとどうなりますか? –

+0

ルートノードから//を使用することはできませんが、1つのレベルにする必要はありませんか? –

0

のようなものを試してみてください

私は、XPathを使用してみましたが、http://www.w3.org/TR/xpath/#node-sets

から 正しくない構文

を使用していました

///の演算子は、 という式と相対的な位置が のパスで構成されています。式 がノード集合に評価されない場合はエラーです。製造後

document($tablePageUrl)/html/body/table 

/オペレータは/を ロケーションパス特に

、この構文で使用されるときと 同様に組成を行い

PathExpr ::= FilterExpr '/' RelativeLocationPath 

FilterExpr ::= PrimaryExpr 

PrimaryExpr ::= FunctionCall 
0

HTMLが名前空間にあるかどうかを確認します。あなたのサンプルは名前空間にはありませんが、経験から、人々が名前空間が重要であることを知らないと、サンプルを投稿するときに名前空間宣言が削除されることがよくあります。要素が名前空間にある場合、XPath式は接頭辞付きの名前を使用してそれらを選択する必要があります。

関連する問題