2011-01-05 2 views
2

Я построил файл XSL, который анализирует журнал в формате XML и генерирует HTML-страницу с информацией из журнала. В этом же XSL-файле я пытаюсь использовать XSL для вывода внешнего HTML-файла, который содержит таблицу, которую я хочу отобразить. Как бы то ни было, я могу отобразить всю страницу, содержащую таблицу, но не могу изолировать таблицу. Как это может быть сделано? В настоящее время, я могу тянуть всю страницу, используя следующий код:Импорт таблицы HTML с помощью XSL

<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

+5

Нет проблем.Понимание XPath имеет важное значение для использования XSLT. –

-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

Я не думаю, что вы можете использовать // из корневого узла, не нужно ли быть одним уровнем? –

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 должно использовать префиксные имена для их выбора.

Смежные вопросы