Я хочу изменить конкретными тд к ю в XHTML файла, если класса следующего элемента является «ххм», а затем удалить эти элементы (с классом «ххх») , но предшествующее-родственный неправильно в шаблоне, так что я должен пропустить что-то:XSLT изменение названия элемент - предшествующий-родственный неправильно
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:x="http://www.w3.org/1999/xhtml">
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//x:tr[@class='xxx']/preceding-sibling::x:tr/td">
<th>
<xsl:apply-templates select="@* | node()"/>
</th>
</xsl:template>
<xsl:template match="//x:tr[@class='xxx']"/>
</xsl:stylesheet>
EDIT: образец документа:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" lang="cs-CZ" xml:lang="cs-CZ">
<head>
<title>test</title>
<meta charset="UTF-8"/>
<link rel="stylesheet" type="text/css" href="xxx.css"/>
</head>
<body>
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr class="xxx">
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
<tr>
<td>error row to remove if present</td>
</tr>
</table>
</body>
</html>
То, что я хочу, это первый ряд таблицы в й и удалить последнюю строку ошибки, если присутствует и сохранить HTML5 DOCTYPE:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" lang="cs-CZ" xml:lang="cs-CZ">
<head>
<title>test</title>
<meta charset="UTF-8"/>
<link rel="stylesheet" type="text/css" href="xxx.css"/>
</head>
<body>
<table>
<tr>
<th>1</th>
<th>2</th>
<th>3</th>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
</table>
</body>
</html>
я (с <xsl:template match="//x:tr[following-sibling::x:tr[1]/@class='xxx']/x:td">
, который в настоящее время действует в XSLT документа) :
<?xml version='1.0' encoding='UTF-8'?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" lang="cs-CZ" xml:lang="cs-CZ">
<head>
<title>test</title>
<meta charset="UTF-8"/>
<link rel="stylesheet" type="text/css" href="xxx.css"/>
</head>
<body>
<table>
<tr>
<th xmlns="" xmlns:x="http://www.w3.org/1999/xhtml">1</th>
<th xmlns="" xmlns:x="http://www.w3.org/1999/xhtml">2</th>
<th xmlns="" xmlns:x="http://www.w3.org/1999/xhtml">3</th>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
<tr>
<td>error row to remove if present</td>
</tr>
</table>
</body>
Так нет доктайп и в th ячейках есть пространства имен, которых там не было бы. Я не знаю, как удалить неправильную строку (она всегда должна быть последней строкой).
Как о проводке образца ввода и результат вы хотите, вместе с результатом вы получаете? –