Импортировать таблицу HTML, используя XSL - PullRequest
2 голосов
/ 05 января 2011

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

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

Однако я не понимаю, как пройти через тело HTML и извлечь копию таблицы. Пример форматирования документа HTML (документ представляет собой правильный XML, но не правильный HTML):

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

Ответы [ 4 ]

2 голосов
/ 05 января 2011

Звучит так, будто вы хотите использовать XPath для выбора определенного элемента в документе.

Попробуйте что-то вроде:

<xsl:copy-of select="document($tablePageUrl)/html/body/table" />
0 голосов
/ 06 января 2011

Проверьте, находится ли HTML в пространстве имен. (Ищите контрольную строку xmlns = "....".) Ваш образец находится не в пространстве имен, а по опыту, если люди не понимают, что пространства имен имеют значение, они часто удаляют объявление пространства имен при публикации примеров. Если элементы находятся в пространстве имен, то для выражения XPath необходимо использовать префиксные имена для их выбора.

0 голосов
/ 06 января 2011

Из комментариев:

Я пытался использовать XPath, но использовал неверный синтаксис

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

Операторы / и // составляют выражение и относительное местоположение дорожка. Это ошибка, если выражение не оценивает набор узлов. / оператор делает композицию в так же, как когда / используется в путь местоположения

В частности, этот синтаксис:

document($tablePageUrl)/html/body/table

После производства:

PathExpr    ::=   FilterExpr '/' RelativeLocationPath 

FilterExpr  ::=   PrimaryExpr 

PrimaryExpr ::=   FunctionCall  
0 голосов
/ 05 января 2011
<xsl:variable name="source-html" select="document('url')" />

<xsl:value-of select="$source-html//table" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...