提问人:Corinna 提问时间:10/26/2023 更新时间:10/27/2023 访问量:38
XSLT 匹配 xhtml 命名空间
XSLT matching xhtml namespace
问:
日安
我正在尝试使用此命令行将从 html 文件生成的 xhtml 文件中的“head”元素与 HTML 整洁标记校正器进行匹配:
tidy -asxml -output test_tidy.html --numeric-entities yes .\test.html
test_tidy.html包含以下 xmlns 命名空间:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
此 XSLT 模板匹配对我不起作用:
<xsl:template match="//head">
我错过了什么? 理想情况下,我想使用相同的样式表来处理带有或不带有 xmlns 命名空间声明的 XHTML 文件,例如处理此文件:
<!DOCTYPE html>
<html>
<head>
感激地收到任何帮助。
愿你安好!
答:
0赞
michael.hor257k
10/26/2023
#1
如果希望同一模板与两者中的元素匹配:head
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
和:
<html>
<head>
您必须制作模板:
<xsl:template match="x:head|head">
声明 .xmlns:x="http://www.w3.org/1999/xhtml
或者,您可以执行以下操作:
<xsl:template match="*[local-name()='head']">
或(在 XSLT 2.0 或更高版本中):
<xsl:template match="*:head">
但这通常不是好的做法,因为(至少在理论上)其他命名空间中可能存在您不想匹配的其他元素。head
评论
0赞
Corinna
10/27/2023
感谢您令人难以置信的全面回答,用这么短的文字提供如此多的信息!现在我完全清楚了。
评论