用XSLT选择DIV标签?

时间:2011-06-22 08:13:53

标签: xslt xpath xhtml

我正在尝试从另一个XHTML文档创建一个新的XHTML文档。我只想在旧的XHTML文档中使用一些DIV标签,但我不确定我是否做得对。首先,如果我想选择ID = mbContent的特殊DIV标签,我可以使用

<xsl:template match="x:div[@id='mbContent']">

此DIV标记包含其他DIV和内容,如图像等。如果我想使用与内容相同的CSS样式,该怎么办?有没有办法复制CSS样式或我是否必须添加新的CSS样式,我该怎么做?由于新的XHTML文档将成为另一个XHTML的一部分,我无法使用HEAD标记并以这种方式引用CSS样式表。

嗯,但是如果我使用将在主XHTML documnet的HEAD中的CSS样式表,也许我可以将CSS样式应用于此DIV,或者?如何在新的XHTML文档中应用样式?

我有点困惑,但我希望我的问题不是混淆?! :)

嗨!我需要一些新的帮助,因为下面的代码对我不起作用。这是不起作用的     xmlns:x="http://www.w3.org/1999/xhtml" and "x:div[@id='mbContent']" 我认为这是因为我使用的CMS工具有一个代理模块,由于一些奇怪的原因不能接受这个代码。因此,我正在寻找一些替代解决方案来添加CLASS或ID,并使用此代替xsl:apply-templates select="//*[@id='mbSubMenu']"向DIV元素添加值,并使用副本,如下例所示?预备一些新的帮助!谢谢! :)

1 个答案:

答案 0 :(得分:1)

在XSLT文档中使用'x'作为xmlns之前,表达式中使用的Xpath很好。

模板将匹配<div>,前提是其ID为mbContent,所选的上下文将包含所有后代。

您可以更改元素的内联CSS。既然你说这个部分将在其他一些XHTML文档中。您可以选择XML作为输出。 如果您愿意,可以更改内联CSS。 您还可以为它们分配不同的类,以便自动获取全局样式。

我们的想法是,给定一个XML文档,您正在将其转换为另一个XML文档。 因此,您可以根据需要应用样式。

我希望能回答你的问题。

P.S。在XPath表达式中使用适当的xmlns。

我们假设以下是HTML文档。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <title></title>
</head>
<body>
    <div id="mbContent">
        <div>
            <span>Some complex structure</span>
        </div>    
    </div>
</body>

应用以下XSL

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:x="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="x">

<xsl:output method="xml" indent="yes"/>

<xsl:strip-space elements="*"/>

<xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="node()|@*" />
    </xsl:copy>
</xsl:template>

<xsl:template match="x:div[@id='mbContent']">
    <xsl:copy>
        <xsl:attribute name="class">
            <xsl:text>someNewStyle</xsl:text>
        </xsl:attribute>
        <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
</xsl:template>

这将产生以下输出。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <title/>
</head>
<body>
    <div class="someNewStyle" id="mbContent">
        <div>
            <span>Some complex structure</span>
        </div>
    </div>
</body>

您可以根据需要更改XSL。

此致

奸污。