我想在html页面中的<head>
标记元素之间提取所有内容。包括链接标记和脚本标记。
假设下面的源代码是一个片段,它将是完整的html文档的一部分。
来源:
...
<head>
<link rel="stylesheet" href="style.css"
type="text/css" media="handheld" />
<link rel="stylesheet" href="style.css"
type="text/css" media="handheld" />
<script type="text/javascript" src="main.js"></script>
<script type="text/javascript" src="second.js"></script>
</head>
...
XSLT:
<xsl:output method="xml" encoding="utf-8" indent="no"/>
<xsl:template match="/">
<xsl:copy-of select="link"/>
</xsl:template>
如果我只想获得一个标签,这样可以正常工作。有没有办法可以处理所有内容,只处理“head”标签之间的所有内容。
我期望的输出是:
<link rel="stylesheet" href="style.css"
type="text/css" media="handheld" />
<link rel="stylesheet" href="style.css"
type="text/css" media="handheld" />
<script type="text/javascript" src="main.js"></script>
<script type="text/javascript" src="second.js"></script>
答案 0 :(得分:2)
您需要使用XSL 身份转换
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
以及阻止输出您不想要的所有内容的模板。
<xsl:template match="/">
<xsl:apply-templates select="html/head"/>
</xsl:template>
第二个模板更具体,将与根匹配,然后将样式表应用于<head>
标记的内容。身份变换将输出所需的标签。
答案 1 :(得分:0)
您需要使用'xsl:for-each'语句
<xsl:template match="/">
<xsl:for-each select="head/*">
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:template>
答案 2 :(得分:0)
我猜你可以使用<xsl:for-each>
元素来选择指定节点集的每个XML元素。
只需遍历head
标记内的所有元素,然后使用xsl-current()函数以这样的方式获取每个元素的值;
<xsl:value-of select="current()"/>