美好的一天,
我正在尝试使用以下命令行将 html 文件生成的 xhtml 文件中的“head”元素与 HTML tidy 标记校正器进行匹配:
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>
感谢您的帮助。
最美好的祝愿!
如果您希望相同的模板匹配两者中的
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
元素。